diff --git a/.classpath b/.classpath
index c729bcf8c..ed726fcca 100644
--- a/.classpath
+++ b/.classpath
@@ -6,6 +6,8 @@
+
+
diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml
index 534f50ec6..8418d09d8 100644
--- a/.github/workflows/ant.yml
+++ b/.github/workflows/ant.yml
@@ -10,10 +10,11 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Set up JDK 1.8
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v3
with:
- java-version: 1.8
+ distribution: 'temurin'
+ java-version: '8'
- name: Build with Ant
run: ant -noinput -buildfile build.xml
diff --git a/README.md b/README.md
index cd76010d9..7c3d15237 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,11 @@ A file browser and editor for the Infinity Engine. You can find out more in
the [Near Infinity Wiki](https://github.com/NearInfinityBrowser/NearInfinity/wiki), or download it directly from the
[Releases section](https://github.com/Argent77/NearInfinity/releases).
+**Discuss Near Infinity on:**
+- [GitHub Discussions](https://github.com/NearInfinityBrowser/NearInfinity/discussions)
+- [Beamdog Forums](https://forums.beamdog.com/discussion/30593/new-versions-of-nearinfinity-available/)
+- [Spellhold Studios Forums](http://www.shsforums.net/topic/45358-nearinfinity/)
+
## How to build Near Infinity
**Required tools:**
diff --git a/build.xml b/build.xml
index 46070af65..d9c4e8008 100644
--- a/build.xml
+++ b/build.xml
@@ -10,6 +10,8 @@
+
+
@@ -27,7 +29,7 @@
deprecation="false"
debug="false"
debuglevel="lines,vars,source"
- classpath="${classpath}:${jorbis.file}:${rsyntaxtextarea.file}:${jhexview.file}:${montemedia.file}:${apng_writer.file}">
+ classpath="${classpath}:${jorbis.file}:${rsyntaxtextarea.file}:${jhexview.file}:${montemedia.file}:${apng_writer.file}:${json.file}:${commonmark.file}">
@@ -51,6 +53,8 @@
+
+
diff --git a/lib/commonmark/LICENSE.txt b/lib/commonmark/LICENSE.txt
new file mode 100644
index 000000000..b09e367ce
--- /dev/null
+++ b/lib/commonmark/LICENSE.txt
@@ -0,0 +1,23 @@
+Copyright (c) 2015, Atlassian Pty Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/lib/commonmark/commonmark-0.21.0.jar b/lib/commonmark/commonmark-0.21.0.jar
new file mode 100644
index 000000000..eec09e4a8
Binary files /dev/null and b/lib/commonmark/commonmark-0.21.0.jar differ
diff --git a/lib/commonmark/commonmark-java-commonmark-parent-0.21.0.zip b/lib/commonmark/commonmark-java-commonmark-parent-0.21.0.zip
new file mode 100644
index 000000000..2e9da02e0
Binary files /dev/null and b/lib/commonmark/commonmark-java-commonmark-parent-0.21.0.zip differ
diff --git a/lib/json/JSON-java-20230227.zip b/lib/json/JSON-java-20230227.zip
new file mode 100644
index 000000000..2426168de
Binary files /dev/null and b/lib/json/JSON-java-20230227.zip differ
diff --git a/lib/json/json-20230227.jar b/lib/json/json-20230227.jar
new file mode 100644
index 000000000..abdb16b76
Binary files /dev/null and b/lib/json/json-20230227.jar differ
diff --git a/src/org/infinity/NearInfinity.java b/src/org/infinity/NearInfinity.java
index dd969799a..48a1ed628 100644
--- a/src/org/infinity/NearInfinity.java
+++ b/src/org/infinity/NearInfinity.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity;
@@ -8,7 +8,6 @@
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
-import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Font;
@@ -118,6 +117,7 @@
import org.infinity.util.FileDeletionHook;
import org.infinity.util.IdsMapCache;
import org.infinity.util.IniMapCache;
+import org.infinity.util.LauncherUtils;
import org.infinity.util.Misc;
import org.infinity.util.Platform;
import org.infinity.util.StringTable;
@@ -231,13 +231,15 @@ public static void printHelp(String jarFile) {
}
System.out.format("Usage: java -jar %s [options] [game_path]", jarFile).println();
System.out.println("\nOptions:");
- System.out.println(" -v, -version Display version information.");
- System.out.println(" -h, -help Display this help.");
- System.out.println(" -t type Force the current or specified game to be of");
- System.out.println(" specific type. (Use with care!)");
- System.out.println(" Supported game types:");
+ System.out.println(" -v, -version Display version information.");
+ System.out.println(" -h, -help Display this help.");
+ System.out.println(" -no-update Disables the update check option in the menu bar.");
+ System.out.println(" -no-launch-game Hides the \"Launch game\" button.");
+ System.out.println(" -t type Force the current or specified game to be of");
+ System.out.println(" specific type. (Use with care!)");
+ System.out.println(" Supported game types:");
for (final Profile.Game game : Profile.Game.values()) {
- System.out.println(" " + game.toString());
+ System.out.println(" " + game.toString());
}
System.out.println("\nExamples:");
System.out.format("Specify game path: java -jar %s \"C:\\Games\\Baldurs Gate II\"", jarFile).println();
@@ -257,38 +259,54 @@ public static void advanceProgress(String note) {
public static void main(String args[]) {
Profile.Game forcedGame = null;
Path gameOverride = null;
+ boolean enableUpdate = true;
+ boolean showLaunchGame = true;
for (int idx = 0; idx < args.length; idx++) {
- if (args[idx].equalsIgnoreCase("-v") || args[idx].equalsIgnoreCase("-version")) {
- System.out.println("Near Infinity " + getVersion());
- System.exit(0);
- } else if (args[idx].equalsIgnoreCase("-h") || args[idx].equalsIgnoreCase("-help")) {
- String jarFile = Utils.getJarFileName(NearInfinity.class);
- if (!jarFile.isEmpty()) {
- jarFile = FileManager.resolve(jarFile).getFileName().toString();
- }
- printHelp(jarFile);
- System.exit(0);
- } else if (args[idx].equalsIgnoreCase("-t") && idx + 1 < args.length) {
- idx++;
- String type = args[idx];
- Profile.Game[] games = Profile.Game.values();
- for (final Profile.Game game : games) {
- if (game.toString().equalsIgnoreCase(type)) {
- forcedGame = game;
- break;
+ switch (args[idx].toLowerCase(Locale.ENGLISH)) {
+ case "-v":
+ case "-version":
+ System.out.println("Near Infinity " + getVersion());
+ System.exit(0);
+ case "-h":
+ case "-help":
+ String jarFile = Utils.getJarFileName(NearInfinity.class);
+ if (!jarFile.isEmpty()) {
+ jarFile = FileManager.resolve(jarFile).getFileName().toString();
}
- }
- } else {
- // Override game folder via application parameter
- Path f = FileManager.resolve(args[idx]);
- if (FileEx.create(f).isFile()) {
- f = f.getParent();
- }
- if (FileEx.create(f).isDirectory()) {
- gameOverride = f;
+ printHelp(jarFile);
+ System.exit(0);
+ case "-no-update":
+ enableUpdate = false;
break;
- }
+ case "-no-launch-game":
+ showLaunchGame = false;
+ break;
+ case "-t":
+ if (idx + 1 < args.length) {
+ idx++;
+ String type = args[idx];
+ Profile.Game[] games = Profile.Game.values();
+ for (final Profile.Game game : games) {
+ if (game.toString().equalsIgnoreCase(type)) {
+ forcedGame = game;
+ break;
+ }
+ }
+ break;
+ } else {
+ System.err.println("Missing argument for option '-t'.");
+ System.exit(1);
+ }
+ default:
+ // Override game folder via application parameter
+ Path f = FileManager.resolve(args[idx]);
+ if (FileEx.create(f).isFile()) {
+ f = f.getParent();
+ }
+ if (FileEx.create(f).isDirectory()) {
+ gameOverride = f;
+ }
}
}
@@ -310,10 +328,11 @@ public static void main(String args[]) {
System.setOut(new ConsoleStream(System.out, CONSOLE_TEXT));
System.setErr(new ConsoleStream(System.err, CONSOLE_TEXT));
- new NearInfinity(gameOverride, forcedGame);
+ final Options options = new Options(gameOverride, forcedGame, enableUpdate, showLaunchGame);
+ new NearInfinity(options);
}
- private NearInfinity(Path gameOverride, Profile.Game forcedGame) {
+ private NearInfinity(Options options) {
super("Near Infinity");
browser = this;
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
@@ -338,13 +357,14 @@ private NearInfinity(Path gameOverride, Profile.Game forcedGame) {
resizeUIFont(globalFontSize);
final BrowserMenuBar menu = new BrowserMenuBar();
+ menu.setUpdateMenuEnabled(options.isUpdateEnabled());
// Registers menu as key event dispatcher to intercept Ctrl+Shift+D from any window
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(menu);
setJMenuBar(menu);
final String lastDir;
- if (gameOverride != null && FileEx.create(gameOverride).isDirectory()) {
- lastDir = gameOverride.toString();
+ if (options.isGameOverride() && FileEx.create(options.getGameOverride()).isDirectory()) {
+ lastDir = options.getGameOverride().toString();
} else {
lastDir = prefs.get(LAST_GAMEDIR, null);
}
@@ -366,7 +386,7 @@ private NearInfinity(Path gameOverride, Profile.Game forcedGame) {
SwingWorker worker = new SwingWorker() {
@Override
protected Void doInBackground() throws Exception {
- Profile.openGame(keyFile, BrowserMenuBar.getInstance().getBookmarkName(keyFile), forcedGame);
+ Profile.openGame(keyFile, BrowserMenuBar.getInstance().getBookmarkName(keyFile), options.getForcedGame());
// making sure vital game resources are accessible
Path tlkFile = Profile.getProperty(Profile.Key.GET_GAME_DIALOG_FILE);
@@ -494,6 +514,7 @@ public void popupWindowWillBecomeInvisible(PopupWindowEvent event) {
btnLaunchGame.setMargin(new Insets(0, 0, 0, 0));
btnLaunchGame.setToolTipText("Launch game");
btnLaunchGame.addActionListener(this);
+ btnLaunchGame.setVisible(options.isLaunchGameVisible());
toolBar.add(btnLaunchGame);
launchMenu = new JPopupMenu();
@@ -537,16 +558,22 @@ public void popupWindowWillBecomeInvisible(PopupWindowEvent event) {
new DropTarget(getRootPane(), new FileDropTargetListener());
// Checking for updates
- if (Updater.getInstance().isAutoUpdateCheckEnabled() && Updater.getInstance().hasAutoUpdateCheckDateExpired()) {
+ if (options.isUpdateEnabled() &&
+ Updater.getInstance().isAutoUpdateCheckEnabled() &&
+ Updater.getInstance().hasAutoUpdateCheckDateExpired()) {
// storing last check date for future reference
Updater.getInstance().setAutoUpdateCheckDate(null);
// running check in background with as little as possible interference with user interactions
new Thread(() -> {
- UpdateInfo info = Updater.getInstance().loadUpdateInfo();
- if (info != null) {
- if (Updater.isNewRelease(info.getRelease(), true)) {
- UpdateCheck.showDialog(NearInfinity.getInstance(), info);
+ try {
+ UpdateInfo info = Updater.getInstance().loadUpdateInfo();
+ if (info != null) {
+ if (Updater.isNewRelease(info.getRelease(), true)) {
+ UpdateCheck.showDialog(NearInfinity.getInstance(), info);
+ }
}
+ } catch (Exception e) {
+ System.out.println("Failed to check for updates: " + e.getMessage());
}
}).start();
}
@@ -1122,8 +1149,13 @@ private void storePreferences() {
private void setAppIcon() {
List list = new ArrayList<>();
- for (int i = 4; i < 8; i++) {
- list.add(Icons.getImage(null, String.format("App%d.png", 1 << i)));
+ for (int i = 4; true; i++) {
+ final Image icon = Icons.getImage(null, String.format("App%d.png", 1 << i));
+ if (icon != null) {
+ list.add(icon);
+ } else {
+ break;
+ }
}
setIconImages(list);
}
@@ -1218,7 +1250,7 @@ private boolean launchGameBinary(Path binPath) {
try {
if (Platform.IS_MACOS && binPath.toString().toLowerCase(Locale.ENGLISH).endsWith(".app")) {
// This method may be required for launching Mac App Bundles
- Desktop.getDesktop().open(binPath.toFile());
+ LauncherUtils.open(binPath);
} else {
ProcessBuilder pb = new ProcessBuilder(binPath.toString());
pb.directory(binPath.getParent().toFile());
@@ -1329,6 +1361,45 @@ private JPanel createJavaInfoPanel() {
// -------------------------- INNER CLASSES --------------------------
+ private static final class Options {
+ private final Path gameOverride;
+ private final Profile.Game forcedGame;
+ private final boolean enableUpdate;
+ private final boolean showLaunchGame;
+
+ public Options(Path gameOverride, Profile.Game forcedGame, boolean enableUpdate, boolean showLaunchGame) {
+ this.gameOverride = gameOverride;
+ this.forcedGame = forcedGame;
+ this.enableUpdate = enableUpdate;
+ this.showLaunchGame = showLaunchGame;
+ }
+
+ public boolean isGameOverride() {
+ return gameOverride != null;
+ }
+
+ public Path getGameOverride() {
+ return gameOverride;
+ }
+
+ @SuppressWarnings("unused")
+ public boolean isForcedGame() {
+ return forcedGame != null;
+ }
+
+ public Profile.Game getForcedGame() {
+ return forcedGame;
+ }
+
+ public boolean isUpdateEnabled() {
+ return enableUpdate;
+ }
+
+ public boolean isLaunchGameVisible() {
+ return showLaunchGame;
+ }
+ }
+
private static final class ConsoleStream extends PrintStream {
private final JTextArea text;
diff --git a/src/org/infinity/check/AbstractChecker.java b/src/org/infinity/check/AbstractChecker.java
index 6f11f15f3..c7ce88194 100644
--- a/src/org/infinity/check/AbstractChecker.java
+++ b/src/org/infinity/check/AbstractChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/BCSIDSChecker.java b/src/org/infinity/check/BCSIDSChecker.java
index 0697e6dfe..a8164389b 100644
--- a/src/org/infinity/check/BCSIDSChecker.java
+++ b/src/org/infinity/check/BCSIDSChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/CreInvChecker.java b/src/org/infinity/check/CreInvChecker.java
index c95f18595..9c7eb2c93 100644
--- a/src/org/infinity/check/CreInvChecker.java
+++ b/src/org/infinity/check/CreInvChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/DialogChecker.java b/src/org/infinity/check/DialogChecker.java
index 2d7c85bfe..55ab3ba4e 100644
--- a/src/org/infinity/check/DialogChecker.java
+++ b/src/org/infinity/check/DialogChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/EffectsIndexChecker.java b/src/org/infinity/check/EffectsIndexChecker.java
index 790ee8b34..e7dfc793d 100644
--- a/src/org/infinity/check/EffectsIndexChecker.java
+++ b/src/org/infinity/check/EffectsIndexChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/IDSRefChecker.java b/src/org/infinity/check/IDSRefChecker.java
index 168827f60..2759e8134 100644
--- a/src/org/infinity/check/IDSRefChecker.java
+++ b/src/org/infinity/check/IDSRefChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/ResRefChecker.java b/src/org/infinity/check/ResRefChecker.java
index 3bcb0c8bf..0c460ef3e 100644
--- a/src/org/infinity/check/ResRefChecker.java
+++ b/src/org/infinity/check/ResRefChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/ResourceUseChecker.java b/src/org/infinity/check/ResourceUseChecker.java
index cc75c2fba..15cf9c772 100644
--- a/src/org/infinity/check/ResourceUseChecker.java
+++ b/src/org/infinity/check/ResourceUseChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/ScriptChecker.java b/src/org/infinity/check/ScriptChecker.java
index 267928aae..6cfb9e23a 100644
--- a/src/org/infinity/check/ScriptChecker.java
+++ b/src/org/infinity/check/ScriptChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/StringDuplicatesChecker.java b/src/org/infinity/check/StringDuplicatesChecker.java
index 64148a27b..a06001fc8 100644
--- a/src/org/infinity/check/StringDuplicatesChecker.java
+++ b/src/org/infinity/check/StringDuplicatesChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/StringSoundsChecker.java b/src/org/infinity/check/StringSoundsChecker.java
index f4ea71883..ea1fa2167 100644
--- a/src/org/infinity/check/StringSoundsChecker.java
+++ b/src/org/infinity/check/StringSoundsChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/StringUseChecker.java b/src/org/infinity/check/StringUseChecker.java
index d56100291..cc26166f1 100644
--- a/src/org/infinity/check/StringUseChecker.java
+++ b/src/org/infinity/check/StringUseChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/StringValidationChecker.java b/src/org/infinity/check/StringValidationChecker.java
index 7aefca1c5..3061f8d17 100644
--- a/src/org/infinity/check/StringValidationChecker.java
+++ b/src/org/infinity/check/StringValidationChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/StrrefIndexChecker.java b/src/org/infinity/check/StrrefIndexChecker.java
index 56070f475..3d5d7532f 100644
--- a/src/org/infinity/check/StrrefIndexChecker.java
+++ b/src/org/infinity/check/StrrefIndexChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/check/StructChecker.java b/src/org/infinity/check/StructChecker.java
index 14f83e644..451a3e0d7 100644
--- a/src/org/infinity/check/StructChecker.java
+++ b/src/org/infinity/check/StructChecker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.check;
diff --git a/src/org/infinity/commonmark.License.txt b/src/org/infinity/commonmark.License.txt
new file mode 100644
index 000000000..b09e367ce
--- /dev/null
+++ b/src/org/infinity/commonmark.License.txt
@@ -0,0 +1,23 @@
+Copyright (c) 2015, Atlassian Pty Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/org/infinity/datatype/AbstractBitmap.java b/src/org/infinity/datatype/AbstractBitmap.java
index 092a2ab93..c0b92d7da 100644
--- a/src/org/infinity/datatype/AbstractBitmap.java
+++ b/src/org/infinity/datatype/AbstractBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/AnimateBitmap.java b/src/org/infinity/datatype/AnimateBitmap.java
index dad0f73a9..4b83b9dbc 100644
--- a/src/org/infinity/datatype/AnimateBitmap.java
+++ b/src/org/infinity/datatype/AnimateBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/AreResourceRef.java b/src/org/infinity/datatype/AreResourceRef.java
index fc9d803fc..f2dd49478 100644
--- a/src/org/infinity/datatype/AreResourceRef.java
+++ b/src/org/infinity/datatype/AreResourceRef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Bestiary.java b/src/org/infinity/datatype/Bestiary.java
index f3ecc6a44..75fbc89aa 100644
--- a/src/org/infinity/datatype/Bestiary.java
+++ b/src/org/infinity/datatype/Bestiary.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Bitmap.java b/src/org/infinity/datatype/Bitmap.java
index f400a991f..21dd4e738 100644
--- a/src/org/infinity/datatype/Bitmap.java
+++ b/src/org/infinity/datatype/Bitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/ColorPicker.java b/src/org/infinity/datatype/ColorPicker.java
index 1f36a8b86..de9ec9a39 100644
--- a/src/org/infinity/datatype/ColorPicker.java
+++ b/src/org/infinity/datatype/ColorPicker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/ColorValue.java b/src/org/infinity/datatype/ColorValue.java
index a01ca0d75..31fdcb377 100644
--- a/src/org/infinity/datatype/ColorValue.java
+++ b/src/org/infinity/datatype/ColorValue.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Datatype.java b/src/org/infinity/datatype/Datatype.java
index f648a332f..f37d35e03 100644
--- a/src/org/infinity/datatype/Datatype.java
+++ b/src/org/infinity/datatype/Datatype.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/DecNumber.java b/src/org/infinity/datatype/DecNumber.java
index ce126f912..9bb9d38e9 100644
--- a/src/org/infinity/datatype/DecNumber.java
+++ b/src/org/infinity/datatype/DecNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Editable.java b/src/org/infinity/datatype/Editable.java
index e42b95b42..860d799c0 100644
--- a/src/org/infinity/datatype/Editable.java
+++ b/src/org/infinity/datatype/Editable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/EffectType.java b/src/org/infinity/datatype/EffectType.java
index 879d96c4d..89f5e4795 100644
--- a/src/org/infinity/datatype/EffectType.java
+++ b/src/org/infinity/datatype/EffectType.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Flag.java b/src/org/infinity/datatype/Flag.java
index 7f820add6..e116982e3 100644
--- a/src/org/infinity/datatype/Flag.java
+++ b/src/org/infinity/datatype/Flag.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/FloatNumber.java b/src/org/infinity/datatype/FloatNumber.java
index fa62be9c2..0514391c4 100644
--- a/src/org/infinity/datatype/FloatNumber.java
+++ b/src/org/infinity/datatype/FloatNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/HashBitmap.java b/src/org/infinity/datatype/HashBitmap.java
index 7dcb734e9..6d99e2c72 100644
--- a/src/org/infinity/datatype/HashBitmap.java
+++ b/src/org/infinity/datatype/HashBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/HexNumber.java b/src/org/infinity/datatype/HexNumber.java
index a6cf8980e..4fa09c440 100644
--- a/src/org/infinity/datatype/HexNumber.java
+++ b/src/org/infinity/datatype/HexNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IdsBitmap.java b/src/org/infinity/datatype/IdsBitmap.java
index 4436e0a62..786aaaf50 100644
--- a/src/org/infinity/datatype/IdsBitmap.java
+++ b/src/org/infinity/datatype/IdsBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IdsFlag.java b/src/org/infinity/datatype/IdsFlag.java
index 438e45727..b823a02ba 100644
--- a/src/org/infinity/datatype/IdsFlag.java
+++ b/src/org/infinity/datatype/IdsFlag.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IdsTargetType.java b/src/org/infinity/datatype/IdsTargetType.java
index d03d7c7cd..620922be6 100644
--- a/src/org/infinity/datatype/IdsTargetType.java
+++ b/src/org/infinity/datatype/IdsTargetType.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/InlineEditable.java b/src/org/infinity/datatype/InlineEditable.java
index 64e1d5722..02518abad 100644
--- a/src/org/infinity/datatype/InlineEditable.java
+++ b/src/org/infinity/datatype/InlineEditable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IsBinary.java b/src/org/infinity/datatype/IsBinary.java
index 188f95b07..7449a06c7 100644
--- a/src/org/infinity/datatype/IsBinary.java
+++ b/src/org/infinity/datatype/IsBinary.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IsNumeric.java b/src/org/infinity/datatype/IsNumeric.java
index 4378c8929..50de3f5f2 100644
--- a/src/org/infinity/datatype/IsNumeric.java
+++ b/src/org/infinity/datatype/IsNumeric.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IsReference.java b/src/org/infinity/datatype/IsReference.java
index 785765fa1..12a6231fc 100644
--- a/src/org/infinity/datatype/IsReference.java
+++ b/src/org/infinity/datatype/IsReference.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IsTextual.java b/src/org/infinity/datatype/IsTextual.java
index e81db1b04..1b3d1256b 100644
--- a/src/org/infinity/datatype/IsTextual.java
+++ b/src/org/infinity/datatype/IsTextual.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/IwdRef.java b/src/org/infinity/datatype/IwdRef.java
index e27131687..f6e98c92f 100644
--- a/src/org/infinity/datatype/IwdRef.java
+++ b/src/org/infinity/datatype/IwdRef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/KitIdsBitmap.java b/src/org/infinity/datatype/KitIdsBitmap.java
index a6440ef22..def232b4b 100644
--- a/src/org/infinity/datatype/KitIdsBitmap.java
+++ b/src/org/infinity/datatype/KitIdsBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/MultiNumber.java b/src/org/infinity/datatype/MultiNumber.java
index 81ced6c83..ca5aa0bd0 100644
--- a/src/org/infinity/datatype/MultiNumber.java
+++ b/src/org/infinity/datatype/MultiNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/PriTypeBitmap.java b/src/org/infinity/datatype/PriTypeBitmap.java
index 90cce1c77..0637c4d97 100644
--- a/src/org/infinity/datatype/PriTypeBitmap.java
+++ b/src/org/infinity/datatype/PriTypeBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/ProRef.java b/src/org/infinity/datatype/ProRef.java
index 186716774..de7549b69 100644
--- a/src/org/infinity/datatype/ProRef.java
+++ b/src/org/infinity/datatype/ProRef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Readable.java b/src/org/infinity/datatype/Readable.java
index c61295f2b..c25b62aea 100644
--- a/src/org/infinity/datatype/Readable.java
+++ b/src/org/infinity/datatype/Readable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/RemovableDecNumber.java b/src/org/infinity/datatype/RemovableDecNumber.java
index 9af81f8ee..221d17d30 100644
--- a/src/org/infinity/datatype/RemovableDecNumber.java
+++ b/src/org/infinity/datatype/RemovableDecNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/ResourceBitmap.java b/src/org/infinity/datatype/ResourceBitmap.java
index ef60f4c53..249ffdc25 100644
--- a/src/org/infinity/datatype/ResourceBitmap.java
+++ b/src/org/infinity/datatype/ResourceBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/ResourceRef.java b/src/org/infinity/datatype/ResourceRef.java
index a67328280..39117d2b1 100644
--- a/src/org/infinity/datatype/ResourceRef.java
+++ b/src/org/infinity/datatype/ResourceRef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/SecTypeBitmap.java b/src/org/infinity/datatype/SecTypeBitmap.java
index 64e7ea8d7..b0cd1faee 100644
--- a/src/org/infinity/datatype/SecTypeBitmap.java
+++ b/src/org/infinity/datatype/SecTypeBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/SectionCount.java b/src/org/infinity/datatype/SectionCount.java
index 7caeedbce..8e1bec3b1 100644
--- a/src/org/infinity/datatype/SectionCount.java
+++ b/src/org/infinity/datatype/SectionCount.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/SectionOffset.java b/src/org/infinity/datatype/SectionOffset.java
index 8605041a1..f962b19af 100644
--- a/src/org/infinity/datatype/SectionOffset.java
+++ b/src/org/infinity/datatype/SectionOffset.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Song2daBitmap.java b/src/org/infinity/datatype/Song2daBitmap.java
index 5feec810b..a2f7441c8 100644
--- a/src/org/infinity/datatype/Song2daBitmap.java
+++ b/src/org/infinity/datatype/Song2daBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/SpawnResourceRef.java b/src/org/infinity/datatype/SpawnResourceRef.java
index b29b1ea7e..0207b91ce 100644
--- a/src/org/infinity/datatype/SpawnResourceRef.java
+++ b/src/org/infinity/datatype/SpawnResourceRef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/SpellProtType.java b/src/org/infinity/datatype/SpellProtType.java
index ed93a67cd..a0e1bbe71 100644
--- a/src/org/infinity/datatype/SpellProtType.java
+++ b/src/org/infinity/datatype/SpellProtType.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/StringRef.java b/src/org/infinity/datatype/StringRef.java
index a8f65b0e8..b6f48cc99 100644
--- a/src/org/infinity/datatype/StringRef.java
+++ b/src/org/infinity/datatype/StringRef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/Summon2daBitmap.java b/src/org/infinity/datatype/Summon2daBitmap.java
index b33144b13..a8a35c576 100644
--- a/src/org/infinity/datatype/Summon2daBitmap.java
+++ b/src/org/infinity/datatype/Summon2daBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/TableBitmap.java b/src/org/infinity/datatype/TableBitmap.java
index 6e97ba8ad..c14506b0f 100644
--- a/src/org/infinity/datatype/TableBitmap.java
+++ b/src/org/infinity/datatype/TableBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/TextBitmap.java b/src/org/infinity/datatype/TextBitmap.java
index 0e8e7f80f..3426ec9a6 100644
--- a/src/org/infinity/datatype/TextBitmap.java
+++ b/src/org/infinity/datatype/TextBitmap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 202 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/TextEdit.java b/src/org/infinity/datatype/TextEdit.java
index c52f02592..b4e21edf4 100644
--- a/src/org/infinity/datatype/TextEdit.java
+++ b/src/org/infinity/datatype/TextEdit.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/TextString.java b/src/org/infinity/datatype/TextString.java
index a5b5f6e14..ab563b135 100644
--- a/src/org/infinity/datatype/TextString.java
+++ b/src/org/infinity/datatype/TextString.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
@@ -35,7 +35,7 @@ public final class TextString extends Datatype implements InlineEditable, IsText
public TextString(ByteBuffer buffer, int offset, int length, String name) {
super(offset, length, name);
this.buffer = StreamUtils.getByteBuffer(length);
- this.charset = Charset.forName(BrowserMenuBar.getInstance().getSelectedCharset());
+ this.charset = Misc.getCharsetFrom(BrowserMenuBar.getInstance().getSelectedCharset());
read(buffer, offset);
}
diff --git a/src/org/infinity/datatype/Unknown.java b/src/org/infinity/datatype/Unknown.java
index 6af7ea095..d776fbb01 100644
--- a/src/org/infinity/datatype/Unknown.java
+++ b/src/org/infinity/datatype/Unknown.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/UnknownBinary.java b/src/org/infinity/datatype/UnknownBinary.java
index 512f9e8e1..779fa831d 100644
--- a/src/org/infinity/datatype/UnknownBinary.java
+++ b/src/org/infinity/datatype/UnknownBinary.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/UnknownDecimal.java b/src/org/infinity/datatype/UnknownDecimal.java
index f5b946dd3..21fc2c810 100644
--- a/src/org/infinity/datatype/UnknownDecimal.java
+++ b/src/org/infinity/datatype/UnknownDecimal.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/UnsignDecNumber.java b/src/org/infinity/datatype/UnsignDecNumber.java
index e1833a802..86ec02b87 100644
--- a/src/org/infinity/datatype/UnsignDecNumber.java
+++ b/src/org/infinity/datatype/UnsignDecNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/UpdateEvent.java b/src/org/infinity/datatype/UpdateEvent.java
index 0d7e390b0..3b2c1582d 100644
--- a/src/org/infinity/datatype/UpdateEvent.java
+++ b/src/org/infinity/datatype/UpdateEvent.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/datatype/UpdateListener.java b/src/org/infinity/datatype/UpdateListener.java
index 3675e6ca0..10feee90d 100644
--- a/src/org/infinity/datatype/UpdateListener.java
+++ b/src/org/infinity/datatype/UpdateListener.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.datatype;
diff --git a/src/org/infinity/gui/BIFFEditor.java b/src/org/infinity/gui/BIFFEditor.java
index 4a8bdc2cc..4907afd66 100644
--- a/src/org/infinity/gui/BIFFEditor.java
+++ b/src/org/infinity/gui/BIFFEditor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/BIFFEditorTable.java b/src/org/infinity/gui/BIFFEditorTable.java
index 178cab593..83e7c0a64 100644
--- a/src/org/infinity/gui/BIFFEditorTable.java
+++ b/src/org/infinity/gui/BIFFEditorTable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/BcsDropFrame.java b/src/org/infinity/gui/BcsDropFrame.java
index 6b5e0ff2c..ddc62d468 100644
--- a/src/org/infinity/gui/BcsDropFrame.java
+++ b/src/org/infinity/gui/BcsDropFrame.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/BookmarkEditor.java b/src/org/infinity/gui/BookmarkEditor.java
index 82ff01008..26553c5eb 100644
--- a/src/org/infinity/gui/BookmarkEditor.java
+++ b/src/org/infinity/gui/BookmarkEditor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/BrowserMenuBar.java b/src/org/infinity/gui/BrowserMenuBar.java
index 0dd367803..7a50cbc8c 100644
--- a/src/org/infinity/gui/BrowserMenuBar.java
+++ b/src/org/infinity/gui/BrowserMenuBar.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
@@ -117,7 +117,7 @@
import org.infinity.util.tuples.Couple;
public final class BrowserMenuBar extends JMenuBar implements KeyEventDispatcher {
- public static final String VERSION = "v2.3-20230303";
+ public static final String VERSION = "v2.3-20230609";
public static final LookAndFeelInfo DEFAULT_LOOKFEEL =
new LookAndFeelInfo("Metal", "javax.swing.plaf.metal.MetalLookAndFeel");
@@ -271,6 +271,16 @@ public BrowserMenuBar() {
add(helpMenu);
}
+ /** Returns whether menu entries for updating Near Infinity are available. */
+ public boolean isUpdateMenuEnabled() {
+ return helpMenu.isUpdateMenuEnabled();
+ }
+
+ /** Specifies the enabled state of the Near Infinity update check and settings. */
+ public void setUpdateMenuEnabled(boolean enable) {
+ helpMenu.setUpdateMenuEnabled(enable);
+ }
+
/**
* Returns whether menu item "Tools > Print debug info" is shown.
*/
@@ -306,6 +316,11 @@ public void setShowOpenBookmarksPrompt(boolean show) {
optionsMenu.optionOpenBookmarksPrompt.setSelected(show);
}
+ /** Returns whether the size and position of the last opened child frame should be reused for new child frames. */
+ public boolean rememberChildFrameRect() {
+ return optionsMenu.optionRememberChildFrameRect.isSelected();
+ }
+
/** Returns whether scripts are automatically scanned for compile errors. */
public boolean autocheckBCS() {
return optionsMenu.optionAutocheckBCS.isSelected();
@@ -1874,6 +1889,7 @@ private static final class OptionsMenu extends JMenu implements ActionListener,
private static final String OPTION_SHOWHEXCOLORED = "ShowHexColored";
private static final String OPTION_SHOWSYSINFO = "ShowSysInfo";
private static final String OPTION_OPENBOOKMARKSPROMPT = "OpenBookmarksPrompt";
+ private static final String OPTION_REMEMBER_CHILDFRAME_RECT = "RememberChildFrameRect";
private static final String OPTION_KEEPVIEWONCOPY = "UpdateTreeOnCopy";
private static final String OPTION_SHOWTREESEARCHNAMES = "ShowTreeSearchNames";
private static final String OPTION_HIGHLIGHT_OVERRIDDEN = "HighlightOverridden";
@@ -1970,6 +1986,7 @@ private static final class OptionsMenu extends JMenu implements ActionListener,
private JCheckBoxMenuItem optionShowHexColored;
private JCheckBoxMenuItem optionShowSystemInfo;
private JCheckBoxMenuItem optionOpenBookmarksPrompt;
+ private JCheckBoxMenuItem optionRememberChildFrameRect;
private JCheckBoxMenuItem optionShowUnknownResources;
private JCheckBoxMenuItem optionKeepViewOnCopy;
private JCheckBoxMenuItem optionTreeSearchNames;
@@ -2089,6 +2106,12 @@ private OptionsMenu() {
optionOpenBookmarksPrompt = new JCheckBoxMenuItem("Confirm opening bookmarked games",
getPrefs().getBoolean(OPTION_OPENBOOKMARKSPROMPT, true));
add(optionOpenBookmarksPrompt);
+ optionRememberChildFrameRect = new JCheckBoxMenuItem("Remember last child frame size and position",
+ getPrefs().getBoolean(OPTION_REMEMBER_CHILDFRAME_RECT, false));
+ optionRememberChildFrameRect.setToolTipText(
+ "With this option enabled, placement of the last opened child window will be reused for new child windows. "
+ + "This information will only be valid for the current Near Infinity session.");
+ add(optionRememberChildFrameRect);
addSeparator();
@@ -2411,7 +2434,7 @@ private OptionsMenu() {
try {
// L&F description is only available from class instance
Class> cls = Class.forName(element.getClassName());
- Object o = cls.newInstance();
+ Object o = cls.getDeclaredConstructor().newInstance();
if (o instanceof LookAndFeel) {
dbmi.setToolTipText(((LookAndFeel) o).getDescription());
}
@@ -2744,6 +2767,7 @@ private void storePreferences() {
getPrefs().putBoolean(OPTION_SHOWHEXCOLORED, optionShowHexColored.isSelected());
getPrefs().putBoolean(OPTION_SHOWSYSINFO, optionShowSystemInfo.isSelected());
getPrefs().putBoolean(OPTION_OPENBOOKMARKSPROMPT, optionOpenBookmarksPrompt.isSelected());
+ getPrefs().putBoolean(OPTION_REMEMBER_CHILDFRAME_RECT, optionRememberChildFrameRect.isSelected());
getPrefs().putBoolean(OPTION_KEEPVIEWONCOPY, optionKeepViewOnCopy.isSelected());
getPrefs().putBoolean(OPTION_SHOWTREESEARCHNAMES, optionTreeSearchNames.isSelected());
getPrefs().putBoolean(OPTION_HIGHLIGHT_OVERRIDDEN, optionHighlightOverridden.isSelected());
@@ -3335,6 +3359,7 @@ private static final class HelpMenu extends JMenu implements ActionListener {
private final JMenuItem helpMonteMediaLicense;
private final JMenuItem helpJFontChooserLicense;
private final JMenuItem helpApngWriterLicense;
+ private final JMenuItem helpCommonMarkLicense;
private final JMenuItem helpOracleLicense;
private final JMenuItem helpUpdateSettings;
private final JMenuItem helpUpdateCheck;
@@ -3357,6 +3382,9 @@ private HelpMenu() {
miscLicenses.setMnemonic(KeyEvent.VK_T);
add(miscLicenses);
+ helpCommonMarkLicense = makeMenuItem("CommonMark-Java License", KeyEvent.VK_A, Icons.ICON_EDIT_16.getIcon(), -1, this);
+ miscLicenses.add(helpCommonMarkLicense);
+
helpApngWriterLicense = makeMenuItem("APNG Writer License", KeyEvent.VK_A, Icons.ICON_EDIT_16.getIcon(), -1, this);
miscLicenses.add(helpApngWriterLicense);
@@ -3409,6 +3437,8 @@ public void actionPerformed(ActionEvent event) {
displayLicense("org/infinity/JFontChooser.License.txt", "MIT License");
} else if (event.getSource() == helpApngWriterLicense) {
displayLicense("org/infinity/apng-writer.License.txt", "BSD License");
+ } else if (event.getSource() == helpCommonMarkLicense) {
+ displayLicense("org/infinity/commonmark.License.txt", "BSD License");
} else if (event.getSource() == helpOracleLicense) {
displayLicense("org/infinity/Oracle.License.txt", "BSD License");
} else if (event.getSource() == helpUpdateSettings) {
@@ -3427,6 +3457,11 @@ public void actionPerformed(ActionEvent event) {
if (!Updater.isNewRelease(info.getRelease(), false)) {
info = null;
}
+ } catch (Exception e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(NearInfinity.getInstance(), "Check for updates: " + e.getMessage(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ return;
} finally {
WindowBlocker.blockWindow(NearInfinity.getInstance(), false);
}
@@ -3434,6 +3469,15 @@ public void actionPerformed(ActionEvent event) {
}
}
+ private boolean isUpdateMenuEnabled() {
+ return helpUpdateCheck.isEnabled();
+ }
+
+ private void setUpdateMenuEnabled(boolean enable) {
+ helpUpdateCheck.setEnabled(enable);
+ helpUpdateSettings.setEnabled(enable);
+ }
+
private void displayAbout() {
// title string
final String versionString = "Near Infinity " + VERSION;
@@ -3474,6 +3518,7 @@ private void displayAbout() {
add("Monte Media Library by Werner Randelshofer - GNU Lesser General Public License.");
add("JOrbis (\u00A9) JCraft Inc. - GNU Lesser General Public License.");
add("JHexView by Sebastian Porst - GNU General Public License.");
+ add("CommonMark-Java (\u00A9) Atlassian Pty. Ltd. - BSD License.");
add("APNG Writer by Weoulren - BSD License.");
}
};
diff --git a/src/org/infinity/gui/ButtonPanel.java b/src/org/infinity/gui/ButtonPanel.java
index 7bbe6305a..09216fab1 100644
--- a/src/org/infinity/gui/ButtonPanel.java
+++ b/src/org/infinity/gui/ButtonPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ButtonPopupMenu.java b/src/org/infinity/gui/ButtonPopupMenu.java
index 29543391c..d8adadfc7 100644
--- a/src/org/infinity/gui/ButtonPopupMenu.java
+++ b/src/org/infinity/gui/ButtonPopupMenu.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ButtonPopupWindow.java b/src/org/infinity/gui/ButtonPopupWindow.java
index 07eca1ef0..ad6eab55d 100644
--- a/src/org/infinity/gui/ButtonPopupWindow.java
+++ b/src/org/infinity/gui/ButtonPopupWindow.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/Center.java b/src/org/infinity/gui/Center.java
index aad1e33d6..7fbe70021 100644
--- a/src/org/infinity/gui/Center.java
+++ b/src/org/infinity/gui/Center.java
@@ -1,24 +1,33 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
import java.awt.Component;
import java.awt.Dimension;
+import java.awt.Point;
import java.awt.Rectangle;
/**
* @author Jon Heggland
*/
public final class Center {
+ /** Centers the given {@code Component} on the specified {@code area}. */
public static void center(Component c, Rectangle area) {
- Dimension size = c.getSize();
+ c.setLocation(getCenterLocation(c.getSize(), area));
+ }
+
+ /** Returns the location for the specified {@code size} to be centered on the given {@code area}. */
+ public static Point getCenterLocation(Dimension size, Rectangle area) {
+ if (area == null) {
+ area = new Rectangle();
+ }
int x = area.x + (area.width - size.width >> 1);
int y = area.y + (area.height - size.height >> 1);
- c.setLocation(Math.max(0, x), Math.max(0, y));
+ return new Point(Math.max(0, x), Math.max(0, y));
}
private Center() {
diff --git a/src/org/infinity/gui/ChildFrame.java b/src/org/infinity/gui/ChildFrame.java
index a21246e06..ff75be2d1 100644
--- a/src/org/infinity/gui/ChildFrame.java
+++ b/src/org/infinity/gui/ChildFrame.java
@@ -1,9 +1,12 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
@@ -24,57 +27,52 @@
import javax.swing.WindowConstants;
import org.infinity.NearInfinity;
+import org.infinity.resource.AbstractStruct;
import org.infinity.resource.Closeable;
+import org.infinity.resource.TextResource;
+import org.infinity.resource.Viewable;
+import org.infinity.resource.ViewableContainer;
+import org.infinity.resource.graphics.BamResource;
public class ChildFrame extends JFrame {
private static final List WINDOWS = new ArrayList<>();
+ // Storage for size and placement of the last created child frame
+ private static Dimension lastFrameSize = null;
+ private static Point lastFrameLocation = null;
+
private final boolean closeOnInvisible;
- public static void closeWindow(Class frameClass) {
+ /** Closes all child windows. */
+ public static int closeWindows() {
+ return closeWindow((Class)null);
+ }
+
+ /** Closes all windows of the specified window class. */
+ public static int closeWindow(Class frameClass) {
+ int retVal = 0;
WindowEvent event = new WindowEvent(NearInfinity.getInstance(), WindowEvent.WINDOW_CLOSING);
for (Iterator i = WINDOWS.iterator(); i.hasNext();) {
ChildFrame frame = i.next();
- if (frame.getClass() == frameClass) {
+ if (frameClass == null || frame.getClass() == frameClass) {
i.remove();
- try {
- frame.windowClosing(true);
- frame.setVisible(false);
- WindowListener listeners[] = frame.getWindowListeners();
- for (final WindowListener listener : listeners) {
- listener.windowClosing(event);
- }
- if (frame instanceof Closeable) {
- frame.close();
- }
- frame.dispose();
- } catch (Exception e) {
- e.printStackTrace();
- }
+ retVal++;
+ closeWindow(frame, event);
}
}
+ return retVal;
}
- public static void closeWindows() {
- WindowEvent event = new WindowEvent(NearInfinity.getInstance(), WindowEvent.WINDOW_CLOSING);
- final List copy = new ArrayList<>(WINDOWS);
- WINDOWS.clear();
- for (final ChildFrame frame : copy) {
- try {
- frame.windowClosing(true);
- frame.setVisible(false);
- WindowListener listeners[] = frame.getWindowListeners();
- for (final WindowListener listener : listeners) {
- listener.windowClosing(event);
- }
- if (frame instanceof Closeable) {
- frame.close();
- }
- frame.dispose();
- } catch (Exception e) {
- e.printStackTrace();
+ /** Closes the specified child window. */
+ public static boolean closeWindow(ChildFrame frame) {
+ boolean retVal = false;
+ if (frame != null) {
+ retVal = WINDOWS.remove(frame);
+ if (retVal) {
+ closeWindow(frame, new WindowEvent(NearInfinity.getInstance(), WindowEvent.WINDOW_CLOSING));
}
}
+ return retVal;
}
/**
@@ -232,6 +230,115 @@ public void close() {
* @throws Exception
*/
protected boolean windowClosing(boolean forced) throws Exception {
+ if (WINDOWS.size() == 1) {
+ // storing size and/or position of last closing window
+ if (shouldRememberPlacement(this)) {
+ updateLastFrameRect(getSize(), getLocation());
+ }
+ }
return true;
}
+
+ /**
+ * Returns the size of the last created child frame. Falls back to the default size if information is not available.
+ *
+ * @return Size of the last created child frame as {@link Dimension} object.
+ */
+ protected Dimension getLastFrameSize() {
+ final boolean useLast = BrowserMenuBar.getInstance().rememberChildFrameRect();
+
+ Dimension retVal = null;
+ ChildFrame frame = null;
+ for (Iterator iter = getFrameIterator(p -> p != this); iter.hasNext(); ) {
+ final ChildFrame f = iter.next();
+ if (shouldRememberPlacement(f)) {
+ frame = f;
+ }
+ }
+
+ if (useLast && frame != null) {
+ retVal = frame.getSize();
+ } else if (useLast && lastFrameSize != null) {
+ retVal = lastFrameSize;
+ } else {
+ retVal = new Dimension(NearInfinity.getInstance().getWidth() - 200, NearInfinity.getInstance().getHeight() - 45);
+ }
+ updateLastFrameRect(retVal, null);
+
+ return retVal;
+ }
+
+ /**
+ * Returns the location of the last created child frame.
+ * Falls back to the default location if information is not available.
+ *
+ * @return Location of the last created child frame as {@link Point} object.
+ */
+ protected Point getLastFrameLocation(Component parent) {
+ final boolean useLast = BrowserMenuBar.getInstance().rememberChildFrameRect();
+ Point retVal = null;
+
+ ChildFrame frame = null;
+ for (Iterator iter = getFrameIterator(p -> p != this); iter.hasNext(); ) {
+ final ChildFrame f = iter.next();
+ if (shouldRememberPlacement(f)) {
+ frame = f;
+ }
+ }
+
+ if (useLast && frame != null) {
+ retVal = frame.getLocation();
+ } else if (useLast && lastFrameLocation != null) {
+ retVal = lastFrameLocation;
+ } else {
+ retVal = Center.getCenterLocation(getSize(), parent.getBounds());
+ }
+ updateLastFrameRect(null, retVal);
+
+ return retVal;
+ }
+
+ /** Returns whether placement information of the specified window should be remembered. */
+ private static boolean shouldRememberPlacement(ChildFrame frame) {
+ boolean retVal = false;
+ if (frame instanceof ViewableContainer) {
+ final Viewable viewable = ((ViewableContainer)frame).getViewable();
+ // Auto-resizing Viewables (e.g. MOS or TIS resources) and non-Viewable windows are not considered
+ retVal = (viewable instanceof AbstractStruct || viewable instanceof TextResource || viewable instanceof BamResource);
+ }
+ return retVal;
+ }
+
+ /** Stores the specified size and/or location for use with future child frames. */
+ private static void updateLastFrameRect(Dimension dim, Point pt) {
+ if (dim != null) {
+ lastFrameSize = dim;
+ }
+ if (pt != null) {
+ lastFrameLocation = pt;
+ }
+ }
+
+ /** Closes the specified {@code ChildFrame} instance and releases associated resources. */
+ private static void closeWindow(ChildFrame frame, WindowEvent event) {
+ if (frame != null) {
+ try {
+ frame.windowClosing(true);
+ frame.setVisible(false);
+ if (event == null) {
+ event = new WindowEvent(NearInfinity.getInstance(), WindowEvent.WINDOW_CLOSING);
+ }
+ WindowListener listeners[] = frame.getWindowListeners();
+ for (final WindowListener listener : listeners) {
+ listener.windowClosing(event);
+ }
+ if (frame instanceof Closeable) {
+ frame.close();
+ }
+ frame.dispose();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
diff --git a/src/org/infinity/gui/ChooseBIFFrame.java b/src/org/infinity/gui/ChooseBIFFrame.java
index f340e598d..40720b6ab 100644
--- a/src/org/infinity/gui/ChooseBIFFrame.java
+++ b/src/org/infinity/gui/ChooseBIFFrame.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ClipboardViewer.java b/src/org/infinity/gui/ClipboardViewer.java
index fd2d68bd1..f8704d168 100644
--- a/src/org/infinity/gui/ClipboardViewer.java
+++ b/src/org/infinity/gui/ClipboardViewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ColorGrid.java b/src/org/infinity/gui/ColorGrid.java
index 6bd46cc1b..3bd11f962 100644
--- a/src/org/infinity/gui/ColorGrid.java
+++ b/src/org/infinity/gui/ColorGrid.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/DataCheckBoxMenuItem.java b/src/org/infinity/gui/DataCheckBoxMenuItem.java
index d7a3e6aca..0a0fd1a2c 100644
--- a/src/org/infinity/gui/DataCheckBoxMenuItem.java
+++ b/src/org/infinity/gui/DataCheckBoxMenuItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/DataMenuItem.java b/src/org/infinity/gui/DataMenuItem.java
index 99a927d49..7a7bb8d8c 100644
--- a/src/org/infinity/gui/DataMenuItem.java
+++ b/src/org/infinity/gui/DataMenuItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/DataRadioButtonMenuItem.java b/src/org/infinity/gui/DataRadioButtonMenuItem.java
index bddd76c86..6cef7123d 100644
--- a/src/org/infinity/gui/DataRadioButtonMenuItem.java
+++ b/src/org/infinity/gui/DataRadioButtonMenuItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/DebugConsole.java b/src/org/infinity/gui/DebugConsole.java
index c83c195ee..33606b16c 100644
--- a/src/org/infinity/gui/DebugConsole.java
+++ b/src/org/infinity/gui/DebugConsole.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/FixedFocusTraversalPolicy.java b/src/org/infinity/gui/FixedFocusTraversalPolicy.java
index f7c05db6b..be859ce0b 100644
--- a/src/org/infinity/gui/FixedFocusTraversalPolicy.java
+++ b/src/org/infinity/gui/FixedFocusTraversalPolicy.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/FontChooser.java b/src/org/infinity/gui/FontChooser.java
index 07eb43f8c..b2e8ab3c6 100644
--- a/src/org/infinity/gui/FontChooser.java
+++ b/src/org/infinity/gui/FontChooser.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/GameProperties.java b/src/org/infinity/gui/GameProperties.java
index 29cbfcb84..35786ae05 100644
--- a/src/org/infinity/gui/GameProperties.java
+++ b/src/org/infinity/gui/GameProperties.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/IdsBrowser.java b/src/org/infinity/gui/IdsBrowser.java
index 98d27f747..deb5b3959 100644
--- a/src/org/infinity/gui/IdsBrowser.java
+++ b/src/org/infinity/gui/IdsBrowser.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/InfinityAmp.java b/src/org/infinity/gui/InfinityAmp.java
index 0a3c30dc4..6a627f6ae 100644
--- a/src/org/infinity/gui/InfinityAmp.java
+++ b/src/org/infinity/gui/InfinityAmp.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/InfinityScrollPane.java b/src/org/infinity/gui/InfinityScrollPane.java
index c188684ed..f4b560377 100644
--- a/src/org/infinity/gui/InfinityScrollPane.java
+++ b/src/org/infinity/gui/InfinityScrollPane.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/InfinityTextArea.java b/src/org/infinity/gui/InfinityTextArea.java
index 24b648588..1744f9fb7 100644
--- a/src/org/infinity/gui/InfinityTextArea.java
+++ b/src/org/infinity/gui/InfinityTextArea.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/LinkButton.java b/src/org/infinity/gui/LinkButton.java
index 3153424e8..b2b554e2c 100644
--- a/src/org/infinity/gui/LinkButton.java
+++ b/src/org/infinity/gui/LinkButton.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/NewAbstractSettings.java b/src/org/infinity/gui/NewAbstractSettings.java
index d6c6b0995..f4409e45a 100644
--- a/src/org/infinity/gui/NewAbstractSettings.java
+++ b/src/org/infinity/gui/NewAbstractSettings.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/NewChrSettings.java b/src/org/infinity/gui/NewChrSettings.java
index beabe650e..68566b62f 100644
--- a/src/org/infinity/gui/NewChrSettings.java
+++ b/src/org/infinity/gui/NewChrSettings.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/NewProSettings.java b/src/org/infinity/gui/NewProSettings.java
index b3ebb7685..989013395 100644
--- a/src/org/infinity/gui/NewProSettings.java
+++ b/src/org/infinity/gui/NewProSettings.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/NewResSettings.java b/src/org/infinity/gui/NewResSettings.java
index 7f464c4a0..45101de96 100644
--- a/src/org/infinity/gui/NewResSettings.java
+++ b/src/org/infinity/gui/NewResSettings.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/OpenFileFrame.java b/src/org/infinity/gui/OpenFileFrame.java
index 3fb2e9666..4d46544b9 100644
--- a/src/org/infinity/gui/OpenFileFrame.java
+++ b/src/org/infinity/gui/OpenFileFrame.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/OpenResourceDialog.java b/src/org/infinity/gui/OpenResourceDialog.java
index 2bddd638d..78c17fa6c 100644
--- a/src/org/infinity/gui/OpenResourceDialog.java
+++ b/src/org/infinity/gui/OpenResourceDialog.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/PopupWindowEvent.java b/src/org/infinity/gui/PopupWindowEvent.java
index e4cdf68f9..7773f0224 100644
--- a/src/org/infinity/gui/PopupWindowEvent.java
+++ b/src/org/infinity/gui/PopupWindowEvent.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/PopupWindowListener.java b/src/org/infinity/gui/PopupWindowListener.java
index 5634120df..a9cd6dd38 100644
--- a/src/org/infinity/gui/PopupWindowListener.java
+++ b/src/org/infinity/gui/PopupWindowListener.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/QuickSearch.java b/src/org/infinity/gui/QuickSearch.java
index 6eef55682..0ec387cd3 100644
--- a/src/org/infinity/gui/QuickSearch.java
+++ b/src/org/infinity/gui/QuickSearch.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/RenderCanvas.java b/src/org/infinity/gui/RenderCanvas.java
index 6ce567e53..8709520b8 100644
--- a/src/org/infinity/gui/RenderCanvas.java
+++ b/src/org/infinity/gui/RenderCanvas.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ResourceChooser.java b/src/org/infinity/gui/ResourceChooser.java
index 3c3aa9799..651907193 100644
--- a/src/org/infinity/gui/ResourceChooser.java
+++ b/src/org/infinity/gui/ResourceChooser.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ResourceTree.java b/src/org/infinity/gui/ResourceTree.java
index c503dea7b..298c8a3d5 100644
--- a/src/org/infinity/gui/ResourceTree.java
+++ b/src/org/infinity/gui/ResourceTree.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ScriptTextArea.java b/src/org/infinity/gui/ScriptTextArea.java
index a891d68e4..9ea768ef7 100644
--- a/src/org/infinity/gui/ScriptTextArea.java
+++ b/src/org/infinity/gui/ScriptTextArea.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ScrollPopupMenu.java b/src/org/infinity/gui/ScrollPopupMenu.java
index 3d19a4179..6bad1d442 100644
--- a/src/org/infinity/gui/ScrollPopupMenu.java
+++ b/src/org/infinity/gui/ScrollPopupMenu.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/SortableTable.java b/src/org/infinity/gui/SortableTable.java
index f17f5531d..80ec40fba 100644
--- a/src/org/infinity/gui/SortableTable.java
+++ b/src/org/infinity/gui/SortableTable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/StandardDialogs.java b/src/org/infinity/gui/StandardDialogs.java
index bb2eb772c..05cbf42f1 100644
--- a/src/org/infinity/gui/StandardDialogs.java
+++ b/src/org/infinity/gui/StandardDialogs.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/StatusBar.java b/src/org/infinity/gui/StatusBar.java
index 5c6a8314f..7f81ac270 100644
--- a/src/org/infinity/gui/StatusBar.java
+++ b/src/org/infinity/gui/StatusBar.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/StringEditor.java b/src/org/infinity/gui/StringEditor.java
index f73f763e4..83e8f3d6d 100644
--- a/src/org/infinity/gui/StringEditor.java
+++ b/src/org/infinity/gui/StringEditor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/StringLookup.java b/src/org/infinity/gui/StringLookup.java
index 07d3fa886..25c95f24f 100644
--- a/src/org/infinity/gui/StringLookup.java
+++ b/src/org/infinity/gui/StringLookup.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/StructCellEditor.java b/src/org/infinity/gui/StructCellEditor.java
index d86204d4f..8a7cf7981 100644
--- a/src/org/infinity/gui/StructCellEditor.java
+++ b/src/org/infinity/gui/StructCellEditor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/StructViewer.java b/src/org/infinity/gui/StructViewer.java
index 1bd2fc33a..f910741e8 100644
--- a/src/org/infinity/gui/StructViewer.java
+++ b/src/org/infinity/gui/StructViewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/TableItem.java b/src/org/infinity/gui/TableItem.java
index 2e308c4d9..4c76d68e5 100644
--- a/src/org/infinity/gui/TableItem.java
+++ b/src/org/infinity/gui/TableItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/TextListPanel.java b/src/org/infinity/gui/TextListPanel.java
index 8ac67c720..a24b32c30 100644
--- a/src/org/infinity/gui/TextListPanel.java
+++ b/src/org/infinity/gui/TextListPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/TileGrid.java b/src/org/infinity/gui/TileGrid.java
index 9e264c6f2..3ebd2be40 100644
--- a/src/org/infinity/gui/TileGrid.java
+++ b/src/org/infinity/gui/TileGrid.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/ToolTipTableCellRenderer.java b/src/org/infinity/gui/ToolTipTableCellRenderer.java
index 1e5f9aeb2..b72d652b9 100644
--- a/src/org/infinity/gui/ToolTipTableCellRenderer.java
+++ b/src/org/infinity/gui/ToolTipTableCellRenderer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/UrlBrowser.java b/src/org/infinity/gui/UrlBrowser.java
index fd0ddf2c8..031114d8a 100644
--- a/src/org/infinity/gui/UrlBrowser.java
+++ b/src/org/infinity/gui/UrlBrowser.java
@@ -1,48 +1,52 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
-import java.awt.Desktop;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.net.URI;
+import java.net.URISyntaxException;
import javax.swing.JOptionPane;
import org.infinity.NearInfinity;
+import org.infinity.util.LauncherUtils;
/**
* Browses for the provided URI on mouse clicks
*
* @author Fredrik Lindgren
*/
-class UrlBrowser implements MouseListener {
+public class UrlBrowser implements MouseListener {
private final URI url;
/** Opens the specified URL in the system's default browser. */
- static boolean openUrl(String url) {
+ public static boolean openUrl(String url) {
boolean retVal = false;
- Desktop desktop = Desktop.getDesktop();
- if (desktop.isSupported(java.awt.Desktop.Action.BROWSE)) {
- try {
- desktop.browse(URI.create(url));
- retVal = true;
- } catch (IOException e) {
- e.printStackTrace();
- }
+ try {
+ LauncherUtils.browse(url);
+ retVal = true;
+ } catch (IOException | URISyntaxException e) {
+ e.printStackTrace();
+ showErrorMessage(e.getMessage());
}
return retVal;
}
- UrlBrowser(String urlText) {
+ public UrlBrowser(String urlText) {
url = URI.create(urlText);
}
- private void showErrorMessage() {
- final String errorMessage = "I can't open an url on this system";
+ private static void showErrorMessage(String details) {
+ String errorMessage;
+ if (details == null || details.trim().isEmpty()) {
+ errorMessage = "URL cannot be opened on this system.";
+ } else {
+ errorMessage = "URL cannot be opened:\n" + details;
+ }
final String errorTitle = "Attention";
JOptionPane.showMessageDialog(NearInfinity.getInstance(), errorMessage, errorTitle, JOptionPane.PLAIN_MESSAGE);
}
@@ -51,20 +55,11 @@ private void showErrorMessage() {
@Override
public void mouseClicked(MouseEvent event) {
-
- if (!Desktop.isDesktopSupported()) {
- showErrorMessage();
- } else {
- try {
- Desktop desktop = Desktop.getDesktop();
- if (!desktop.isSupported(java.awt.Desktop.Action.BROWSE)) {
- showErrorMessage();
- } else {
- desktop.browse(url);
- }
- } catch (java.io.IOException e) {
- e.printStackTrace();
- }
+ try {
+ LauncherUtils.browse(url);
+ } catch (IOException e) {
+ e.printStackTrace();
+ showErrorMessage(e.getMessage());
}
}
diff --git a/src/org/infinity/gui/ViewFrame.java b/src/org/infinity/gui/ViewFrame.java
index 685a12351..3431b14ec 100644
--- a/src/org/infinity/gui/ViewFrame.java
+++ b/src/org/infinity/gui/ViewFrame.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
@@ -9,7 +9,6 @@
import javax.swing.JPanel;
-import org.infinity.NearInfinity;
import org.infinity.resource.AbstractStruct;
import org.infinity.resource.Closeable;
import org.infinity.resource.Resource;
@@ -56,11 +55,11 @@ public ViewFrame(Component parent, Viewable viewable) {
super(getViewableTitle(viewable), true);
setViewable(viewable);
if (viewable instanceof AbstractStruct || viewable instanceof TextResource || viewable instanceof BamResource) {
- setSize(NearInfinity.getInstance().getWidth() - 200, NearInfinity.getInstance().getHeight() - 45);
+ setSize(getLastFrameSize());
} else {
pack();
}
- Center.center(this, parent.getBounds());
+ setLocation(getLastFrameLocation(parent));
setVisible(true);
}
diff --git a/src/org/infinity/gui/ViewerUtil.java b/src/org/infinity/gui/ViewerUtil.java
index 7a278474d..dee1c5a27 100644
--- a/src/org/infinity/gui/ViewerUtil.java
+++ b/src/org/infinity/gui/ViewerUtil.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/WindowBlocker.java b/src/org/infinity/gui/WindowBlocker.java
index 2b0a6c588..cf5ca4f08 100644
--- a/src/org/infinity/gui/WindowBlocker.java
+++ b/src/org/infinity/gui/WindowBlocker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/WrapLayout.java b/src/org/infinity/gui/WrapLayout.java
index 9a705a8c3..96dd3aec9 100644
--- a/src/org/infinity/gui/WrapLayout.java
+++ b/src/org/infinity/gui/WrapLayout.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui;
diff --git a/src/org/infinity/gui/converter/BamFilterBase.java b/src/org/infinity/gui/converter/BamFilterBase.java
index a21bd6c2c..1315d3f33 100644
--- a/src/org/infinity/gui/converter/BamFilterBase.java
+++ b/src/org/infinity/gui/converter/BamFilterBase.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterBaseColor.java b/src/org/infinity/gui/converter/BamFilterBaseColor.java
index a992b192a..c1b30bf54 100644
--- a/src/org/infinity/gui/converter/BamFilterBaseColor.java
+++ b/src/org/infinity/gui/converter/BamFilterBaseColor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterBaseOutput.java b/src/org/infinity/gui/converter/BamFilterBaseOutput.java
index 38edc1d46..b5c7dc0b9 100644
--- a/src/org/infinity/gui/converter/BamFilterBaseOutput.java
+++ b/src/org/infinity/gui/converter/BamFilterBaseOutput.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterBaseTransform.java b/src/org/infinity/gui/converter/BamFilterBaseTransform.java
index 4f5f3b2b6..94c3140dd 100644
--- a/src/org/infinity/gui/converter/BamFilterBaseTransform.java
+++ b/src/org/infinity/gui/converter/BamFilterBaseTransform.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterColorBCG.java b/src/org/infinity/gui/converter/BamFilterColorBCG.java
index d95f71372..eb9aa9a5c 100644
--- a/src/org/infinity/gui/converter/BamFilterColorBCG.java
+++ b/src/org/infinity/gui/converter/BamFilterColorBCG.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterColorBalance.java b/src/org/infinity/gui/converter/BamFilterColorBalance.java
index 2365d7d94..260161a2b 100644
--- a/src/org/infinity/gui/converter/BamFilterColorBalance.java
+++ b/src/org/infinity/gui/converter/BamFilterColorBalance.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterColorHSL.java b/src/org/infinity/gui/converter/BamFilterColorHSL.java
index 5c8e238d5..531a0e950 100644
--- a/src/org/infinity/gui/converter/BamFilterColorHSL.java
+++ b/src/org/infinity/gui/converter/BamFilterColorHSL.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterColorInvert.java b/src/org/infinity/gui/converter/BamFilterColorInvert.java
index 69ffd797e..8f68f3769 100644
--- a/src/org/infinity/gui/converter/BamFilterColorInvert.java
+++ b/src/org/infinity/gui/converter/BamFilterColorInvert.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterColorLab.java b/src/org/infinity/gui/converter/BamFilterColorLab.java
index 88d90c837..ad359a4e7 100644
--- a/src/org/infinity/gui/converter/BamFilterColorLab.java
+++ b/src/org/infinity/gui/converter/BamFilterColorLab.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterColorReplace.java b/src/org/infinity/gui/converter/BamFilterColorReplace.java
index c7c2b78d6..cb71073c5 100644
--- a/src/org/infinity/gui/converter/BamFilterColorReplace.java
+++ b/src/org/infinity/gui/converter/BamFilterColorReplace.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterColorSwap.java b/src/org/infinity/gui/converter/BamFilterColorSwap.java
index 7adbcf666..9b6888107 100644
--- a/src/org/infinity/gui/converter/BamFilterColorSwap.java
+++ b/src/org/infinity/gui/converter/BamFilterColorSwap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterFactory.java b/src/org/infinity/gui/converter/BamFilterFactory.java
index 3c4ca3608..afe2bf65a 100644
--- a/src/org/infinity/gui/converter/BamFilterFactory.java
+++ b/src/org/infinity/gui/converter/BamFilterFactory.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterOutputCombine.java b/src/org/infinity/gui/converter/BamFilterOutputCombine.java
index 07af1910d..778db9442 100644
--- a/src/org/infinity/gui/converter/BamFilterOutputCombine.java
+++ b/src/org/infinity/gui/converter/BamFilterOutputCombine.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterOutputDefault.java b/src/org/infinity/gui/converter/BamFilterOutputDefault.java
index 23d132b88..4c0823db1 100644
--- a/src/org/infinity/gui/converter/BamFilterOutputDefault.java
+++ b/src/org/infinity/gui/converter/BamFilterOutputDefault.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterOutputGif.java b/src/org/infinity/gui/converter/BamFilterOutputGif.java
index 4a6e84388..d7f5255c8 100644
--- a/src/org/infinity/gui/converter/BamFilterOutputGif.java
+++ b/src/org/infinity/gui/converter/BamFilterOutputGif.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterOutputImage.java b/src/org/infinity/gui/converter/BamFilterOutputImage.java
index f8886e3f1..655f5c2fc 100644
--- a/src/org/infinity/gui/converter/BamFilterOutputImage.java
+++ b/src/org/infinity/gui/converter/BamFilterOutputImage.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterOutputSplitted.java b/src/org/infinity/gui/converter/BamFilterOutputSplitted.java
index 658b13655..8782a64ed 100644
--- a/src/org/infinity/gui/converter/BamFilterOutputSplitted.java
+++ b/src/org/infinity/gui/converter/BamFilterOutputSplitted.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterTransformCenter.java b/src/org/infinity/gui/converter/BamFilterTransformCenter.java
index aa532368b..c08217da8 100644
--- a/src/org/infinity/gui/converter/BamFilterTransformCenter.java
+++ b/src/org/infinity/gui/converter/BamFilterTransformCenter.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterTransformMirror.java b/src/org/infinity/gui/converter/BamFilterTransformMirror.java
index ea3b55513..5de6f5b35 100644
--- a/src/org/infinity/gui/converter/BamFilterTransformMirror.java
+++ b/src/org/infinity/gui/converter/BamFilterTransformMirror.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterTransformResize.java b/src/org/infinity/gui/converter/BamFilterTransformResize.java
index 7f8d71f88..bb5e46d7c 100644
--- a/src/org/infinity/gui/converter/BamFilterTransformResize.java
+++ b/src/org/infinity/gui/converter/BamFilterTransformResize.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterTransformRotate.java b/src/org/infinity/gui/converter/BamFilterTransformRotate.java
index 03f2eefac..24aa568fb 100644
--- a/src/org/infinity/gui/converter/BamFilterTransformRotate.java
+++ b/src/org/infinity/gui/converter/BamFilterTransformRotate.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamFilterTransformTrim.java b/src/org/infinity/gui/converter/BamFilterTransformTrim.java
index ceca3abb5..14616e1bc 100644
--- a/src/org/infinity/gui/converter/BamFilterTransformTrim.java
+++ b/src/org/infinity/gui/converter/BamFilterTransformTrim.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamOptionsDialog.java b/src/org/infinity/gui/converter/BamOptionsDialog.java
index 1925d21c0..0a619bdfd 100644
--- a/src/org/infinity/gui/converter/BamOptionsDialog.java
+++ b/src/org/infinity/gui/converter/BamOptionsDialog.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/BamPaletteDialog.java b/src/org/infinity/gui/converter/BamPaletteDialog.java
index 0a7a1bcc8..20c021399 100644
--- a/src/org/infinity/gui/converter/BamPaletteDialog.java
+++ b/src/org/infinity/gui/converter/BamPaletteDialog.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
@@ -315,6 +315,8 @@ public void setPaletteModified() {
* Calculates a new palette based on the currently registered colors and stores it in the PaletteDialog instance.
*/
public void updateGeneratedPalette() {
+ final int Green = 0xff00ff00;
+
if (isPaletteModified() && !lockedPalette) {
if (colorMap.size() <= 256) {
// checking whether all frames share the same palette
@@ -360,14 +362,22 @@ public void updateGeneratedPalette() {
}
} else {
// reducing color count to max. 256
- int[] pixels = new int[colorMap.size()];
- Iterator iter = colorMap.keySet().iterator();
+
+ // medianCut() should not consider the special transparent green color, workaround to keep it preserved
+ final Integer savedGreen = colorMap.remove(Green);
+ final int[] pixels = new int[colorMap.size()];
+ final Iterator iter = colorMap.keySet().iterator();
int idx = 0;
while (idx < pixels.length && iter.hasNext()) {
pixels[idx] = iter.next();
idx++;
}
- ColorConvert.medianCut(pixels, 256, palettes[TYPE_GENERATED], false);
+ final int desiredColors = savedGreen != null ? 255 : 256;
+ ColorConvert.medianCut(pixels, desiredColors, palettes[TYPE_GENERATED], false);
+ if (savedGreen != null) {
+ colorMap.put(Green, savedGreen);
+ palettes[TYPE_GENERATED][255] = Green;
+ }
}
// moving special "green" to the first index
diff --git a/src/org/infinity/gui/converter/ConvertToBam.java b/src/org/infinity/gui/converter/ConvertToBam.java
index 52ff6dfa3..14cdfc0a7 100644
--- a/src/org/infinity/gui/converter/ConvertToBam.java
+++ b/src/org/infinity/gui/converter/ConvertToBam.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
@@ -4153,7 +4153,7 @@ private void updateFinalBamDecoder(int bamVersion) throws Exception {
dstBuf[ofs] = colIdx;// (byte)ci;
} else {
double weight = getUseAlpha() ? 1.0 : 0.0;
- byte color = (byte) ColorConvert.getNearestColor(srcBuf[ofs], palette, weight, null);
+ byte color = (byte) ColorConvert.getNearestColor(srcBuf[ofs], palette, weight, null, true);
dstBuf[ofs] = color;// (byte)ci;
colorCache.put(c, color);
}
@@ -4246,7 +4246,7 @@ private void updateFinalBamFrame(int bamVersion, int frameIdx) {
dstBuf[ofs] = colIdx;
} else {
double weight = getUseAlpha() ? 1.0 : 0.0;
- byte color = (byte) ColorConvert.getNearestColor(srcBuf[ofs], palette, weight, null);
+ byte color = (byte) ColorConvert.getNearestColor(srcBuf[ofs], palette, weight, null, true);
dstBuf[ofs] = color;// (byte)ci;
colorCache.put(c, color);
}
diff --git a/src/org/infinity/gui/converter/ConvertToBmp.java b/src/org/infinity/gui/converter/ConvertToBmp.java
index 65e741022..20a24a3a1 100644
--- a/src/org/infinity/gui/converter/ConvertToBmp.java
+++ b/src/org/infinity/gui/converter/ConvertToBmp.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/ConvertToMos.java b/src/org/infinity/gui/converter/ConvertToMos.java
index eff0d8bd7..cb92a15ad 100644
--- a/src/org/infinity/gui/converter/ConvertToMos.java
+++ b/src/org/infinity/gui/converter/ConvertToMos.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/ConvertToPvrz.java b/src/org/infinity/gui/converter/ConvertToPvrz.java
index 3915cae62..3ba2161c3 100644
--- a/src/org/infinity/gui/converter/ConvertToPvrz.java
+++ b/src/org/infinity/gui/converter/ConvertToPvrz.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/converter/ConvertToTis.java b/src/org/infinity/gui/converter/ConvertToTis.java
index 65b72cf85..399cc3be5 100644
--- a/src/org/infinity/gui/converter/ConvertToTis.java
+++ b/src/org/infinity/gui/converter/ConvertToTis.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.converter;
diff --git a/src/org/infinity/gui/hexview/BasicColorMap.java b/src/org/infinity/gui/hexview/BasicColorMap.java
index f35e6eb92..dfa33645e 100644
--- a/src/org/infinity/gui/hexview/BasicColorMap.java
+++ b/src/org/infinity/gui/hexview/BasicColorMap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/FindDataDialog.java b/src/org/infinity/gui/hexview/FindDataDialog.java
index 950f1358f..4038a6d74 100644
--- a/src/org/infinity/gui/hexview/FindDataDialog.java
+++ b/src/org/infinity/gui/hexview/FindDataDialog.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/GenericHexViewer.java b/src/org/infinity/gui/hexview/GenericHexViewer.java
index 0c2fb7982..130916921 100644
--- a/src/org/infinity/gui/hexview/GenericHexViewer.java
+++ b/src/org/infinity/gui/hexview/GenericHexViewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/MenuCreator.java b/src/org/infinity/gui/hexview/MenuCreator.java
index c2be83bff..9e7fd87a8 100644
--- a/src/org/infinity/gui/hexview/MenuCreator.java
+++ b/src/org/infinity/gui/hexview/MenuCreator.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/ResourceDataProvider.java b/src/org/infinity/gui/hexview/ResourceDataProvider.java
index 9c389fa08..c460c21d9 100644
--- a/src/org/infinity/gui/hexview/ResourceDataProvider.java
+++ b/src/org/infinity/gui/hexview/ResourceDataProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/ResourceMenuCreator.java b/src/org/infinity/gui/hexview/ResourceMenuCreator.java
index 3d6db7be5..8fe0003e0 100644
--- a/src/org/infinity/gui/hexview/ResourceMenuCreator.java
+++ b/src/org/infinity/gui/hexview/ResourceMenuCreator.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/StructHexViewer.java b/src/org/infinity/gui/hexview/StructHexViewer.java
index 384292ba0..e7c8d8830 100644
--- a/src/org/infinity/gui/hexview/StructHexViewer.java
+++ b/src/org/infinity/gui/hexview/StructHexViewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/StructuredDataProvider.java b/src/org/infinity/gui/hexview/StructuredDataProvider.java
index e0997eb54..15ae9405b 100644
--- a/src/org/infinity/gui/hexview/StructuredDataProvider.java
+++ b/src/org/infinity/gui/hexview/StructuredDataProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/hexview/VariableDataProvider.java b/src/org/infinity/gui/hexview/VariableDataProvider.java
index d316d3d8a..0c0b91e45 100644
--- a/src/org/infinity/gui/hexview/VariableDataProvider.java
+++ b/src/org/infinity/gui/hexview/VariableDataProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.hexview;
diff --git a/src/org/infinity/gui/layeritem/AbstractLayerItem.java b/src/org/infinity/gui/layeritem/AbstractLayerItem.java
index c8a7e0245..25c983a0b 100644
--- a/src/org/infinity/gui/layeritem/AbstractLayerItem.java
+++ b/src/org/infinity/gui/layeritem/AbstractLayerItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.layeritem;
diff --git a/src/org/infinity/gui/layeritem/AnimatedLayerItem.java b/src/org/infinity/gui/layeritem/AnimatedLayerItem.java
index 37d0e4cce..58da4fcec 100644
--- a/src/org/infinity/gui/layeritem/AnimatedLayerItem.java
+++ b/src/org/infinity/gui/layeritem/AnimatedLayerItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.layeritem;
diff --git a/src/org/infinity/gui/layeritem/BasicAnimationProvider.java b/src/org/infinity/gui/layeritem/BasicAnimationProvider.java
index 7f257b29b..c63b545bd 100644
--- a/src/org/infinity/gui/layeritem/BasicAnimationProvider.java
+++ b/src/org/infinity/gui/layeritem/BasicAnimationProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.layeritem;
diff --git a/src/org/infinity/gui/layeritem/IconLayerItem.java b/src/org/infinity/gui/layeritem/IconLayerItem.java
index 9a93755ae..1c7af85c3 100644
--- a/src/org/infinity/gui/layeritem/IconLayerItem.java
+++ b/src/org/infinity/gui/layeritem/IconLayerItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.layeritem;
diff --git a/src/org/infinity/gui/layeritem/LayerItemEvent.java b/src/org/infinity/gui/layeritem/LayerItemEvent.java
index 0b33323f4..287c87fd7 100644
--- a/src/org/infinity/gui/layeritem/LayerItemEvent.java
+++ b/src/org/infinity/gui/layeritem/LayerItemEvent.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.layeritem;
diff --git a/src/org/infinity/gui/layeritem/LayerItemListener.java b/src/org/infinity/gui/layeritem/LayerItemListener.java
index c76b08de3..d6ab4fffc 100644
--- a/src/org/infinity/gui/layeritem/LayerItemListener.java
+++ b/src/org/infinity/gui/layeritem/LayerItemListener.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.layeritem;
diff --git a/src/org/infinity/gui/layeritem/ShapedLayerItem.java b/src/org/infinity/gui/layeritem/ShapedLayerItem.java
index c2e3d2243..98549082d 100644
--- a/src/org/infinity/gui/layeritem/ShapedLayerItem.java
+++ b/src/org/infinity/gui/layeritem/ShapedLayerItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.gui.layeritem;
diff --git a/src/org/infinity/icon/App128.png b/src/org/infinity/icon/App128.png
index a4111c861..43c3c7b90 100644
Binary files a/src/org/infinity/icon/App128.png and b/src/org/infinity/icon/App128.png differ
diff --git a/src/org/infinity/icon/App16.png b/src/org/infinity/icon/App16.png
index 83a2a694a..ec27e9af9 100644
Binary files a/src/org/infinity/icon/App16.png and b/src/org/infinity/icon/App16.png differ
diff --git a/src/org/infinity/icon/App256.png b/src/org/infinity/icon/App256.png
new file mode 100644
index 000000000..033818489
Binary files /dev/null and b/src/org/infinity/icon/App256.png differ
diff --git a/src/org/infinity/icon/App32.png b/src/org/infinity/icon/App32.png
index 949b05e50..ce95c68f8 100644
Binary files a/src/org/infinity/icon/App32.png and b/src/org/infinity/icon/App32.png differ
diff --git a/src/org/infinity/icon/App512.png b/src/org/infinity/icon/App512.png
new file mode 100644
index 000000000..5d9919b0a
Binary files /dev/null and b/src/org/infinity/icon/App512.png differ
diff --git a/src/org/infinity/icon/App64.png b/src/org/infinity/icon/App64.png
index 919ba6ab6..d113f7892 100644
Binary files a/src/org/infinity/icon/App64.png and b/src/org/infinity/icon/App64.png differ
diff --git a/src/org/infinity/icon/Icons.java b/src/org/infinity/icon/Icons.java
index f576b19b2..29d952ead 100644
--- a/src/org/infinity/icon/Icons.java
+++ b/src/org/infinity/icon/Icons.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.icon;
@@ -21,6 +21,8 @@ public enum Icons {
ICON_APP_32("App32.png"),
ICON_APP_64("App64.png"),
ICON_APP_128("App128.png"),
+ ICON_APP_256("App256.png"),
+ ICON_APP_512("App512.png"),
ICON_APPLICATION_16("Application16.gif"),
ICON_ARROW_DOWN_15("ArrowDown15.gif"),
ICON_ARROW_UP_15("ArrowUp15.gif"),
@@ -130,8 +132,10 @@ public static ImageIcon getIcon(Class> cls, String fileName) {
}
try (InputStream is = cls.getResourceAsStream(fileName)) {
- Image image = ImageIO.read(is);
- retVal = new ImageIcon(image);
+ if (is != null) {
+ Image image = ImageIO.read(is);
+ retVal = new ImageIcon(image);
+ }
} catch (IOException e) {
e.printStackTrace();
}
@@ -159,7 +163,9 @@ public static Image getImage(Class> cls, String fileName) {
}
try (InputStream is = cls.getResourceAsStream(fileName)) {
- retVal = ImageIO.read(is);
+ if (is != null) {
+ retVal = ImageIO.read(is);
+ }
} catch (IOException e) {
e.printStackTrace();
}
diff --git a/src/org/infinity/resource/AbstractAbility.java b/src/org/infinity/resource/AbstractAbility.java
index 3ab3ce93a..ab1250104 100644
--- a/src/org/infinity/resource/AbstractAbility.java
+++ b/src/org/infinity/resource/AbstractAbility.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/AbstractStruct.java b/src/org/infinity/resource/AbstractStruct.java
index afa416bb1..8fd79dc65 100644
--- a/src/org/infinity/resource/AbstractStruct.java
+++ b/src/org/infinity/resource/AbstractStruct.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/AbstractVariable.java b/src/org/infinity/resource/AbstractVariable.java
index a345831ba..175f4f274 100644
--- a/src/org/infinity/resource/AbstractVariable.java
+++ b/src/org/infinity/resource/AbstractVariable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/AddRemovable.java b/src/org/infinity/resource/AddRemovable.java
index d9fcc16e8..0ae760999 100644
--- a/src/org/infinity/resource/AddRemovable.java
+++ b/src/org/infinity/resource/AddRemovable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/Closeable.java b/src/org/infinity/resource/Closeable.java
index b0581cecc..0cbd24315 100644
--- a/src/org/infinity/resource/Closeable.java
+++ b/src/org/infinity/resource/Closeable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/Effect.java b/src/org/infinity/resource/Effect.java
index b5e8d6eef..be28ea46e 100644
--- a/src/org/infinity/resource/Effect.java
+++ b/src/org/infinity/resource/Effect.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/Effect2.java b/src/org/infinity/resource/Effect2.java
index 1c9469515..03b532204 100644
--- a/src/org/infinity/resource/Effect2.java
+++ b/src/org/infinity/resource/Effect2.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/HasChildStructs.java b/src/org/infinity/resource/HasChildStructs.java
index 7f7046a6c..44e72c347 100644
--- a/src/org/infinity/resource/HasChildStructs.java
+++ b/src/org/infinity/resource/HasChildStructs.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/HasViewerTabs.java b/src/org/infinity/resource/HasViewerTabs.java
index 83e4f1d2c..950f2dfd1 100644
--- a/src/org/infinity/resource/HasViewerTabs.java
+++ b/src/org/infinity/resource/HasViewerTabs.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/Profile.java b/src/org/infinity/resource/Profile.java
index 10735f4bc..4fcb9fc2a 100644
--- a/src/org/infinity/resource/Profile.java
+++ b/src/org/infinity/resource/Profile.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
@@ -1088,6 +1088,9 @@ public static String[] getAvailableResourceTypes(boolean ignoreGame) {
if (ignoreGame || (Boolean) getProperty(Key.IS_SUPPORTED_LUA)) {
list.add("LUA");
}
+ if (ignoreGame || (Boolean) getProperty(Key.IS_SUPPORTED_MAZE)) {
+ list.add("MAZE");
+ }
if (ignoreGame || (Boolean) getProperty(Key.IS_SUPPORTED_MENU)) {
list.add("MENU");
}
diff --git a/src/org/infinity/resource/Referenceable.java b/src/org/infinity/resource/Referenceable.java
index def3d917d..d84305fd7 100644
--- a/src/org/infinity/resource/Referenceable.java
+++ b/src/org/infinity/resource/Referenceable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/Resource.java b/src/org/infinity/resource/Resource.java
index a0961ce21..d58a02382 100644
--- a/src/org/infinity/resource/Resource.java
+++ b/src/org/infinity/resource/Resource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/ResourceFactory.java b/src/org/infinity/resource/ResourceFactory.java
index 848bb4682..fce5d6208 100644
--- a/src/org/infinity/resource/ResourceFactory.java
+++ b/src/org/infinity/resource/ResourceFactory.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/StructEntry.java b/src/org/infinity/resource/StructEntry.java
index 23b1ba239..d2e0fbf25 100644
--- a/src/org/infinity/resource/StructEntry.java
+++ b/src/org/infinity/resource/StructEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/StructureFactory.java b/src/org/infinity/resource/StructureFactory.java
index 857256ccd..668df8b88 100644
--- a/src/org/infinity/resource/StructureFactory.java
+++ b/src/org/infinity/resource/StructureFactory.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/TextResource.java b/src/org/infinity/resource/TextResource.java
index f0bfb4a8e..e4eaf562c 100644
--- a/src/org/infinity/resource/TextResource.java
+++ b/src/org/infinity/resource/TextResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/Viewable.java b/src/org/infinity/resource/Viewable.java
index 9c513d6b9..75a8db80a 100644
--- a/src/org/infinity/resource/Viewable.java
+++ b/src/org/infinity/resource/Viewable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/ViewableContainer.java b/src/org/infinity/resource/ViewableContainer.java
index 3870df257..b7775f3b4 100644
--- a/src/org/infinity/resource/ViewableContainer.java
+++ b/src/org/infinity/resource/ViewableContainer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/Writeable.java b/src/org/infinity/resource/Writeable.java
index f6ab27466..e3cbe7e0f 100644
--- a/src/org/infinity/resource/Writeable.java
+++ b/src/org/infinity/resource/Writeable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource;
diff --git a/src/org/infinity/resource/are/Actor.java b/src/org/infinity/resource/are/Actor.java
index 31ccd45c6..41f77c26b 100644
--- a/src/org/infinity/resource/are/Actor.java
+++ b/src/org/infinity/resource/are/Actor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Ambient.java b/src/org/infinity/resource/are/Ambient.java
index 85ed1a157..a9fbb3463 100644
--- a/src/org/infinity/resource/are/Ambient.java
+++ b/src/org/infinity/resource/are/Ambient.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Animation.java b/src/org/infinity/resource/are/Animation.java
index dc9dae96c..7e0866007 100644
--- a/src/org/infinity/resource/are/Animation.java
+++ b/src/org/infinity/resource/are/Animation.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/AreResource.java b/src/org/infinity/resource/are/AreResource.java
index 143e7d614..f740428c8 100644
--- a/src/org/infinity/resource/are/AreResource.java
+++ b/src/org/infinity/resource/are/AreResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/AutomapNote.java b/src/org/infinity/resource/are/AutomapNote.java
index d65ed9ffc..b00f5ac9c 100644
--- a/src/org/infinity/resource/are/AutomapNote.java
+++ b/src/org/infinity/resource/are/AutomapNote.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/AutomapNotePST.java b/src/org/infinity/resource/are/AutomapNotePST.java
index 853446a59..5fa10825d 100644
--- a/src/org/infinity/resource/are/AutomapNotePST.java
+++ b/src/org/infinity/resource/are/AutomapNotePST.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Container.java b/src/org/infinity/resource/are/Container.java
index e29c7cc09..e4a53e8e9 100644
--- a/src/org/infinity/resource/are/Container.java
+++ b/src/org/infinity/resource/are/Container.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Door.java b/src/org/infinity/resource/are/Door.java
index 6e509d1be..7ff233e65 100644
--- a/src/org/infinity/resource/are/Door.java
+++ b/src/org/infinity/resource/are/Door.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Entrance.java b/src/org/infinity/resource/are/Entrance.java
index 88bd7c3d9..894383490 100644
--- a/src/org/infinity/resource/are/Entrance.java
+++ b/src/org/infinity/resource/are/Entrance.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Explored.java b/src/org/infinity/resource/are/Explored.java
index 6ae1c7d0b..101bb7240 100644
--- a/src/org/infinity/resource/are/Explored.java
+++ b/src/org/infinity/resource/are/Explored.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/HasVertices.java b/src/org/infinity/resource/are/HasVertices.java
index 4028d02d4..6205b99fb 100644
--- a/src/org/infinity/resource/are/HasVertices.java
+++ b/src/org/infinity/resource/are/HasVertices.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/ITEPoint.java b/src/org/infinity/resource/are/ITEPoint.java
index c819e35fb..bb9296b69 100644
--- a/src/org/infinity/resource/are/ITEPoint.java
+++ b/src/org/infinity/resource/are/ITEPoint.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Item.java b/src/org/infinity/resource/are/Item.java
index ef0fc580d..2449cbfa6 100644
--- a/src/org/infinity/resource/are/Item.java
+++ b/src/org/infinity/resource/are/Item.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/ProEffect.java b/src/org/infinity/resource/are/ProEffect.java
index 7735a59f1..6028216d2 100644
--- a/src/org/infinity/resource/are/ProEffect.java
+++ b/src/org/infinity/resource/are/ProEffect.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/ProTrap.java b/src/org/infinity/resource/are/ProTrap.java
index 70f51a85f..6b10a06d8 100644
--- a/src/org/infinity/resource/are/ProTrap.java
+++ b/src/org/infinity/resource/are/ProTrap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/RestSpawn.java b/src/org/infinity/resource/are/RestSpawn.java
index 43869f7a0..868403803 100644
--- a/src/org/infinity/resource/are/RestSpawn.java
+++ b/src/org/infinity/resource/are/RestSpawn.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Song.java b/src/org/infinity/resource/are/Song.java
index bf2e341f1..e32f21caa 100644
--- a/src/org/infinity/resource/are/Song.java
+++ b/src/org/infinity/resource/are/Song.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/SpawnPoint.java b/src/org/infinity/resource/are/SpawnPoint.java
index f0f2549c4..40d5051f5 100644
--- a/src/org/infinity/resource/are/SpawnPoint.java
+++ b/src/org/infinity/resource/are/SpawnPoint.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/TiledObject.java b/src/org/infinity/resource/are/TiledObject.java
index a685e7945..82649a4b7 100644
--- a/src/org/infinity/resource/are/TiledObject.java
+++ b/src/org/infinity/resource/are/TiledObject.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Variable.java b/src/org/infinity/resource/are/Variable.java
index 7949bd44e..c55185f00 100644
--- a/src/org/infinity/resource/are/Variable.java
+++ b/src/org/infinity/resource/are/Variable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/Viewer.java b/src/org/infinity/resource/are/Viewer.java
index 98d0840f5..1d80a82b6 100644
--- a/src/org/infinity/resource/are/Viewer.java
+++ b/src/org/infinity/resource/are/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/ViewerActor.java b/src/org/infinity/resource/are/ViewerActor.java
index 4a00a61f9..535d1c723 100644
--- a/src/org/infinity/resource/are/ViewerActor.java
+++ b/src/org/infinity/resource/are/ViewerActor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/ViewerContainer.java b/src/org/infinity/resource/are/ViewerContainer.java
index a58de6c00..a665dd2a1 100644
--- a/src/org/infinity/resource/are/ViewerContainer.java
+++ b/src/org/infinity/resource/are/ViewerContainer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are;
diff --git a/src/org/infinity/resource/are/viewer/AbstractAnimationProvider.java b/src/org/infinity/resource/are/viewer/AbstractAnimationProvider.java
index 2fc22d5b0..c760649af 100644
--- a/src/org/infinity/resource/are/viewer/AbstractAnimationProvider.java
+++ b/src/org/infinity/resource/are/viewer/AbstractAnimationProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/ActorAnimationProvider.java b/src/org/infinity/resource/are/viewer/ActorAnimationProvider.java
index cb69c4752..eb3965f76 100644
--- a/src/org/infinity/resource/are/viewer/ActorAnimationProvider.java
+++ b/src/org/infinity/resource/are/viewer/ActorAnimationProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/AreaViewer.java b/src/org/infinity/resource/are/viewer/AreaViewer.java
index c6ab8facd..d5dfcaf60 100644
--- a/src/org/infinity/resource/are/viewer/AreaViewer.java
+++ b/src/org/infinity/resource/are/viewer/AreaViewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
@@ -2268,7 +2268,7 @@ public void mouseMoved(MouseEvent event) {
showMapCoordinates(event.getPoint());
} else if (event.getSource() instanceof AbstractLayerItem) {
AbstractLayerItem item = (AbstractLayerItem) event.getSource();
- MouseEvent newEvent = new MouseEvent(rcCanvas, event.getID(), event.getWhen(), event.getModifiers(),
+ MouseEvent newEvent = new MouseEvent(rcCanvas, event.getID(), event.getWhen(), event.getModifiersEx(),
event.getX() + item.getX(), event.getY() + item.getY(), event.getXOnScreen(), event.getYOnScreen(),
event.getClickCount(), event.isPopupTrigger(), event.getButton());
rcCanvas.dispatchEvent(newEvent);
diff --git a/src/org/infinity/resource/are/viewer/BackgroundAnimationProvider.java b/src/org/infinity/resource/are/viewer/BackgroundAnimationProvider.java
index 2b32733a7..8e6db0838 100644
--- a/src/org/infinity/resource/are/viewer/BackgroundAnimationProvider.java
+++ b/src/org/infinity/resource/are/viewer/BackgroundAnimationProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/BasicLayer.java b/src/org/infinity/resource/are/viewer/BasicLayer.java
index d4ad1ece8..bf3745ab9 100644
--- a/src/org/infinity/resource/are/viewer/BasicLayer.java
+++ b/src/org/infinity/resource/are/viewer/BasicLayer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/BasicResource.java b/src/org/infinity/resource/are/viewer/BasicResource.java
index 2c48f48a2..2fd0d3efc 100644
--- a/src/org/infinity/resource/are/viewer/BasicResource.java
+++ b/src/org/infinity/resource/are/viewer/BasicResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerActor.java b/src/org/infinity/resource/are/viewer/LayerActor.java
index c037ddbf7..295e3e889 100644
--- a/src/org/infinity/resource/are/viewer/LayerActor.java
+++ b/src/org/infinity/resource/are/viewer/LayerActor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerAmbient.java b/src/org/infinity/resource/are/viewer/LayerAmbient.java
index 038ba726c..347be84e2 100644
--- a/src/org/infinity/resource/are/viewer/LayerAmbient.java
+++ b/src/org/infinity/resource/are/viewer/LayerAmbient.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerAnimation.java b/src/org/infinity/resource/are/viewer/LayerAnimation.java
index b53675bfa..1f6941451 100644
--- a/src/org/infinity/resource/are/viewer/LayerAnimation.java
+++ b/src/org/infinity/resource/are/viewer/LayerAnimation.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerAutomap.java b/src/org/infinity/resource/are/viewer/LayerAutomap.java
index 2ebc41c3e..497a7821e 100644
--- a/src/org/infinity/resource/are/viewer/LayerAutomap.java
+++ b/src/org/infinity/resource/are/viewer/LayerAutomap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerContainer.java b/src/org/infinity/resource/are/viewer/LayerContainer.java
index fe5c7cd12..e53b1bf08 100644
--- a/src/org/infinity/resource/are/viewer/LayerContainer.java
+++ b/src/org/infinity/resource/are/viewer/LayerContainer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerDoor.java b/src/org/infinity/resource/are/viewer/LayerDoor.java
index a112f9e0c..25414bdf8 100644
--- a/src/org/infinity/resource/are/viewer/LayerDoor.java
+++ b/src/org/infinity/resource/are/viewer/LayerDoor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerDoorPoly.java b/src/org/infinity/resource/are/viewer/LayerDoorPoly.java
index 7c28cd53b..2a921e639 100644
--- a/src/org/infinity/resource/are/viewer/LayerDoorPoly.java
+++ b/src/org/infinity/resource/are/viewer/LayerDoorPoly.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerEntrance.java b/src/org/infinity/resource/are/viewer/LayerEntrance.java
index 1ceeb54c3..b05544f50 100644
--- a/src/org/infinity/resource/are/viewer/LayerEntrance.java
+++ b/src/org/infinity/resource/are/viewer/LayerEntrance.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerManager.java b/src/org/infinity/resource/are/viewer/LayerManager.java
index aebdc385c..d452e4543 100644
--- a/src/org/infinity/resource/are/viewer/LayerManager.java
+++ b/src/org/infinity/resource/are/viewer/LayerManager.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObject.java b/src/org/infinity/resource/are/viewer/LayerObject.java
index b695ba37a..a1f4d9551 100644
--- a/src/org/infinity/resource/are/viewer/LayerObject.java
+++ b/src/org/infinity/resource/are/viewer/LayerObject.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectActor.java b/src/org/infinity/resource/are/viewer/LayerObjectActor.java
index 52e7f034f..0e47af6ef 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectActor.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectActor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectAmbient.java b/src/org/infinity/resource/are/viewer/LayerObjectAmbient.java
index 97e091316..b4d87a2ad 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectAmbient.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectAmbient.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectAnimation.java b/src/org/infinity/resource/are/viewer/LayerObjectAnimation.java
index 8a1176971..7f34683f0 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectAnimation.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectAnimation.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectAreActor.java b/src/org/infinity/resource/are/viewer/LayerObjectAreActor.java
index 21acdb792..b2445d19b 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectAreActor.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectAreActor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectAutomap.java b/src/org/infinity/resource/are/viewer/LayerObjectAutomap.java
index 54936e0a2..ce63454a5 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectAutomap.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectAutomap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectAutomapPST.java b/src/org/infinity/resource/are/viewer/LayerObjectAutomapPST.java
index 10047f00e..7f078b0bf 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectAutomapPST.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectAutomapPST.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectContainer.java b/src/org/infinity/resource/are/viewer/LayerObjectContainer.java
index f18f9266f..9aa9ee966 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectContainer.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectContainer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectDoor.java b/src/org/infinity/resource/are/viewer/LayerObjectDoor.java
index d4e50e4b4..ce95c4457 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectDoor.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectDoor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectDoorPoly.java b/src/org/infinity/resource/are/viewer/LayerObjectDoorPoly.java
index a61f3d8d0..a9463a640 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectDoorPoly.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectDoorPoly.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectEntrance.java b/src/org/infinity/resource/are/viewer/LayerObjectEntrance.java
index d269269e2..be211c46a 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectEntrance.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectEntrance.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectGlobalActor.java b/src/org/infinity/resource/are/viewer/LayerObjectGlobalActor.java
index 0547ac39b..e24f10d46 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectGlobalActor.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectGlobalActor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectIniActor.java b/src/org/infinity/resource/are/viewer/LayerObjectIniActor.java
index 104fbf9ef..b65495a04 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectIniActor.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectIniActor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectProTrap.java b/src/org/infinity/resource/are/viewer/LayerObjectProTrap.java
index cd0b126f7..35a15adb0 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectProTrap.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectProTrap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectRegion.java b/src/org/infinity/resource/are/viewer/LayerObjectRegion.java
index 3649e15b1..960c617be 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectRegion.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectRegion.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectSpawnPoint.java b/src/org/infinity/resource/are/viewer/LayerObjectSpawnPoint.java
index f642aef78..ce9acba36 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectSpawnPoint.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectSpawnPoint.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectTransition.java b/src/org/infinity/resource/are/viewer/LayerObjectTransition.java
index b22be23b5..d9877432b 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectTransition.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectTransition.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerObjectWallPoly.java b/src/org/infinity/resource/are/viewer/LayerObjectWallPoly.java
index ee634d8c9..3b141209a 100644
--- a/src/org/infinity/resource/are/viewer/LayerObjectWallPoly.java
+++ b/src/org/infinity/resource/are/viewer/LayerObjectWallPoly.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerProTrap.java b/src/org/infinity/resource/are/viewer/LayerProTrap.java
index 74b3f715d..c625adca6 100644
--- a/src/org/infinity/resource/are/viewer/LayerProTrap.java
+++ b/src/org/infinity/resource/are/viewer/LayerProTrap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerRegion.java b/src/org/infinity/resource/are/viewer/LayerRegion.java
index c328b2951..d07213c3b 100644
--- a/src/org/infinity/resource/are/viewer/LayerRegion.java
+++ b/src/org/infinity/resource/are/viewer/LayerRegion.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerSpawnPoint.java b/src/org/infinity/resource/are/viewer/LayerSpawnPoint.java
index 480d3d94e..aafc21818 100644
--- a/src/org/infinity/resource/are/viewer/LayerSpawnPoint.java
+++ b/src/org/infinity/resource/are/viewer/LayerSpawnPoint.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerTransition.java b/src/org/infinity/resource/are/viewer/LayerTransition.java
index 1888912af..a7c580d94 100644
--- a/src/org/infinity/resource/are/viewer/LayerTransition.java
+++ b/src/org/infinity/resource/are/viewer/LayerTransition.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/LayerWallPoly.java b/src/org/infinity/resource/are/viewer/LayerWallPoly.java
index 52ebe7980..e2490e087 100644
--- a/src/org/infinity/resource/are/viewer/LayerWallPoly.java
+++ b/src/org/infinity/resource/are/viewer/LayerWallPoly.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/ResourceAnimation.java b/src/org/infinity/resource/are/viewer/ResourceAnimation.java
index dd7d53c42..993735fdf 100644
--- a/src/org/infinity/resource/are/viewer/ResourceAnimation.java
+++ b/src/org/infinity/resource/are/viewer/ResourceAnimation.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/ResourceIcon.java b/src/org/infinity/resource/are/viewer/ResourceIcon.java
index 364acacbb..0b4dc9b6e 100644
--- a/src/org/infinity/resource/are/viewer/ResourceIcon.java
+++ b/src/org/infinity/resource/are/viewer/ResourceIcon.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/Settings.java b/src/org/infinity/resource/are/viewer/Settings.java
index ed73de444..3020e2423 100644
--- a/src/org/infinity/resource/are/viewer/Settings.java
+++ b/src/org/infinity/resource/are/viewer/Settings.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/SettingsDialog.java b/src/org/infinity/resource/are/viewer/SettingsDialog.java
index e1274ec68..e54a98d41 100644
--- a/src/org/infinity/resource/are/viewer/SettingsDialog.java
+++ b/src/org/infinity/resource/are/viewer/SettingsDialog.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/SharedResourceCache.java b/src/org/infinity/resource/are/viewer/SharedResourceCache.java
index a55ebbbcd..28d42efae 100644
--- a/src/org/infinity/resource/are/viewer/SharedResourceCache.java
+++ b/src/org/infinity/resource/are/viewer/SharedResourceCache.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/TilesetChangeEvent.java b/src/org/infinity/resource/are/viewer/TilesetChangeEvent.java
index 51b4531e3..bbcb1cb6d 100644
--- a/src/org/infinity/resource/are/viewer/TilesetChangeEvent.java
+++ b/src/org/infinity/resource/are/viewer/TilesetChangeEvent.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/TilesetChangeListener.java b/src/org/infinity/resource/are/viewer/TilesetChangeListener.java
index 2a9a922d7..3fc933fd4 100644
--- a/src/org/infinity/resource/are/viewer/TilesetChangeListener.java
+++ b/src/org/infinity/resource/are/viewer/TilesetChangeListener.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/TilesetRenderer.java b/src/org/infinity/resource/are/viewer/TilesetRenderer.java
index 94c5706e6..b1c147375 100644
--- a/src/org/infinity/resource/are/viewer/TilesetRenderer.java
+++ b/src/org/infinity/resource/are/viewer/TilesetRenderer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/ViewerConstants.java b/src/org/infinity/resource/are/viewer/ViewerConstants.java
index cba172d34..24bb5821a 100644
--- a/src/org/infinity/resource/are/viewer/ViewerConstants.java
+++ b/src/org/infinity/resource/are/viewer/ViewerConstants.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer;
diff --git a/src/org/infinity/resource/are/viewer/icon/ViewerIcons.java b/src/org/infinity/resource/are/viewer/icon/ViewerIcons.java
index 05f82e477..ebf90497e 100644
--- a/src/org/infinity/resource/are/viewer/icon/ViewerIcons.java
+++ b/src/org/infinity/resource/are/viewer/icon/ViewerIcons.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.are.viewer.icon;
diff --git a/src/org/infinity/resource/bcs/BafResource.java b/src/org/infinity/resource/bcs/BafResource.java
index 34bd8e21e..c0927460d 100644
--- a/src/org/infinity/resource/bcs/BafResource.java
+++ b/src/org/infinity/resource/bcs/BafResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
@@ -16,7 +16,6 @@
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Locale;
@@ -55,6 +54,7 @@
import org.infinity.resource.Writeable;
import org.infinity.resource.key.ResourceEntry;
import org.infinity.search.TextResourceSearcher;
+import org.infinity.util.Misc;
import org.infinity.util.StaticSimpleXorDecryptor;
import org.infinity.util.io.StreamUtils;
@@ -92,7 +92,7 @@ public BafResource(ResourceEntry entry) throws Exception {
buffer = StaticSimpleXorDecryptor.decrypt(buffer, 2);
}
text = StreamUtils.readString(buffer, buffer.limit(),
- Charset.forName(BrowserMenuBar.getInstance().getSelectedCharset()));
+ Misc.getCharsetFrom(BrowserMenuBar.getInstance().getSelectedCharset()));
}
// --------------------- Begin Interface ActionListener ---------------------
@@ -478,7 +478,7 @@ public String getDescription() {
int returnval = chooser.showSaveDialog(panel.getTopLevelAncestor());
if (returnval == JFileChooser.APPROVE_OPTION) {
try (BufferedWriter bw = Files.newBufferedWriter(chooser.getSelectedFile().toPath(),
- Charset.forName(BrowserMenuBar.getInstance().getSelectedCharset()))) {
+ Misc.getCharsetFrom(BrowserMenuBar.getInstance().getSelectedCharset()))) {
bw.write(codeText.getText());
JOptionPane.showMessageDialog(panel, "File saved to \"" + chooser.getSelectedFile().toString() + '\"',
"Save completed", JOptionPane.INFORMATION_MESSAGE);
diff --git a/src/org/infinity/resource/bcs/BcsAction.java b/src/org/infinity/resource/bcs/BcsAction.java
index 279af0539..9d19b8a23 100644
--- a/src/org/infinity/resource/bcs/BcsAction.java
+++ b/src/org/infinity/resource/bcs/BcsAction.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/BcsObject.java b/src/org/infinity/resource/bcs/BcsObject.java
index 34520fc30..f340b59b1 100644
--- a/src/org/infinity/resource/bcs/BcsObject.java
+++ b/src/org/infinity/resource/bcs/BcsObject.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/BcsResource.java b/src/org/infinity/resource/bcs/BcsResource.java
index a6cfa8d10..cc5baa255 100644
--- a/src/org/infinity/resource/bcs/BcsResource.java
+++ b/src/org/infinity/resource/bcs/BcsResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
@@ -16,7 +16,6 @@
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
@@ -328,7 +327,7 @@ public BcsResource(ResourceEntry entry) throws Exception {
buffer = StaticSimpleXorDecryptor.decrypt(buffer, 2);
}
text = StreamUtils.readString(buffer, buffer.limit(),
- Charset.forName(BrowserMenuBar.getInstance().getSelectedCharset()));
+ Misc.getCharsetFrom(BrowserMenuBar.getInstance().getSelectedCharset()));
}
// --------------------- Begin Interface ActionListener ---------------------
@@ -476,7 +475,7 @@ public String getDescription() {
int returnval = chooser.showSaveDialog(panel.getTopLevelAncestor());
if (returnval == JFileChooser.APPROVE_OPTION) {
try (BufferedWriter bw = Files.newBufferedWriter(chooser.getSelectedFile().toPath(),
- Charset.forName(BrowserMenuBar.getInstance().getSelectedCharset()))) {
+ Misc.getCharsetFrom(BrowserMenuBar.getInstance().getSelectedCharset()))) {
bw.write(sourceText.getText().replaceAll("\r?\n", Misc.LINE_SEPARATOR));
JOptionPane.showMessageDialog(panel, "File saved to \"" + chooser.getSelectedFile().toString() + '\"',
"Export complete", JOptionPane.INFORMATION_MESSAGE);
diff --git a/src/org/infinity/resource/bcs/BcsStructureBase.java b/src/org/infinity/resource/bcs/BcsStructureBase.java
index 9de8d8c30..6f03a3991 100644
--- a/src/org/infinity/resource/bcs/BcsStructureBase.java
+++ b/src/org/infinity/resource/bcs/BcsStructureBase.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/BcsTrigger.java b/src/org/infinity/resource/bcs/BcsTrigger.java
index 3bd756644..0a0c0a940 100644
--- a/src/org/infinity/resource/bcs/BcsTrigger.java
+++ b/src/org/infinity/resource/bcs/BcsTrigger.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/Compiler.java b/src/org/infinity/resource/bcs/Compiler.java
index 3c3a93e72..1786be39c 100644
--- a/src/org/infinity/resource/bcs/Compiler.java
+++ b/src/org/infinity/resource/bcs/Compiler.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/Decompiler.java b/src/org/infinity/resource/bcs/Decompiler.java
index 0fa460b4f..49bde0a17 100644
--- a/src/org/infinity/resource/bcs/Decompiler.java
+++ b/src/org/infinity/resource/bcs/Decompiler.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/ScriptInfo.java b/src/org/infinity/resource/bcs/ScriptInfo.java
index 6a23f674e..83ec70c68 100644
--- a/src/org/infinity/resource/bcs/ScriptInfo.java
+++ b/src/org/infinity/resource/bcs/ScriptInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/ScriptMessage.java b/src/org/infinity/resource/bcs/ScriptMessage.java
index 87505c7cf..257a7e7d7 100644
--- a/src/org/infinity/resource/bcs/ScriptMessage.java
+++ b/src/org/infinity/resource/bcs/ScriptMessage.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/ScriptType.java b/src/org/infinity/resource/bcs/ScriptType.java
index a4d8a1965..637089ac3 100644
--- a/src/org/infinity/resource/bcs/ScriptType.java
+++ b/src/org/infinity/resource/bcs/ScriptType.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/Signatures.java b/src/org/infinity/resource/bcs/Signatures.java
index 9ea7aa752..df5d03eac 100644
--- a/src/org/infinity/resource/bcs/Signatures.java
+++ b/src/org/infinity/resource/bcs/Signatures.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs;
diff --git a/src/org/infinity/resource/bcs/parser/BafNode.java b/src/org/infinity/resource/bcs/parser/BafNode.java
index c49149b8f..474bb3be8 100644
--- a/src/org/infinity/resource/bcs/parser/BafNode.java
+++ b/src/org/infinity/resource/bcs/parser/BafNode.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/BafNodeException.java b/src/org/infinity/resource/bcs/parser/BafNodeException.java
index 26fd9f2c9..a1597c68f 100644
--- a/src/org/infinity/resource/bcs/parser/BafNodeException.java
+++ b/src/org/infinity/resource/bcs/parser/BafNodeException.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/BafNodeTransformer.java b/src/org/infinity/resource/bcs/parser/BafNodeTransformer.java
index 06a85ee00..b081e1d76 100644
--- a/src/org/infinity/resource/bcs/parser/BafNodeTransformer.java
+++ b/src/org/infinity/resource/bcs/parser/BafNodeTransformer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/BafParser.java b/src/org/infinity/resource/bcs/parser/BafParser.java
index b2cfbf6ae..63ea91396 100644
--- a/src/org/infinity/resource/bcs/parser/BafParser.java
+++ b/src/org/infinity/resource/bcs/parser/BafParser.java
@@ -1,7 +1,7 @@
/* BafParser.java */
/* Generated By:JJTree&JavaCC: Do not edit this line. BafParser.java */
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/BafParserConstants.java b/src/org/infinity/resource/bcs/parser/BafParserConstants.java
index 4f64f9947..01cc850a7 100644
--- a/src/org/infinity/resource/bcs/parser/BafParserConstants.java
+++ b/src/org/infinity/resource/bcs/parser/BafParserConstants.java
@@ -1,6 +1,6 @@
/* Generated By:JJTree&JavaCC: Do not edit this line. BafParserConstants.java */
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/BafParserTokenManager.java b/src/org/infinity/resource/bcs/parser/BafParserTokenManager.java
index afe4409f4..4151ead3d 100644
--- a/src/org/infinity/resource/bcs/parser/BafParserTokenManager.java
+++ b/src/org/infinity/resource/bcs/parser/BafParserTokenManager.java
@@ -1,7 +1,7 @@
/* BafParserTokenManager.java */
/* Generated By:JJTree&JavaCC: Do not edit this line. BafParserTokenManager.java */
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/JavaCharStream.java b/src/org/infinity/resource/bcs/parser/JavaCharStream.java
index 5b471c220..373d76283 100644
--- a/src/org/infinity/resource/bcs/parser/JavaCharStream.java
+++ b/src/org/infinity/resource/bcs/parser/JavaCharStream.java
@@ -1,7 +1,7 @@
/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 6.0 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/ParseException.java b/src/org/infinity/resource/bcs/parser/ParseException.java
index f54754c71..9c7d2213c 100644
--- a/src/org/infinity/resource/bcs/parser/ParseException.java
+++ b/src/org/infinity/resource/bcs/parser/ParseException.java
@@ -1,7 +1,7 @@
/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 6.0 */
/* JavaCCOptions:KEEP_LINE_COL=null */
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/Token.java b/src/org/infinity/resource/bcs/parser/Token.java
index 117e615c8..aacbe5917 100644
--- a/src/org/infinity/resource/bcs/parser/Token.java
+++ b/src/org/infinity/resource/bcs/parser/Token.java
@@ -1,7 +1,7 @@
/* Generated By:JavaCC: Do not edit this line. Token.java Version 6.0 */
/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/bcs/parser/TokenMgrError.java b/src/org/infinity/resource/bcs/parser/TokenMgrError.java
index 7cd865d4d..46c4fabb5 100644
--- a/src/org/infinity/resource/bcs/parser/TokenMgrError.java
+++ b/src/org/infinity/resource/bcs/parser/TokenMgrError.java
@@ -1,7 +1,7 @@
/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 6.0 */
/* JavaCCOptions: */
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.bcs.parser;
diff --git a/src/org/infinity/resource/chu/ChuResource.java b/src/org/infinity/resource/chu/ChuResource.java
index 2cda63941..ece9dcf40 100644
--- a/src/org/infinity/resource/chu/ChuResource.java
+++ b/src/org/infinity/resource/chu/ChuResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.chu;
diff --git a/src/org/infinity/resource/chu/Control.java b/src/org/infinity/resource/chu/Control.java
index b9e52cff1..62fbe8b11 100644
--- a/src/org/infinity/resource/chu/Control.java
+++ b/src/org/infinity/resource/chu/Control.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.chu;
diff --git a/src/org/infinity/resource/chu/Viewer.java b/src/org/infinity/resource/chu/Viewer.java
index b1dadc7d9..7fcfe3819 100644
--- a/src/org/infinity/resource/chu/Viewer.java
+++ b/src/org/infinity/resource/chu/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.chu;
diff --git a/src/org/infinity/resource/chu/Window.java b/src/org/infinity/resource/chu/Window.java
index 081ec4ee7..248edd50f 100644
--- a/src/org/infinity/resource/chu/Window.java
+++ b/src/org/infinity/resource/chu/Window.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.chu;
diff --git a/src/org/infinity/resource/cre/CreResource.java b/src/org/infinity/resource/cre/CreResource.java
index 832662a47..7126acb7a 100644
--- a/src/org/infinity/resource/cre/CreResource.java
+++ b/src/org/infinity/resource/cre/CreResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
@@ -722,6 +722,50 @@ public static String getSearchString(InputStream is) throws IOException {
return retVal.trim();
}
+ /**
+ * Returns the script name from the given CRE resource buffer.
+ * @param buffer A {@code ByteBuffer} containing CRE or CHR resource data.
+ * @return Script name of the creature, empty string otherwise.
+ * @throws IOException If the buffer does not contain valid resource data.
+ */
+ public static String getScriptName(ByteBuffer buffer) throws IOException {
+ String retVal = "";
+ String sig = StreamUtils.readString(buffer, 0, 4);
+ String ver = StreamUtils.readString(buffer, 4, 4);
+ int startOfs = 0;
+ if (sig.equals("CHR ")) {
+ switch (ver) {
+ case "V2.2":
+ startOfs = 0x224;
+ break;
+ default:
+ startOfs = 0x64;
+ }
+ ver = StreamUtils.readString(buffer, startOfs + 4, 4);
+ } else if (!sig.equals("CRE ")) {
+ throw new IOException("Unsupported resource signature: " + sig);
+ }
+
+ switch (ver) {
+ case "V1.1":
+ case "V1.2":
+ retVal = StreamUtils.readString(buffer, startOfs + 0x324);
+ break;
+ case "V2.2":
+ retVal = StreamUtils.readString(buffer, startOfs + 0x394);
+ break;
+ case "V9.0":
+ case "V9.1":
+ retVal = StreamUtils.readString(buffer, startOfs + 0x2e8);
+ break;
+ default:
+ retVal = StreamUtils.readString(buffer, startOfs + 0x280);
+ }
+
+ retVal = retVal.trim();
+ return retVal;
+ }
+
public CreResource(String name) throws Exception {
super(null, name,
StructureFactory.getInstance().createStructure(StructureFactory.ResType.RES_CRE, null, null).getBuffer(), 0);
diff --git a/src/org/infinity/resource/cre/IndexNumber.java b/src/org/infinity/resource/cre/IndexNumber.java
index f98c67829..3e7acb2ca 100644
--- a/src/org/infinity/resource/cre/IndexNumber.java
+++ b/src/org/infinity/resource/cre/IndexNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/Item.java b/src/org/infinity/resource/cre/Item.java
index b7317f3f5..ebe12cdd7 100644
--- a/src/org/infinity/resource/cre/Item.java
+++ b/src/org/infinity/resource/cre/Item.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/Iwd2Ability.java b/src/org/infinity/resource/cre/Iwd2Ability.java
index fbc35a774..9c66df9a1 100644
--- a/src/org/infinity/resource/cre/Iwd2Ability.java
+++ b/src/org/infinity/resource/cre/Iwd2Ability.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/Iwd2Shape.java b/src/org/infinity/resource/cre/Iwd2Shape.java
index 64ad9be74..5601ed842 100644
--- a/src/org/infinity/resource/cre/Iwd2Shape.java
+++ b/src/org/infinity/resource/cre/Iwd2Shape.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/Iwd2Song.java b/src/org/infinity/resource/cre/Iwd2Song.java
index d3e1c6760..fff6db8f9 100644
--- a/src/org/infinity/resource/cre/Iwd2Song.java
+++ b/src/org/infinity/resource/cre/Iwd2Song.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/Iwd2Spell.java b/src/org/infinity/resource/cre/Iwd2Spell.java
index d0e4c7af2..b289fbc57 100644
--- a/src/org/infinity/resource/cre/Iwd2Spell.java
+++ b/src/org/infinity/resource/cre/Iwd2Spell.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/Iwd2Struct.java b/src/org/infinity/resource/cre/Iwd2Struct.java
index d2d231528..4ee43c9c1 100644
--- a/src/org/infinity/resource/cre/Iwd2Struct.java
+++ b/src/org/infinity/resource/cre/Iwd2Struct.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/KnownSpells.java b/src/org/infinity/resource/cre/KnownSpells.java
index 774108f85..a761c14dd 100644
--- a/src/org/infinity/resource/cre/KnownSpells.java
+++ b/src/org/infinity/resource/cre/KnownSpells.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/MemorizedSpells.java b/src/org/infinity/resource/cre/MemorizedSpells.java
index 9b0eb9de0..45edc44f0 100644
--- a/src/org/infinity/resource/cre/MemorizedSpells.java
+++ b/src/org/infinity/resource/cre/MemorizedSpells.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/SpellMemorization.java b/src/org/infinity/resource/cre/SpellMemorization.java
index 4081f4395..c8e62387e 100644
--- a/src/org/infinity/resource/cre/SpellMemorization.java
+++ b/src/org/infinity/resource/cre/SpellMemorization.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/Viewer.java b/src/org/infinity/resource/cre/Viewer.java
index aa9d9d303..201251c75 100644
--- a/src/org/infinity/resource/cre/Viewer.java
+++ b/src/org/infinity/resource/cre/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/ViewerAnimation.java b/src/org/infinity/resource/cre/ViewerAnimation.java
index 98fdc3f69..0acaa11e9 100644
--- a/src/org/infinity/resource/cre/ViewerAnimation.java
+++ b/src/org/infinity/resource/cre/ViewerAnimation.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/ViewerItems.java b/src/org/infinity/resource/cre/ViewerItems.java
index 60a2de207..8c87f6ff7 100644
--- a/src/org/infinity/resource/cre/ViewerItems.java
+++ b/src/org/infinity/resource/cre/ViewerItems.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/ViewerSpells.java b/src/org/infinity/resource/cre/ViewerSpells.java
index b61081811..f5f18e27c 100644
--- a/src/org/infinity/resource/cre/ViewerSpells.java
+++ b/src/org/infinity/resource/cre/ViewerSpells.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre;
diff --git a/src/org/infinity/resource/cre/browser/AttributesPanel.java b/src/org/infinity/resource/cre/browser/AttributesPanel.java
index 224fc4ff8..8029856d9 100644
--- a/src/org/infinity/resource/cre/browser/AttributesPanel.java
+++ b/src/org/infinity/resource/cre/browser/AttributesPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/ColorSelectionModel.java b/src/org/infinity/resource/cre/browser/ColorSelectionModel.java
index 0700a7d78..01fd14378 100644
--- a/src/org/infinity/resource/cre/browser/ColorSelectionModel.java
+++ b/src/org/infinity/resource/cre/browser/ColorSelectionModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/CreUtils.java b/src/org/infinity/resource/cre/browser/CreUtils.java
index c8482321a..24cb50d41 100644
--- a/src/org/infinity/resource/cre/browser/CreUtils.java
+++ b/src/org/infinity/resource/cre/browser/CreUtils.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
@@ -129,7 +129,7 @@ public static ItemInfo getEquipmentHelmet(CreResource cre) {
.getResourceEntry(((IsReference) item.getAttribute(Item.CRE_ITEM_RESREF)).getResourceName());
if (itemEntry != null) {
try {
- retVal = ItemInfo.get(itemEntry);
+ retVal = ItemInfo.getValidated(itemEntry);
retVal.overrideDroppableFlag(((Flag) item.getAttribute(Item.CRE_ITEM_FLAGS)).isFlagSet(3));
} catch (Exception e) {
e.printStackTrace();
@@ -169,7 +169,7 @@ public static ItemInfo getEquipmentArmor(CreResource cre) {
.getResourceEntry(((IsReference) item.getAttribute(Item.CRE_ITEM_RESREF)).getResourceName());
if (itemEntry != null) {
try {
- retVal = ItemInfo.get(itemEntry);
+ retVal = ItemInfo.getValidated(itemEntry);
retVal.overrideDroppableFlag(((Flag) item.getAttribute(Item.CRE_ITEM_FLAGS)).isFlagSet(3));
} catch (Exception e) {
e.printStackTrace();
@@ -217,7 +217,7 @@ public static ItemInfo getEquipmentShield(CreResource cre) {
.getResourceEntry(((IsReference) item.getAttribute(Item.CRE_ITEM_RESREF)).getResourceName());
if (itemEntry != null) {
try {
- retVal = ItemInfo.get(itemEntry);
+ retVal = ItemInfo.getValidated(itemEntry);
retVal.overrideDroppableFlag(((Flag) item.getAttribute(Item.CRE_ITEM_FLAGS)).isFlagSet(3));
} catch (Exception e) {
e.printStackTrace();
@@ -263,7 +263,7 @@ public static ItemInfo getEquipmentWeapon(CreResource cre) {
.getResourceEntry(((IsReference) item.getAttribute(Item.CRE_ITEM_RESREF)).getResourceName());
if (itemEntry != null) {
try {
- retVal = ItemInfo.get(itemEntry);
+ retVal = ItemInfo.getValidated(itemEntry);
retVal.overrideDroppableFlag(((Flag) item.getAttribute(Item.CRE_ITEM_FLAGS)).isFlagSet(3));
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/org/infinity/resource/cre/browser/CreatureAnimationModel.java b/src/org/infinity/resource/cre/browser/CreatureAnimationModel.java
index fff5b9872..6ad9f0a78 100644
--- a/src/org/infinity/resource/cre/browser/CreatureAnimationModel.java
+++ b/src/org/infinity/resource/cre/browser/CreatureAnimationModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/CreatureBrowser.java b/src/org/infinity/resource/cre/browser/CreatureBrowser.java
index ec5a77446..b68ac1dbc 100644
--- a/src/org/infinity/resource/cre/browser/CreatureBrowser.java
+++ b/src/org/infinity/resource/cre/browser/CreatureBrowser.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/CreatureControlModel.java b/src/org/infinity/resource/cre/browser/CreatureControlModel.java
index 4e6d38751..e2efa5fe1 100644
--- a/src/org/infinity/resource/cre/browser/CreatureControlModel.java
+++ b/src/org/infinity/resource/cre/browser/CreatureControlModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/CreatureControlPanel.java b/src/org/infinity/resource/cre/browser/CreatureControlPanel.java
index 56adeddfb..08b452383 100644
--- a/src/org/infinity/resource/cre/browser/CreatureControlPanel.java
+++ b/src/org/infinity/resource/cre/browser/CreatureControlPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/CreatureSelectionModel.java b/src/org/infinity/resource/cre/browser/CreatureSelectionModel.java
index 967ed5b59..16ed74a93 100644
--- a/src/org/infinity/resource/cre/browser/CreatureSelectionModel.java
+++ b/src/org/infinity/resource/cre/browser/CreatureSelectionModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/CreatureStatusModel.java b/src/org/infinity/resource/cre/browser/CreatureStatusModel.java
index 80c448cd5..84731d9e1 100644
--- a/src/org/infinity/resource/cre/browser/CreatureStatusModel.java
+++ b/src/org/infinity/resource/cre/browser/CreatureStatusModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/DecoderAttributesTableModel.java b/src/org/infinity/resource/cre/browser/DecoderAttributesTableModel.java
index 054f53710..a46195e4a 100644
--- a/src/org/infinity/resource/cre/browser/DecoderAttributesTableModel.java
+++ b/src/org/infinity/resource/cre/browser/DecoderAttributesTableModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/ItemSelectionModel.java b/src/org/infinity/resource/cre/browser/ItemSelectionModel.java
index 7170f8774..557781131 100644
--- a/src/org/infinity/resource/cre/browser/ItemSelectionModel.java
+++ b/src/org/infinity/resource/cre/browser/ItemSelectionModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/MediaPanel.java b/src/org/infinity/resource/cre/browser/MediaPanel.java
index cc02dc5fc..bad015b1d 100644
--- a/src/org/infinity/resource/cre/browser/MediaPanel.java
+++ b/src/org/infinity/resource/cre/browser/MediaPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/RenderPanel.java b/src/org/infinity/resource/cre/browser/RenderPanel.java
index 871676675..7871ea845 100644
--- a/src/org/infinity/resource/cre/browser/RenderPanel.java
+++ b/src/org/infinity/resource/cre/browser/RenderPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/SettingsPanel.java b/src/org/infinity/resource/cre/browser/SettingsPanel.java
index 014450dc4..3177bac64 100644
--- a/src/org/infinity/resource/cre/browser/SettingsPanel.java
+++ b/src/org/infinity/resource/cre/browser/SettingsPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser;
diff --git a/src/org/infinity/resource/cre/browser/bg/Backgrounds.java b/src/org/infinity/resource/cre/browser/bg/Backgrounds.java
index 94db9654e..7f663fdcc 100644
--- a/src/org/infinity/resource/cre/browser/bg/Backgrounds.java
+++ b/src/org/infinity/resource/cre/browser/bg/Backgrounds.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser.bg;
diff --git a/src/org/infinity/resource/cre/browser/icon/Icons.java b/src/org/infinity/resource/cre/browser/icon/Icons.java
index d95d6777d..a4eb02c84 100644
--- a/src/org/infinity/resource/cre/browser/icon/Icons.java
+++ b/src/org/infinity/resource/cre/browser/icon/Icons.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.browser.icon;
diff --git a/src/org/infinity/resource/cre/decoder/AmbientDecoder.java b/src/org/infinity/resource/cre/decoder/AmbientDecoder.java
index ba50b7740..70966bccd 100644
--- a/src/org/infinity/resource/cre/decoder/AmbientDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/AmbientDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/AmbientStaticDecoder.java b/src/org/infinity/resource/cre/decoder/AmbientStaticDecoder.java
index d5369e196..17663d200 100644
--- a/src/org/infinity/resource/cre/decoder/AmbientStaticDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/AmbientStaticDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/CharacterBaseDecoder.java b/src/org/infinity/resource/cre/decoder/CharacterBaseDecoder.java
index bb8a5e4ef..c1ecf687f 100644
--- a/src/org/infinity/resource/cre/decoder/CharacterBaseDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/CharacterBaseDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/CharacterDecoder.java b/src/org/infinity/resource/cre/decoder/CharacterDecoder.java
index 53f8097a1..fcebaf7b3 100644
--- a/src/org/infinity/resource/cre/decoder/CharacterDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/CharacterDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/CharacterOldDecoder.java b/src/org/infinity/resource/cre/decoder/CharacterOldDecoder.java
index ba71a99b8..1d62e58a6 100644
--- a/src/org/infinity/resource/cre/decoder/CharacterOldDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/CharacterOldDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/EffectDecoder.java b/src/org/infinity/resource/cre/decoder/EffectDecoder.java
index fe2838b53..ef7d4d3eb 100644
--- a/src/org/infinity/resource/cre/decoder/EffectDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/EffectDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/FlyingDecoder.java b/src/org/infinity/resource/cre/decoder/FlyingDecoder.java
index 912c46b7f..808de08d6 100644
--- a/src/org/infinity/resource/cre/decoder/FlyingDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/FlyingDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterAnkhegDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterAnkhegDecoder.java
index cfdeb421c..6982d1306 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterAnkhegDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterAnkhegDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterDecoder.java
index 203c9fdf7..3ded7ffab 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterIcewindDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterIcewindDecoder.java
index 30febef6a..62c38b8aa 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterIcewindDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterIcewindDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterLarge16Decoder.java b/src/org/infinity/resource/cre/decoder/MonsterLarge16Decoder.java
index 5fdd655cf..9d87dff4e 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterLarge16Decoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterLarge16Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterLargeDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterLargeDecoder.java
index 80d2c15cb..b51be8516 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterLargeDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterLargeDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterLayeredDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterLayeredDecoder.java
index cb65fc121..28605fceb 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterLayeredDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterLayeredDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterLayeredSpellDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterLayeredSpellDecoder.java
index b80a05db7..37c0c19d4 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterLayeredSpellDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterLayeredSpellDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterMultiDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterMultiDecoder.java
index cd0afebc5..e579d8604 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterMultiDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterMultiDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterMultiNewDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterMultiNewDecoder.java
index 631758c57..93cdaf282 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterMultiNewDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterMultiNewDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterOldDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterOldDecoder.java
index 8f9cfa3a2..76f0980db 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterOldDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterOldDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterPlanescapeDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterPlanescapeDecoder.java
index b4eb6eea6..c288dced8 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterPlanescapeDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterPlanescapeDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/MonsterQuadrantDecoder.java b/src/org/infinity/resource/cre/decoder/MonsterQuadrantDecoder.java
index b8213b287..3caa66b5d 100644
--- a/src/org/infinity/resource/cre/decoder/MonsterQuadrantDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/MonsterQuadrantDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/PlaceholderDecoder.java b/src/org/infinity/resource/cre/decoder/PlaceholderDecoder.java
index 59c36090d..89d53e599 100644
--- a/src/org/infinity/resource/cre/decoder/PlaceholderDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/PlaceholderDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/QuadrantsBaseDecoder.java b/src/org/infinity/resource/cre/decoder/QuadrantsBaseDecoder.java
index 98fcb7021..e757a3654 100644
--- a/src/org/infinity/resource/cre/decoder/QuadrantsBaseDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/QuadrantsBaseDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/SpriteDecoder.java b/src/org/infinity/resource/cre/decoder/SpriteDecoder.java
index 95d6e0fbf..a277925a5 100644
--- a/src/org/infinity/resource/cre/decoder/SpriteDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/SpriteDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/TownStaticDecoder.java b/src/org/infinity/resource/cre/decoder/TownStaticDecoder.java
index c5354c4e7..e7bd2e4de 100644
--- a/src/org/infinity/resource/cre/decoder/TownStaticDecoder.java
+++ b/src/org/infinity/resource/cre/decoder/TownStaticDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder;
diff --git a/src/org/infinity/resource/cre/decoder/tables/InfinityTables.java b/src/org/infinity/resource/cre/decoder/tables/InfinityTables.java
index 1d03c6a6c..5ffa65c93 100644
--- a/src/org/infinity/resource/cre/decoder/tables/InfinityTables.java
+++ b/src/org/infinity/resource/cre/decoder/tables/InfinityTables.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.tables;
diff --git a/src/org/infinity/resource/cre/decoder/tables/SpriteTables.java b/src/org/infinity/resource/cre/decoder/tables/SpriteTables.java
index 374c25a74..b9c701bd8 100644
--- a/src/org/infinity/resource/cre/decoder/tables/SpriteTables.java
+++ b/src/org/infinity/resource/cre/decoder/tables/SpriteTables.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.tables;
diff --git a/src/org/infinity/resource/cre/decoder/util/AnimationInfo.java b/src/org/infinity/resource/cre/decoder/util/AnimationInfo.java
index 01e8e5d4d..f3e17033c 100644
--- a/src/org/infinity/resource/cre/decoder/util/AnimationInfo.java
+++ b/src/org/infinity/resource/cre/decoder/util/AnimationInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/CreatureInfo.java b/src/org/infinity/resource/cre/decoder/util/CreatureInfo.java
index e3a96f767..373a99c09 100644
--- a/src/org/infinity/resource/cre/decoder/util/CreatureInfo.java
+++ b/src/org/infinity/resource/cre/decoder/util/CreatureInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
@@ -889,7 +889,7 @@ private void initEquipmentItem(ItemSlots slot, int itemIndex, List
if (itmEntry != null) {
try {
- ItemInfo itemInfo = ItemInfo.get(itmEntry);
+ ItemInfo itemInfo = ItemInfo.getValidated(itmEntry);
itemInfo.overrideDroppableFlag(isUndroppable);
equipment.put(slot, itemInfo);
} catch (Exception e) {
@@ -969,7 +969,7 @@ private int getEffectiveWeaponIndex(int slotIndex) {
+ ((IsNumeric) cre.getAttribute(CreResource.CRE_OFFSET_ITEMS)).getValue();
try {
String itmResref = ((IsTextual) cre.getAttribute(ofsItems + itmIndex * 20, true)).getText();
- info = ItemInfo.get(ResourceFactory.getResourceEntry(itmResref + ".ITM"));
+ info = ItemInfo.getValidated(ResourceFactory.getResourceEntry(itmResref + ".ITM"));
} catch (Exception e) {
return retVal;
}
diff --git a/src/org/infinity/resource/cre/decoder/util/CycleDef.java b/src/org/infinity/resource/cre/decoder/util/CycleDef.java
index 92de6f27e..aebdbbfb0 100644
--- a/src/org/infinity/resource/cre/decoder/util/CycleDef.java
+++ b/src/org/infinity/resource/cre/decoder/util/CycleDef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/DecoderAttribute.java b/src/org/infinity/resource/cre/decoder/util/DecoderAttribute.java
index b98e8fffa..9da589577 100644
--- a/src/org/infinity/resource/cre/decoder/util/DecoderAttribute.java
+++ b/src/org/infinity/resource/cre/decoder/util/DecoderAttribute.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/DirDef.java b/src/org/infinity/resource/cre/decoder/util/DirDef.java
index fcb9094c6..048752955 100644
--- a/src/org/infinity/resource/cre/decoder/util/DirDef.java
+++ b/src/org/infinity/resource/cre/decoder/util/DirDef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/Direction.java b/src/org/infinity/resource/cre/decoder/util/Direction.java
index 3cb3df831..738fcc9b2 100644
--- a/src/org/infinity/resource/cre/decoder/util/Direction.java
+++ b/src/org/infinity/resource/cre/decoder/util/Direction.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/EffectInfo.java b/src/org/infinity/resource/cre/decoder/util/EffectInfo.java
index 472ba6289..93a5507ab 100644
--- a/src/org/infinity/resource/cre/decoder/util/EffectInfo.java
+++ b/src/org/infinity/resource/cre/decoder/util/EffectInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/FrameInfo.java b/src/org/infinity/resource/cre/decoder/util/FrameInfo.java
index c7789bed1..d8c28cb73 100644
--- a/src/org/infinity/resource/cre/decoder/util/FrameInfo.java
+++ b/src/org/infinity/resource/cre/decoder/util/FrameInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/ItemInfo.java b/src/org/infinity/resource/cre/decoder/util/ItemInfo.java
index f7c5988cd..21639de04 100644
--- a/src/org/infinity/resource/cre/decoder/util/ItemInfo.java
+++ b/src/org/infinity/resource/cre/decoder/util/ItemInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
@@ -7,7 +7,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -371,6 +370,24 @@ public static void clearCache() {
}
}
+ /**
+ * Removes the specified ITM {@code ResourceEntry} instances from the cache.
+ *
+ * @param entries Sequence of ITM {@codee ResourceEntry} instances to remove from the cache.
+ * @return Number of successfully removed entries.
+ */
+ public static int removeFromCache(ResourceEntry... entries) {
+ int retVal = 0;
+ for (final ResourceEntry entry: entries) {
+ synchronized (ITEM_CACHE) {
+ if (ITEM_CACHE.remove(entry) != null) {
+ retVal++;
+ }
+ }
+ }
+ return retVal;
+ }
+
/**
* Returns an {@code ItemInfo} list filtered by the specified predicate.
*
@@ -1044,7 +1061,7 @@ private EffectEntry(byte[] effect) {
this.timing = buf.getByte(0xc);
this.dispelResist = buf.getByte(0xd);
this.duration = buf.getByte(0xe);
- this.resource = DynamicArray.getString(effect, 0x14, 8, Charset.forName("windows-1252"));
+ this.resource = DynamicArray.getString(effect, 0x14, 8, Misc.CHARSET_DEFAULT);
this.savingThrowFlags = buf.getInt(0x24);
this.savingThrow = buf.getInt(0x28);
this.special = buf.getInt(0x2c);
diff --git a/src/org/infinity/resource/cre/decoder/util/NumberRange.java b/src/org/infinity/resource/cre/decoder/util/NumberRange.java
index 2ec937261..b7d0a9be3 100644
--- a/src/org/infinity/resource/cre/decoder/util/NumberRange.java
+++ b/src/org/infinity/resource/cre/decoder/util/NumberRange.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/SegmentDef.java b/src/org/infinity/resource/cre/decoder/util/SegmentDef.java
index 88583cf28..c81a69f39 100644
--- a/src/org/infinity/resource/cre/decoder/util/SegmentDef.java
+++ b/src/org/infinity/resource/cre/decoder/util/SegmentDef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/SeqDef.java b/src/org/infinity/resource/cre/decoder/util/SeqDef.java
index 14a9c8fc3..2c9325438 100644
--- a/src/org/infinity/resource/cre/decoder/util/SeqDef.java
+++ b/src/org/infinity/resource/cre/decoder/util/SeqDef.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/Sequence.java b/src/org/infinity/resource/cre/decoder/util/Sequence.java
index 868c4bd9a..7e795d1fe 100644
--- a/src/org/infinity/resource/cre/decoder/util/Sequence.java
+++ b/src/org/infinity/resource/cre/decoder/util/Sequence.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/cre/decoder/util/SpriteUtils.java b/src/org/infinity/resource/cre/decoder/util/SpriteUtils.java
index d907adcc4..fd07c52ab 100644
--- a/src/org/infinity/resource/cre/decoder/util/SpriteUtils.java
+++ b/src/org/infinity/resource/cre/decoder/util/SpriteUtils.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.cre.decoder.util;
diff --git a/src/org/infinity/resource/dlg/AbstractCode.java b/src/org/infinity/resource/dlg/AbstractCode.java
index 2d6cc891b..78652fcf2 100644
--- a/src/org/infinity/resource/dlg/AbstractCode.java
+++ b/src/org/infinity/resource/dlg/AbstractCode.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/Action.java b/src/org/infinity/resource/dlg/Action.java
index dcfe26b70..e520f92e0 100644
--- a/src/org/infinity/resource/dlg/Action.java
+++ b/src/org/infinity/resource/dlg/Action.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/BrokenReference.java b/src/org/infinity/resource/dlg/BrokenReference.java
index 8bd7a5cb0..4f234ffa2 100644
--- a/src/org/infinity/resource/dlg/BrokenReference.java
+++ b/src/org/infinity/resource/dlg/BrokenReference.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/BrokenStateItem.java b/src/org/infinity/resource/dlg/BrokenStateItem.java
index 9b43ab7fe..17dee644a 100644
--- a/src/org/infinity/resource/dlg/BrokenStateItem.java
+++ b/src/org/infinity/resource/dlg/BrokenStateItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/BrokenTransitionItem.java b/src/org/infinity/resource/dlg/BrokenTransitionItem.java
index 0c357c39a..58d261081 100644
--- a/src/org/infinity/resource/dlg/BrokenTransitionItem.java
+++ b/src/org/infinity/resource/dlg/BrokenTransitionItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/DlgElement.java b/src/org/infinity/resource/dlg/DlgElement.java
index 79512e270..07f86e783 100644
--- a/src/org/infinity/resource/dlg/DlgElement.java
+++ b/src/org/infinity/resource/dlg/DlgElement.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/DlgItem.java b/src/org/infinity/resource/dlg/DlgItem.java
index 812a86afb..e941da664 100644
--- a/src/org/infinity/resource/dlg/DlgItem.java
+++ b/src/org/infinity/resource/dlg/DlgItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/DlgResource.java b/src/org/infinity/resource/dlg/DlgResource.java
index aa0efb4ad..237e810e4 100644
--- a/src/org/infinity/resource/dlg/DlgResource.java
+++ b/src/org/infinity/resource/dlg/DlgResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/DlgTreeCellRenderer.java b/src/org/infinity/resource/dlg/DlgTreeCellRenderer.java
index 885393b3d..da294df26 100644
--- a/src/org/infinity/resource/dlg/DlgTreeCellRenderer.java
+++ b/src/org/infinity/resource/dlg/DlgTreeCellRenderer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/DlgTreeModel.java b/src/org/infinity/resource/dlg/DlgTreeModel.java
index 8d62756d7..2d27d3d36 100644
--- a/src/org/infinity/resource/dlg/DlgTreeModel.java
+++ b/src/org/infinity/resource/dlg/DlgTreeModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/ItemBase.java b/src/org/infinity/resource/dlg/ItemBase.java
index c7e4d7415..bbf557d35 100644
--- a/src/org/infinity/resource/dlg/ItemBase.java
+++ b/src/org/infinity/resource/dlg/ItemBase.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/OrphanStates.java b/src/org/infinity/resource/dlg/OrphanStates.java
index a32bef47c..d4c15a215 100644
--- a/src/org/infinity/resource/dlg/OrphanStates.java
+++ b/src/org/infinity/resource/dlg/OrphanStates.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/OrphanTransitions.java b/src/org/infinity/resource/dlg/OrphanTransitions.java
index f63cfd11d..81cbe34ed 100644
--- a/src/org/infinity/resource/dlg/OrphanTransitions.java
+++ b/src/org/infinity/resource/dlg/OrphanTransitions.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/ResponseTrigger.java b/src/org/infinity/resource/dlg/ResponseTrigger.java
index 19b73b3d4..dae30d9d8 100644
--- a/src/org/infinity/resource/dlg/ResponseTrigger.java
+++ b/src/org/infinity/resource/dlg/ResponseTrigger.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/State.java b/src/org/infinity/resource/dlg/State.java
index dc693a673..e7673e9c8 100644
--- a/src/org/infinity/resource/dlg/State.java
+++ b/src/org/infinity/resource/dlg/State.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/StateItem.java b/src/org/infinity/resource/dlg/StateItem.java
index a232fc9fc..37aa24ec2 100644
--- a/src/org/infinity/resource/dlg/StateItem.java
+++ b/src/org/infinity/resource/dlg/StateItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/StateTrigger.java b/src/org/infinity/resource/dlg/StateTrigger.java
index f4e77004f..e36f84513 100644
--- a/src/org/infinity/resource/dlg/StateTrigger.java
+++ b/src/org/infinity/resource/dlg/StateTrigger.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/Transition.java b/src/org/infinity/resource/dlg/Transition.java
index a8ff215c2..258891785 100644
--- a/src/org/infinity/resource/dlg/Transition.java
+++ b/src/org/infinity/resource/dlg/Transition.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/TransitionItem.java b/src/org/infinity/resource/dlg/TransitionItem.java
index 9e9fb6c17..0726b317e 100644
--- a/src/org/infinity/resource/dlg/TransitionItem.java
+++ b/src/org/infinity/resource/dlg/TransitionItem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/TreeItemEntry.java b/src/org/infinity/resource/dlg/TreeItemEntry.java
index 8c79f5b58..688974ec7 100644
--- a/src/org/infinity/resource/dlg/TreeItemEntry.java
+++ b/src/org/infinity/resource/dlg/TreeItemEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/TreeViewer.java b/src/org/infinity/resource/dlg/TreeViewer.java
index c986a92e9..31ddb1dab 100644
--- a/src/org/infinity/resource/dlg/TreeViewer.java
+++ b/src/org/infinity/resource/dlg/TreeViewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/TreeWorker.java b/src/org/infinity/resource/dlg/TreeWorker.java
index 9b51846b5..da9495add 100644
--- a/src/org/infinity/resource/dlg/TreeWorker.java
+++ b/src/org/infinity/resource/dlg/TreeWorker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/dlg/Viewer.java b/src/org/infinity/resource/dlg/Viewer.java
index 7107c6b5f..737da8dbd 100644
--- a/src/org/infinity/resource/dlg/Viewer.java
+++ b/src/org/infinity/resource/dlg/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.dlg;
diff --git a/src/org/infinity/resource/effects/BaseOpcode.java b/src/org/infinity/resource/effects/BaseOpcode.java
index 323fbac90..2df494d1a 100644
--- a/src/org/infinity/resource/effects/BaseOpcode.java
+++ b/src/org/infinity/resource/effects/BaseOpcode.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/DefaultOpcode.java b/src/org/infinity/resource/effects/DefaultOpcode.java
index 269e1e461..89a99839b 100644
--- a/src/org/infinity/resource/effects/DefaultOpcode.java
+++ b/src/org/infinity/resource/effects/DefaultOpcode.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode000.java b/src/org/infinity/resource/effects/Opcode000.java
index 0f2952154..09222d1b1 100644
--- a/src/org/infinity/resource/effects/Opcode000.java
+++ b/src/org/infinity/resource/effects/Opcode000.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode001.java b/src/org/infinity/resource/effects/Opcode001.java
index e951fea16..084e3cc2f 100644
--- a/src/org/infinity/resource/effects/Opcode001.java
+++ b/src/org/infinity/resource/effects/Opcode001.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode002.java b/src/org/infinity/resource/effects/Opcode002.java
index 610c24ca5..13410831f 100644
--- a/src/org/infinity/resource/effects/Opcode002.java
+++ b/src/org/infinity/resource/effects/Opcode002.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode003.java b/src/org/infinity/resource/effects/Opcode003.java
index 8b646a0a9..60f6814f5 100644
--- a/src/org/infinity/resource/effects/Opcode003.java
+++ b/src/org/infinity/resource/effects/Opcode003.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode004.java b/src/org/infinity/resource/effects/Opcode004.java
index 4aee0cd29..92e98c54f 100644
--- a/src/org/infinity/resource/effects/Opcode004.java
+++ b/src/org/infinity/resource/effects/Opcode004.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode005.java b/src/org/infinity/resource/effects/Opcode005.java
index 7623b6da0..b24b04b12 100644
--- a/src/org/infinity/resource/effects/Opcode005.java
+++ b/src/org/infinity/resource/effects/Opcode005.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode006.java b/src/org/infinity/resource/effects/Opcode006.java
index 4c570158c..2ce925e63 100644
--- a/src/org/infinity/resource/effects/Opcode006.java
+++ b/src/org/infinity/resource/effects/Opcode006.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode007.java b/src/org/infinity/resource/effects/Opcode007.java
index 4e5c0415b..ef62b9529 100644
--- a/src/org/infinity/resource/effects/Opcode007.java
+++ b/src/org/infinity/resource/effects/Opcode007.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode008.java b/src/org/infinity/resource/effects/Opcode008.java
index 568e0ba3e..125eadb21 100644
--- a/src/org/infinity/resource/effects/Opcode008.java
+++ b/src/org/infinity/resource/effects/Opcode008.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode009.java b/src/org/infinity/resource/effects/Opcode009.java
index bc8eee00b..69808f3ca 100644
--- a/src/org/infinity/resource/effects/Opcode009.java
+++ b/src/org/infinity/resource/effects/Opcode009.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode010.java b/src/org/infinity/resource/effects/Opcode010.java
index fe1fb46f3..eb4f08310 100644
--- a/src/org/infinity/resource/effects/Opcode010.java
+++ b/src/org/infinity/resource/effects/Opcode010.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode011.java b/src/org/infinity/resource/effects/Opcode011.java
index 2103f682e..53dea78ff 100644
--- a/src/org/infinity/resource/effects/Opcode011.java
+++ b/src/org/infinity/resource/effects/Opcode011.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode012.java b/src/org/infinity/resource/effects/Opcode012.java
index 8afed2bfc..1b32f6acf 100644
--- a/src/org/infinity/resource/effects/Opcode012.java
+++ b/src/org/infinity/resource/effects/Opcode012.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode013.java b/src/org/infinity/resource/effects/Opcode013.java
index d03f56c4b..384bcce56 100644
--- a/src/org/infinity/resource/effects/Opcode013.java
+++ b/src/org/infinity/resource/effects/Opcode013.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode014.java b/src/org/infinity/resource/effects/Opcode014.java
index bd6cec0ee..811e39b1f 100644
--- a/src/org/infinity/resource/effects/Opcode014.java
+++ b/src/org/infinity/resource/effects/Opcode014.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode015.java b/src/org/infinity/resource/effects/Opcode015.java
index bb6a0b94e..a85968e1f 100644
--- a/src/org/infinity/resource/effects/Opcode015.java
+++ b/src/org/infinity/resource/effects/Opcode015.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode016.java b/src/org/infinity/resource/effects/Opcode016.java
index a14060b11..a367ca533 100644
--- a/src/org/infinity/resource/effects/Opcode016.java
+++ b/src/org/infinity/resource/effects/Opcode016.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode017.java b/src/org/infinity/resource/effects/Opcode017.java
index 8f78ceb2e..d457254ba 100644
--- a/src/org/infinity/resource/effects/Opcode017.java
+++ b/src/org/infinity/resource/effects/Opcode017.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode018.java b/src/org/infinity/resource/effects/Opcode018.java
index 92f05a81e..2da1c972d 100644
--- a/src/org/infinity/resource/effects/Opcode018.java
+++ b/src/org/infinity/resource/effects/Opcode018.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode019.java b/src/org/infinity/resource/effects/Opcode019.java
index 4a7f57e66..8dedde266 100644
--- a/src/org/infinity/resource/effects/Opcode019.java
+++ b/src/org/infinity/resource/effects/Opcode019.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode020.java b/src/org/infinity/resource/effects/Opcode020.java
index 463070550..5a52ae952 100644
--- a/src/org/infinity/resource/effects/Opcode020.java
+++ b/src/org/infinity/resource/effects/Opcode020.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode021.java b/src/org/infinity/resource/effects/Opcode021.java
index e9e9c332a..7b191d279 100644
--- a/src/org/infinity/resource/effects/Opcode021.java
+++ b/src/org/infinity/resource/effects/Opcode021.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode022.java b/src/org/infinity/resource/effects/Opcode022.java
index ca84a4cf4..3d65ceac2 100644
--- a/src/org/infinity/resource/effects/Opcode022.java
+++ b/src/org/infinity/resource/effects/Opcode022.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode023.java b/src/org/infinity/resource/effects/Opcode023.java
index e86a3394e..f62ee1713 100644
--- a/src/org/infinity/resource/effects/Opcode023.java
+++ b/src/org/infinity/resource/effects/Opcode023.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode024.java b/src/org/infinity/resource/effects/Opcode024.java
index fb340d2f7..4b4a510de 100644
--- a/src/org/infinity/resource/effects/Opcode024.java
+++ b/src/org/infinity/resource/effects/Opcode024.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode025.java b/src/org/infinity/resource/effects/Opcode025.java
index 2539736c7..470ba91e2 100644
--- a/src/org/infinity/resource/effects/Opcode025.java
+++ b/src/org/infinity/resource/effects/Opcode025.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode026.java b/src/org/infinity/resource/effects/Opcode026.java
index 94ee504af..295b0035f 100644
--- a/src/org/infinity/resource/effects/Opcode026.java
+++ b/src/org/infinity/resource/effects/Opcode026.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode027.java b/src/org/infinity/resource/effects/Opcode027.java
index 8097a4175..7c8383b85 100644
--- a/src/org/infinity/resource/effects/Opcode027.java
+++ b/src/org/infinity/resource/effects/Opcode027.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode028.java b/src/org/infinity/resource/effects/Opcode028.java
index 4b9fa8159..a01821ded 100644
--- a/src/org/infinity/resource/effects/Opcode028.java
+++ b/src/org/infinity/resource/effects/Opcode028.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode029.java b/src/org/infinity/resource/effects/Opcode029.java
index cd11d3e34..ee9f11e57 100644
--- a/src/org/infinity/resource/effects/Opcode029.java
+++ b/src/org/infinity/resource/effects/Opcode029.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode030.java b/src/org/infinity/resource/effects/Opcode030.java
index 77008f885..43ff916da 100644
--- a/src/org/infinity/resource/effects/Opcode030.java
+++ b/src/org/infinity/resource/effects/Opcode030.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode031.java b/src/org/infinity/resource/effects/Opcode031.java
index c943c3226..fe87aae61 100644
--- a/src/org/infinity/resource/effects/Opcode031.java
+++ b/src/org/infinity/resource/effects/Opcode031.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode032.java b/src/org/infinity/resource/effects/Opcode032.java
index c21d079fd..5a8ad5fe7 100644
--- a/src/org/infinity/resource/effects/Opcode032.java
+++ b/src/org/infinity/resource/effects/Opcode032.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode033.java b/src/org/infinity/resource/effects/Opcode033.java
index cc957fc0e..34e63d07e 100644
--- a/src/org/infinity/resource/effects/Opcode033.java
+++ b/src/org/infinity/resource/effects/Opcode033.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode034.java b/src/org/infinity/resource/effects/Opcode034.java
index 75c692774..4602ebd6f 100644
--- a/src/org/infinity/resource/effects/Opcode034.java
+++ b/src/org/infinity/resource/effects/Opcode034.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode035.java b/src/org/infinity/resource/effects/Opcode035.java
index e9eaf74e8..23680e891 100644
--- a/src/org/infinity/resource/effects/Opcode035.java
+++ b/src/org/infinity/resource/effects/Opcode035.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode036.java b/src/org/infinity/resource/effects/Opcode036.java
index 758a80290..f5d8a9ec0 100644
--- a/src/org/infinity/resource/effects/Opcode036.java
+++ b/src/org/infinity/resource/effects/Opcode036.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode037.java b/src/org/infinity/resource/effects/Opcode037.java
index 90b46040b..e1e0a3e1b 100644
--- a/src/org/infinity/resource/effects/Opcode037.java
+++ b/src/org/infinity/resource/effects/Opcode037.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode038.java b/src/org/infinity/resource/effects/Opcode038.java
index 2ccb37004..795d8386d 100644
--- a/src/org/infinity/resource/effects/Opcode038.java
+++ b/src/org/infinity/resource/effects/Opcode038.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode039.java b/src/org/infinity/resource/effects/Opcode039.java
index 6e3a9b20e..a80c2c635 100644
--- a/src/org/infinity/resource/effects/Opcode039.java
+++ b/src/org/infinity/resource/effects/Opcode039.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode040.java b/src/org/infinity/resource/effects/Opcode040.java
index d4aed6498..604d849c0 100644
--- a/src/org/infinity/resource/effects/Opcode040.java
+++ b/src/org/infinity/resource/effects/Opcode040.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode041.java b/src/org/infinity/resource/effects/Opcode041.java
index dc717b361..a96192d79 100644
--- a/src/org/infinity/resource/effects/Opcode041.java
+++ b/src/org/infinity/resource/effects/Opcode041.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode042.java b/src/org/infinity/resource/effects/Opcode042.java
index bd3495cbe..1e79790f9 100644
--- a/src/org/infinity/resource/effects/Opcode042.java
+++ b/src/org/infinity/resource/effects/Opcode042.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode043.java b/src/org/infinity/resource/effects/Opcode043.java
index e4825a4f4..8f26df193 100644
--- a/src/org/infinity/resource/effects/Opcode043.java
+++ b/src/org/infinity/resource/effects/Opcode043.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode044.java b/src/org/infinity/resource/effects/Opcode044.java
index 599682c51..2d7b6b6c8 100644
--- a/src/org/infinity/resource/effects/Opcode044.java
+++ b/src/org/infinity/resource/effects/Opcode044.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode045.java b/src/org/infinity/resource/effects/Opcode045.java
index 50f2a71a6..3a90afefa 100644
--- a/src/org/infinity/resource/effects/Opcode045.java
+++ b/src/org/infinity/resource/effects/Opcode045.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode046.java b/src/org/infinity/resource/effects/Opcode046.java
index 96c47da03..9b67ca7c6 100644
--- a/src/org/infinity/resource/effects/Opcode046.java
+++ b/src/org/infinity/resource/effects/Opcode046.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode047.java b/src/org/infinity/resource/effects/Opcode047.java
index 987715588..687160f35 100644
--- a/src/org/infinity/resource/effects/Opcode047.java
+++ b/src/org/infinity/resource/effects/Opcode047.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode048.java b/src/org/infinity/resource/effects/Opcode048.java
index 5d5745ccf..1bfd3e5de 100644
--- a/src/org/infinity/resource/effects/Opcode048.java
+++ b/src/org/infinity/resource/effects/Opcode048.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode049.java b/src/org/infinity/resource/effects/Opcode049.java
index 736e05e73..ad7ba45c0 100644
--- a/src/org/infinity/resource/effects/Opcode049.java
+++ b/src/org/infinity/resource/effects/Opcode049.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode050.java b/src/org/infinity/resource/effects/Opcode050.java
index 36036a104..9cd89af0b 100644
--- a/src/org/infinity/resource/effects/Opcode050.java
+++ b/src/org/infinity/resource/effects/Opcode050.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode051.java b/src/org/infinity/resource/effects/Opcode051.java
index 7211a5675..1f5342518 100644
--- a/src/org/infinity/resource/effects/Opcode051.java
+++ b/src/org/infinity/resource/effects/Opcode051.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode052.java b/src/org/infinity/resource/effects/Opcode052.java
index c97102b45..65b27ac1b 100644
--- a/src/org/infinity/resource/effects/Opcode052.java
+++ b/src/org/infinity/resource/effects/Opcode052.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode053.java b/src/org/infinity/resource/effects/Opcode053.java
index db032abc4..e996124f2 100644
--- a/src/org/infinity/resource/effects/Opcode053.java
+++ b/src/org/infinity/resource/effects/Opcode053.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode054.java b/src/org/infinity/resource/effects/Opcode054.java
index 72b8e7e17..52f701677 100644
--- a/src/org/infinity/resource/effects/Opcode054.java
+++ b/src/org/infinity/resource/effects/Opcode054.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode055.java b/src/org/infinity/resource/effects/Opcode055.java
index 3ca40d100..ab1f001a5 100644
--- a/src/org/infinity/resource/effects/Opcode055.java
+++ b/src/org/infinity/resource/effects/Opcode055.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode056.java b/src/org/infinity/resource/effects/Opcode056.java
index 63f443555..4a90f3e78 100644
--- a/src/org/infinity/resource/effects/Opcode056.java
+++ b/src/org/infinity/resource/effects/Opcode056.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode057.java b/src/org/infinity/resource/effects/Opcode057.java
index b056c3eaf..0f32ec0ae 100644
--- a/src/org/infinity/resource/effects/Opcode057.java
+++ b/src/org/infinity/resource/effects/Opcode057.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode058.java b/src/org/infinity/resource/effects/Opcode058.java
index bebd822db..6cfad3040 100644
--- a/src/org/infinity/resource/effects/Opcode058.java
+++ b/src/org/infinity/resource/effects/Opcode058.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode059.java b/src/org/infinity/resource/effects/Opcode059.java
index f81b472c3..a66ed930d 100644
--- a/src/org/infinity/resource/effects/Opcode059.java
+++ b/src/org/infinity/resource/effects/Opcode059.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode060.java b/src/org/infinity/resource/effects/Opcode060.java
index 920cb2d8e..031e21697 100644
--- a/src/org/infinity/resource/effects/Opcode060.java
+++ b/src/org/infinity/resource/effects/Opcode060.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode061.java b/src/org/infinity/resource/effects/Opcode061.java
index 515060573..7168ea18f 100644
--- a/src/org/infinity/resource/effects/Opcode061.java
+++ b/src/org/infinity/resource/effects/Opcode061.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode062.java b/src/org/infinity/resource/effects/Opcode062.java
index eacdf4b33..56716ce90 100644
--- a/src/org/infinity/resource/effects/Opcode062.java
+++ b/src/org/infinity/resource/effects/Opcode062.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode063.java b/src/org/infinity/resource/effects/Opcode063.java
index 402181cdb..808aef34a 100644
--- a/src/org/infinity/resource/effects/Opcode063.java
+++ b/src/org/infinity/resource/effects/Opcode063.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode064.java b/src/org/infinity/resource/effects/Opcode064.java
index 08f723476..e14b88a73 100644
--- a/src/org/infinity/resource/effects/Opcode064.java
+++ b/src/org/infinity/resource/effects/Opcode064.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode065.java b/src/org/infinity/resource/effects/Opcode065.java
index 847b5ef1f..8831612cf 100644
--- a/src/org/infinity/resource/effects/Opcode065.java
+++ b/src/org/infinity/resource/effects/Opcode065.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode066.java b/src/org/infinity/resource/effects/Opcode066.java
index 9695ddf4d..7b3b29505 100644
--- a/src/org/infinity/resource/effects/Opcode066.java
+++ b/src/org/infinity/resource/effects/Opcode066.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode067.java b/src/org/infinity/resource/effects/Opcode067.java
index 2300da022..5d7b05ce8 100644
--- a/src/org/infinity/resource/effects/Opcode067.java
+++ b/src/org/infinity/resource/effects/Opcode067.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode068.java b/src/org/infinity/resource/effects/Opcode068.java
index 17ebfaa9a..cb49c1a39 100644
--- a/src/org/infinity/resource/effects/Opcode068.java
+++ b/src/org/infinity/resource/effects/Opcode068.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode069.java b/src/org/infinity/resource/effects/Opcode069.java
index 619e77521..095c059e1 100644
--- a/src/org/infinity/resource/effects/Opcode069.java
+++ b/src/org/infinity/resource/effects/Opcode069.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode070.java b/src/org/infinity/resource/effects/Opcode070.java
index 80c29c9c5..fb6cdf210 100644
--- a/src/org/infinity/resource/effects/Opcode070.java
+++ b/src/org/infinity/resource/effects/Opcode070.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode071.java b/src/org/infinity/resource/effects/Opcode071.java
index e77db70ea..eeb165d92 100644
--- a/src/org/infinity/resource/effects/Opcode071.java
+++ b/src/org/infinity/resource/effects/Opcode071.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode072.java b/src/org/infinity/resource/effects/Opcode072.java
index e4fc433b7..d2a6bf7c8 100644
--- a/src/org/infinity/resource/effects/Opcode072.java
+++ b/src/org/infinity/resource/effects/Opcode072.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode073.java b/src/org/infinity/resource/effects/Opcode073.java
index 16f26d121..7ce75fcde 100644
--- a/src/org/infinity/resource/effects/Opcode073.java
+++ b/src/org/infinity/resource/effects/Opcode073.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode074.java b/src/org/infinity/resource/effects/Opcode074.java
index 7e79cae50..87ada7bf9 100644
--- a/src/org/infinity/resource/effects/Opcode074.java
+++ b/src/org/infinity/resource/effects/Opcode074.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode075.java b/src/org/infinity/resource/effects/Opcode075.java
index b55f10c0f..ca17aa1bb 100644
--- a/src/org/infinity/resource/effects/Opcode075.java
+++ b/src/org/infinity/resource/effects/Opcode075.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode076.java b/src/org/infinity/resource/effects/Opcode076.java
index f27941148..50d5c0da9 100644
--- a/src/org/infinity/resource/effects/Opcode076.java
+++ b/src/org/infinity/resource/effects/Opcode076.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode077.java b/src/org/infinity/resource/effects/Opcode077.java
index e7c7c88f2..8ea13859e 100644
--- a/src/org/infinity/resource/effects/Opcode077.java
+++ b/src/org/infinity/resource/effects/Opcode077.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode078.java b/src/org/infinity/resource/effects/Opcode078.java
index 5c09ab4b7..b48b18cf3 100644
--- a/src/org/infinity/resource/effects/Opcode078.java
+++ b/src/org/infinity/resource/effects/Opcode078.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode079.java b/src/org/infinity/resource/effects/Opcode079.java
index 62cb16fed..db2241012 100644
--- a/src/org/infinity/resource/effects/Opcode079.java
+++ b/src/org/infinity/resource/effects/Opcode079.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode080.java b/src/org/infinity/resource/effects/Opcode080.java
index d1c97eb69..8bd9979eb 100644
--- a/src/org/infinity/resource/effects/Opcode080.java
+++ b/src/org/infinity/resource/effects/Opcode080.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode081.java b/src/org/infinity/resource/effects/Opcode081.java
index 1f3af22ca..ea9953497 100644
--- a/src/org/infinity/resource/effects/Opcode081.java
+++ b/src/org/infinity/resource/effects/Opcode081.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode082.java b/src/org/infinity/resource/effects/Opcode082.java
index 5f9b2b735..cdfc87043 100644
--- a/src/org/infinity/resource/effects/Opcode082.java
+++ b/src/org/infinity/resource/effects/Opcode082.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode083.java b/src/org/infinity/resource/effects/Opcode083.java
index 3cd627edc..4135850fb 100644
--- a/src/org/infinity/resource/effects/Opcode083.java
+++ b/src/org/infinity/resource/effects/Opcode083.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode084.java b/src/org/infinity/resource/effects/Opcode084.java
index 3a5daf61b..1e06265c7 100644
--- a/src/org/infinity/resource/effects/Opcode084.java
+++ b/src/org/infinity/resource/effects/Opcode084.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode085.java b/src/org/infinity/resource/effects/Opcode085.java
index 4df84407b..bf156eb0c 100644
--- a/src/org/infinity/resource/effects/Opcode085.java
+++ b/src/org/infinity/resource/effects/Opcode085.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode086.java b/src/org/infinity/resource/effects/Opcode086.java
index 7eb74d9c2..d3d3bd1ab 100644
--- a/src/org/infinity/resource/effects/Opcode086.java
+++ b/src/org/infinity/resource/effects/Opcode086.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode087.java b/src/org/infinity/resource/effects/Opcode087.java
index 01a976a12..aba1e5feb 100644
--- a/src/org/infinity/resource/effects/Opcode087.java
+++ b/src/org/infinity/resource/effects/Opcode087.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode088.java b/src/org/infinity/resource/effects/Opcode088.java
index 14a2f5a43..fd7208c01 100644
--- a/src/org/infinity/resource/effects/Opcode088.java
+++ b/src/org/infinity/resource/effects/Opcode088.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode089.java b/src/org/infinity/resource/effects/Opcode089.java
index a6e8f4815..d4b7d67f9 100644
--- a/src/org/infinity/resource/effects/Opcode089.java
+++ b/src/org/infinity/resource/effects/Opcode089.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode090.java b/src/org/infinity/resource/effects/Opcode090.java
index 3b93fbc32..59becc2d6 100644
--- a/src/org/infinity/resource/effects/Opcode090.java
+++ b/src/org/infinity/resource/effects/Opcode090.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode091.java b/src/org/infinity/resource/effects/Opcode091.java
index 61b89ecb1..f1cd98c6b 100644
--- a/src/org/infinity/resource/effects/Opcode091.java
+++ b/src/org/infinity/resource/effects/Opcode091.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode092.java b/src/org/infinity/resource/effects/Opcode092.java
index 129565111..6c8ce33ad 100644
--- a/src/org/infinity/resource/effects/Opcode092.java
+++ b/src/org/infinity/resource/effects/Opcode092.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode093.java b/src/org/infinity/resource/effects/Opcode093.java
index 8a5efc9ce..5b3283fe1 100644
--- a/src/org/infinity/resource/effects/Opcode093.java
+++ b/src/org/infinity/resource/effects/Opcode093.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode094.java b/src/org/infinity/resource/effects/Opcode094.java
index 4280d3f5f..0e61233f6 100644
--- a/src/org/infinity/resource/effects/Opcode094.java
+++ b/src/org/infinity/resource/effects/Opcode094.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode095.java b/src/org/infinity/resource/effects/Opcode095.java
index d7170531e..783f39f22 100644
--- a/src/org/infinity/resource/effects/Opcode095.java
+++ b/src/org/infinity/resource/effects/Opcode095.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode096.java b/src/org/infinity/resource/effects/Opcode096.java
index 499e22d22..0f71df4a2 100644
--- a/src/org/infinity/resource/effects/Opcode096.java
+++ b/src/org/infinity/resource/effects/Opcode096.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode097.java b/src/org/infinity/resource/effects/Opcode097.java
index f7eb19927..f4bbc75d6 100644
--- a/src/org/infinity/resource/effects/Opcode097.java
+++ b/src/org/infinity/resource/effects/Opcode097.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode098.java b/src/org/infinity/resource/effects/Opcode098.java
index 323a58f7d..b5744b125 100644
--- a/src/org/infinity/resource/effects/Opcode098.java
+++ b/src/org/infinity/resource/effects/Opcode098.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode099.java b/src/org/infinity/resource/effects/Opcode099.java
index 251bf375e..9b9f2c761 100644
--- a/src/org/infinity/resource/effects/Opcode099.java
+++ b/src/org/infinity/resource/effects/Opcode099.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode100.java b/src/org/infinity/resource/effects/Opcode100.java
index e9b669078..0d32d499c 100644
--- a/src/org/infinity/resource/effects/Opcode100.java
+++ b/src/org/infinity/resource/effects/Opcode100.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode101.java b/src/org/infinity/resource/effects/Opcode101.java
index 13c033bcd..309f44bbe 100644
--- a/src/org/infinity/resource/effects/Opcode101.java
+++ b/src/org/infinity/resource/effects/Opcode101.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode102.java b/src/org/infinity/resource/effects/Opcode102.java
index 850a361df..a133eef28 100644
--- a/src/org/infinity/resource/effects/Opcode102.java
+++ b/src/org/infinity/resource/effects/Opcode102.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode103.java b/src/org/infinity/resource/effects/Opcode103.java
index c4c864d79..7cb761623 100644
--- a/src/org/infinity/resource/effects/Opcode103.java
+++ b/src/org/infinity/resource/effects/Opcode103.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode104.java b/src/org/infinity/resource/effects/Opcode104.java
index 20298033c..93f8136d2 100644
--- a/src/org/infinity/resource/effects/Opcode104.java
+++ b/src/org/infinity/resource/effects/Opcode104.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode105.java b/src/org/infinity/resource/effects/Opcode105.java
index 0a6385329..8f9a1c80e 100644
--- a/src/org/infinity/resource/effects/Opcode105.java
+++ b/src/org/infinity/resource/effects/Opcode105.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode106.java b/src/org/infinity/resource/effects/Opcode106.java
index 409eb8165..a276b1076 100644
--- a/src/org/infinity/resource/effects/Opcode106.java
+++ b/src/org/infinity/resource/effects/Opcode106.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode107.java b/src/org/infinity/resource/effects/Opcode107.java
index 7c1a539a6..f5ce46c0d 100644
--- a/src/org/infinity/resource/effects/Opcode107.java
+++ b/src/org/infinity/resource/effects/Opcode107.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode108.java b/src/org/infinity/resource/effects/Opcode108.java
index 2a0a7eb7c..b6fd0ed96 100644
--- a/src/org/infinity/resource/effects/Opcode108.java
+++ b/src/org/infinity/resource/effects/Opcode108.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode109.java b/src/org/infinity/resource/effects/Opcode109.java
index 445b65eaa..11bb67789 100644
--- a/src/org/infinity/resource/effects/Opcode109.java
+++ b/src/org/infinity/resource/effects/Opcode109.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode110.java b/src/org/infinity/resource/effects/Opcode110.java
index 02305a2c7..6c74b9df8 100644
--- a/src/org/infinity/resource/effects/Opcode110.java
+++ b/src/org/infinity/resource/effects/Opcode110.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode111.java b/src/org/infinity/resource/effects/Opcode111.java
index f1f57224d..d586c479c 100644
--- a/src/org/infinity/resource/effects/Opcode111.java
+++ b/src/org/infinity/resource/effects/Opcode111.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode112.java b/src/org/infinity/resource/effects/Opcode112.java
index a99184322..e85a5d055 100644
--- a/src/org/infinity/resource/effects/Opcode112.java
+++ b/src/org/infinity/resource/effects/Opcode112.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode113.java b/src/org/infinity/resource/effects/Opcode113.java
index 4d98735c5..408dfb644 100644
--- a/src/org/infinity/resource/effects/Opcode113.java
+++ b/src/org/infinity/resource/effects/Opcode113.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode114.java b/src/org/infinity/resource/effects/Opcode114.java
index 90bbe9e7c..1fed530cc 100644
--- a/src/org/infinity/resource/effects/Opcode114.java
+++ b/src/org/infinity/resource/effects/Opcode114.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode115.java b/src/org/infinity/resource/effects/Opcode115.java
index be3b18721..9d2806e76 100644
--- a/src/org/infinity/resource/effects/Opcode115.java
+++ b/src/org/infinity/resource/effects/Opcode115.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode116.java b/src/org/infinity/resource/effects/Opcode116.java
index 856958ca3..421772b1f 100644
--- a/src/org/infinity/resource/effects/Opcode116.java
+++ b/src/org/infinity/resource/effects/Opcode116.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode117.java b/src/org/infinity/resource/effects/Opcode117.java
index 81a78e161..eb3e7bcc3 100644
--- a/src/org/infinity/resource/effects/Opcode117.java
+++ b/src/org/infinity/resource/effects/Opcode117.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode118.java b/src/org/infinity/resource/effects/Opcode118.java
index 558727a36..75ea0a2d4 100644
--- a/src/org/infinity/resource/effects/Opcode118.java
+++ b/src/org/infinity/resource/effects/Opcode118.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode119.java b/src/org/infinity/resource/effects/Opcode119.java
index 49b86775a..c0958450f 100644
--- a/src/org/infinity/resource/effects/Opcode119.java
+++ b/src/org/infinity/resource/effects/Opcode119.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode120.java b/src/org/infinity/resource/effects/Opcode120.java
index 7653d4eea..aa36f3278 100644
--- a/src/org/infinity/resource/effects/Opcode120.java
+++ b/src/org/infinity/resource/effects/Opcode120.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode121.java b/src/org/infinity/resource/effects/Opcode121.java
index 52fe413ab..f129bdae3 100644
--- a/src/org/infinity/resource/effects/Opcode121.java
+++ b/src/org/infinity/resource/effects/Opcode121.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode122.java b/src/org/infinity/resource/effects/Opcode122.java
index d26daf704..9df91073a 100644
--- a/src/org/infinity/resource/effects/Opcode122.java
+++ b/src/org/infinity/resource/effects/Opcode122.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode123.java b/src/org/infinity/resource/effects/Opcode123.java
index cf4af73b9..bac07208e 100644
--- a/src/org/infinity/resource/effects/Opcode123.java
+++ b/src/org/infinity/resource/effects/Opcode123.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode124.java b/src/org/infinity/resource/effects/Opcode124.java
index a23943eae..17c859f50 100644
--- a/src/org/infinity/resource/effects/Opcode124.java
+++ b/src/org/infinity/resource/effects/Opcode124.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode125.java b/src/org/infinity/resource/effects/Opcode125.java
index 3f8a8f5f5..acd8bf662 100644
--- a/src/org/infinity/resource/effects/Opcode125.java
+++ b/src/org/infinity/resource/effects/Opcode125.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode126.java b/src/org/infinity/resource/effects/Opcode126.java
index 5c8fddb74..f854f8d12 100644
--- a/src/org/infinity/resource/effects/Opcode126.java
+++ b/src/org/infinity/resource/effects/Opcode126.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode127.java b/src/org/infinity/resource/effects/Opcode127.java
index 2b313a0ca..06ac92e10 100644
--- a/src/org/infinity/resource/effects/Opcode127.java
+++ b/src/org/infinity/resource/effects/Opcode127.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode128.java b/src/org/infinity/resource/effects/Opcode128.java
index 562a5bcc9..fb5a3e282 100644
--- a/src/org/infinity/resource/effects/Opcode128.java
+++ b/src/org/infinity/resource/effects/Opcode128.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode129.java b/src/org/infinity/resource/effects/Opcode129.java
index 4299927ce..c2eb5304f 100644
--- a/src/org/infinity/resource/effects/Opcode129.java
+++ b/src/org/infinity/resource/effects/Opcode129.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode130.java b/src/org/infinity/resource/effects/Opcode130.java
index 9d148d004..e4c67ec9f 100644
--- a/src/org/infinity/resource/effects/Opcode130.java
+++ b/src/org/infinity/resource/effects/Opcode130.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode131.java b/src/org/infinity/resource/effects/Opcode131.java
index b600304dd..ae85bcd62 100644
--- a/src/org/infinity/resource/effects/Opcode131.java
+++ b/src/org/infinity/resource/effects/Opcode131.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode132.java b/src/org/infinity/resource/effects/Opcode132.java
index 678141294..053f47534 100644
--- a/src/org/infinity/resource/effects/Opcode132.java
+++ b/src/org/infinity/resource/effects/Opcode132.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode133.java b/src/org/infinity/resource/effects/Opcode133.java
index ca729046b..17b9aa682 100644
--- a/src/org/infinity/resource/effects/Opcode133.java
+++ b/src/org/infinity/resource/effects/Opcode133.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode134.java b/src/org/infinity/resource/effects/Opcode134.java
index 1e3865c9b..60b8923bc 100644
--- a/src/org/infinity/resource/effects/Opcode134.java
+++ b/src/org/infinity/resource/effects/Opcode134.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode135.java b/src/org/infinity/resource/effects/Opcode135.java
index 41b4d258a..4ebeaa0e1 100644
--- a/src/org/infinity/resource/effects/Opcode135.java
+++ b/src/org/infinity/resource/effects/Opcode135.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode136.java b/src/org/infinity/resource/effects/Opcode136.java
index 96453e074..fcf722603 100644
--- a/src/org/infinity/resource/effects/Opcode136.java
+++ b/src/org/infinity/resource/effects/Opcode136.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode137.java b/src/org/infinity/resource/effects/Opcode137.java
index 46d1341e2..12f992714 100644
--- a/src/org/infinity/resource/effects/Opcode137.java
+++ b/src/org/infinity/resource/effects/Opcode137.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode138.java b/src/org/infinity/resource/effects/Opcode138.java
index eaa920c5b..46bf7e721 100644
--- a/src/org/infinity/resource/effects/Opcode138.java
+++ b/src/org/infinity/resource/effects/Opcode138.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode139.java b/src/org/infinity/resource/effects/Opcode139.java
index 20636916d..caf981896 100644
--- a/src/org/infinity/resource/effects/Opcode139.java
+++ b/src/org/infinity/resource/effects/Opcode139.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode140.java b/src/org/infinity/resource/effects/Opcode140.java
index 21f997067..ff896ec00 100644
--- a/src/org/infinity/resource/effects/Opcode140.java
+++ b/src/org/infinity/resource/effects/Opcode140.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode141.java b/src/org/infinity/resource/effects/Opcode141.java
index 352dbd6e8..af718ce82 100644
--- a/src/org/infinity/resource/effects/Opcode141.java
+++ b/src/org/infinity/resource/effects/Opcode141.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode142.java b/src/org/infinity/resource/effects/Opcode142.java
index 312bc2d93..a946c8c7d 100644
--- a/src/org/infinity/resource/effects/Opcode142.java
+++ b/src/org/infinity/resource/effects/Opcode142.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode143.java b/src/org/infinity/resource/effects/Opcode143.java
index 2d8e7b3f3..568a649bc 100644
--- a/src/org/infinity/resource/effects/Opcode143.java
+++ b/src/org/infinity/resource/effects/Opcode143.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode144.java b/src/org/infinity/resource/effects/Opcode144.java
index f48ae1d2c..fefdd2678 100644
--- a/src/org/infinity/resource/effects/Opcode144.java
+++ b/src/org/infinity/resource/effects/Opcode144.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode145.java b/src/org/infinity/resource/effects/Opcode145.java
index 6f431b125..8bca6de12 100644
--- a/src/org/infinity/resource/effects/Opcode145.java
+++ b/src/org/infinity/resource/effects/Opcode145.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode146.java b/src/org/infinity/resource/effects/Opcode146.java
index 045888843..e72390d0a 100644
--- a/src/org/infinity/resource/effects/Opcode146.java
+++ b/src/org/infinity/resource/effects/Opcode146.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode147.java b/src/org/infinity/resource/effects/Opcode147.java
index cf51872a2..036f69bf1 100644
--- a/src/org/infinity/resource/effects/Opcode147.java
+++ b/src/org/infinity/resource/effects/Opcode147.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode148.java b/src/org/infinity/resource/effects/Opcode148.java
index 8d604fdca..5c736cf6b 100644
--- a/src/org/infinity/resource/effects/Opcode148.java
+++ b/src/org/infinity/resource/effects/Opcode148.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode149.java b/src/org/infinity/resource/effects/Opcode149.java
index 37aba5c3a..411121913 100644
--- a/src/org/infinity/resource/effects/Opcode149.java
+++ b/src/org/infinity/resource/effects/Opcode149.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode150.java b/src/org/infinity/resource/effects/Opcode150.java
index 5a7e48a6b..0c96d5be8 100644
--- a/src/org/infinity/resource/effects/Opcode150.java
+++ b/src/org/infinity/resource/effects/Opcode150.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode151.java b/src/org/infinity/resource/effects/Opcode151.java
index d7eb960ce..ff08421ec 100644
--- a/src/org/infinity/resource/effects/Opcode151.java
+++ b/src/org/infinity/resource/effects/Opcode151.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode152.java b/src/org/infinity/resource/effects/Opcode152.java
index 7acd97ee5..7f1fca1c3 100644
--- a/src/org/infinity/resource/effects/Opcode152.java
+++ b/src/org/infinity/resource/effects/Opcode152.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode153.java b/src/org/infinity/resource/effects/Opcode153.java
index 0e7225d1c..f3bbd630a 100644
--- a/src/org/infinity/resource/effects/Opcode153.java
+++ b/src/org/infinity/resource/effects/Opcode153.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode154.java b/src/org/infinity/resource/effects/Opcode154.java
index fddcf3766..78b9ae8ce 100644
--- a/src/org/infinity/resource/effects/Opcode154.java
+++ b/src/org/infinity/resource/effects/Opcode154.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode155.java b/src/org/infinity/resource/effects/Opcode155.java
index a216ad3e9..0f4cea26c 100644
--- a/src/org/infinity/resource/effects/Opcode155.java
+++ b/src/org/infinity/resource/effects/Opcode155.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode156.java b/src/org/infinity/resource/effects/Opcode156.java
index c6ba9ffbb..ec0d28214 100644
--- a/src/org/infinity/resource/effects/Opcode156.java
+++ b/src/org/infinity/resource/effects/Opcode156.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode157.java b/src/org/infinity/resource/effects/Opcode157.java
index 99710d83a..aab7bdf88 100644
--- a/src/org/infinity/resource/effects/Opcode157.java
+++ b/src/org/infinity/resource/effects/Opcode157.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode158.java b/src/org/infinity/resource/effects/Opcode158.java
index cf0d59a6e..ac51dd6da 100644
--- a/src/org/infinity/resource/effects/Opcode158.java
+++ b/src/org/infinity/resource/effects/Opcode158.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode159.java b/src/org/infinity/resource/effects/Opcode159.java
index 1bc4694c2..f3f0651d0 100644
--- a/src/org/infinity/resource/effects/Opcode159.java
+++ b/src/org/infinity/resource/effects/Opcode159.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode160.java b/src/org/infinity/resource/effects/Opcode160.java
index a9090bfd6..f9dae01f6 100644
--- a/src/org/infinity/resource/effects/Opcode160.java
+++ b/src/org/infinity/resource/effects/Opcode160.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode161.java b/src/org/infinity/resource/effects/Opcode161.java
index c3a53c673..bc89f0ee7 100644
--- a/src/org/infinity/resource/effects/Opcode161.java
+++ b/src/org/infinity/resource/effects/Opcode161.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode162.java b/src/org/infinity/resource/effects/Opcode162.java
index 8db1ada3a..816095b06 100644
--- a/src/org/infinity/resource/effects/Opcode162.java
+++ b/src/org/infinity/resource/effects/Opcode162.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode163.java b/src/org/infinity/resource/effects/Opcode163.java
index 763c0cbf4..6d050096a 100644
--- a/src/org/infinity/resource/effects/Opcode163.java
+++ b/src/org/infinity/resource/effects/Opcode163.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode164.java b/src/org/infinity/resource/effects/Opcode164.java
index 31a5c85af..2f4dd7823 100644
--- a/src/org/infinity/resource/effects/Opcode164.java
+++ b/src/org/infinity/resource/effects/Opcode164.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode165.java b/src/org/infinity/resource/effects/Opcode165.java
index 884bc9eef..48e047017 100644
--- a/src/org/infinity/resource/effects/Opcode165.java
+++ b/src/org/infinity/resource/effects/Opcode165.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode166.java b/src/org/infinity/resource/effects/Opcode166.java
index d4d8cce25..df8ddd099 100644
--- a/src/org/infinity/resource/effects/Opcode166.java
+++ b/src/org/infinity/resource/effects/Opcode166.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode167.java b/src/org/infinity/resource/effects/Opcode167.java
index 00361602f..6bdb63503 100644
--- a/src/org/infinity/resource/effects/Opcode167.java
+++ b/src/org/infinity/resource/effects/Opcode167.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode168.java b/src/org/infinity/resource/effects/Opcode168.java
index f8a1a94a9..6be760f24 100644
--- a/src/org/infinity/resource/effects/Opcode168.java
+++ b/src/org/infinity/resource/effects/Opcode168.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode169.java b/src/org/infinity/resource/effects/Opcode169.java
index f31a218f5..346c1b021 100644
--- a/src/org/infinity/resource/effects/Opcode169.java
+++ b/src/org/infinity/resource/effects/Opcode169.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode170.java b/src/org/infinity/resource/effects/Opcode170.java
index 455d1498f..f5fb7909b 100644
--- a/src/org/infinity/resource/effects/Opcode170.java
+++ b/src/org/infinity/resource/effects/Opcode170.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode171.java b/src/org/infinity/resource/effects/Opcode171.java
index 350d2a28f..5bfd709d4 100644
--- a/src/org/infinity/resource/effects/Opcode171.java
+++ b/src/org/infinity/resource/effects/Opcode171.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode172.java b/src/org/infinity/resource/effects/Opcode172.java
index 3ecc28808..cf1c57183 100644
--- a/src/org/infinity/resource/effects/Opcode172.java
+++ b/src/org/infinity/resource/effects/Opcode172.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode173.java b/src/org/infinity/resource/effects/Opcode173.java
index 92e28aa11..e4881f841 100644
--- a/src/org/infinity/resource/effects/Opcode173.java
+++ b/src/org/infinity/resource/effects/Opcode173.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode174.java b/src/org/infinity/resource/effects/Opcode174.java
index 80c083f1b..35e9943db 100644
--- a/src/org/infinity/resource/effects/Opcode174.java
+++ b/src/org/infinity/resource/effects/Opcode174.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode175.java b/src/org/infinity/resource/effects/Opcode175.java
index 4bf7f923f..d9df3a5ae 100644
--- a/src/org/infinity/resource/effects/Opcode175.java
+++ b/src/org/infinity/resource/effects/Opcode175.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode176.java b/src/org/infinity/resource/effects/Opcode176.java
index 62b65dd0b..f8cf25fbb 100644
--- a/src/org/infinity/resource/effects/Opcode176.java
+++ b/src/org/infinity/resource/effects/Opcode176.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode177.java b/src/org/infinity/resource/effects/Opcode177.java
index 2fa17ea90..991889f76 100644
--- a/src/org/infinity/resource/effects/Opcode177.java
+++ b/src/org/infinity/resource/effects/Opcode177.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode178.java b/src/org/infinity/resource/effects/Opcode178.java
index 97cbdd185..a1347ef8f 100644
--- a/src/org/infinity/resource/effects/Opcode178.java
+++ b/src/org/infinity/resource/effects/Opcode178.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode179.java b/src/org/infinity/resource/effects/Opcode179.java
index c54fb3905..fc7f0e2e7 100644
--- a/src/org/infinity/resource/effects/Opcode179.java
+++ b/src/org/infinity/resource/effects/Opcode179.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode180.java b/src/org/infinity/resource/effects/Opcode180.java
index dc4d52dfc..5ecf4d032 100644
--- a/src/org/infinity/resource/effects/Opcode180.java
+++ b/src/org/infinity/resource/effects/Opcode180.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode181.java b/src/org/infinity/resource/effects/Opcode181.java
index ec3ff8ac5..3a570ace8 100644
--- a/src/org/infinity/resource/effects/Opcode181.java
+++ b/src/org/infinity/resource/effects/Opcode181.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode182.java b/src/org/infinity/resource/effects/Opcode182.java
index 93a09398a..8ece14a7b 100644
--- a/src/org/infinity/resource/effects/Opcode182.java
+++ b/src/org/infinity/resource/effects/Opcode182.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode183.java b/src/org/infinity/resource/effects/Opcode183.java
index 7a9f25c2e..50f7fabf1 100644
--- a/src/org/infinity/resource/effects/Opcode183.java
+++ b/src/org/infinity/resource/effects/Opcode183.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode184.java b/src/org/infinity/resource/effects/Opcode184.java
index 7330ed4fd..4f6d3918a 100644
--- a/src/org/infinity/resource/effects/Opcode184.java
+++ b/src/org/infinity/resource/effects/Opcode184.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode185.java b/src/org/infinity/resource/effects/Opcode185.java
index 40bbaf3ea..0c5119512 100644
--- a/src/org/infinity/resource/effects/Opcode185.java
+++ b/src/org/infinity/resource/effects/Opcode185.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode186.java b/src/org/infinity/resource/effects/Opcode186.java
index c5c78f2f9..e8e64e0de 100644
--- a/src/org/infinity/resource/effects/Opcode186.java
+++ b/src/org/infinity/resource/effects/Opcode186.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode187.java b/src/org/infinity/resource/effects/Opcode187.java
index 1467791ac..0f7c6aa3c 100644
--- a/src/org/infinity/resource/effects/Opcode187.java
+++ b/src/org/infinity/resource/effects/Opcode187.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode188.java b/src/org/infinity/resource/effects/Opcode188.java
index 1651c0649..af7a9e8a7 100644
--- a/src/org/infinity/resource/effects/Opcode188.java
+++ b/src/org/infinity/resource/effects/Opcode188.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode189.java b/src/org/infinity/resource/effects/Opcode189.java
index b235c4d3a..d83f6ebd3 100644
--- a/src/org/infinity/resource/effects/Opcode189.java
+++ b/src/org/infinity/resource/effects/Opcode189.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode190.java b/src/org/infinity/resource/effects/Opcode190.java
index 53443d176..51f7daff6 100644
--- a/src/org/infinity/resource/effects/Opcode190.java
+++ b/src/org/infinity/resource/effects/Opcode190.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode191.java b/src/org/infinity/resource/effects/Opcode191.java
index 91527900f..99450af50 100644
--- a/src/org/infinity/resource/effects/Opcode191.java
+++ b/src/org/infinity/resource/effects/Opcode191.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode192.java b/src/org/infinity/resource/effects/Opcode192.java
index 78a1f0f01..c5cc755d6 100644
--- a/src/org/infinity/resource/effects/Opcode192.java
+++ b/src/org/infinity/resource/effects/Opcode192.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode193.java b/src/org/infinity/resource/effects/Opcode193.java
index 8736a2a14..dd8760515 100644
--- a/src/org/infinity/resource/effects/Opcode193.java
+++ b/src/org/infinity/resource/effects/Opcode193.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode194.java b/src/org/infinity/resource/effects/Opcode194.java
index 0f772e642..1218da68f 100644
--- a/src/org/infinity/resource/effects/Opcode194.java
+++ b/src/org/infinity/resource/effects/Opcode194.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode195.java b/src/org/infinity/resource/effects/Opcode195.java
index 3d0128125..a4dacf042 100644
--- a/src/org/infinity/resource/effects/Opcode195.java
+++ b/src/org/infinity/resource/effects/Opcode195.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode196.java b/src/org/infinity/resource/effects/Opcode196.java
index 6f6a4cbb0..36dc5354b 100644
--- a/src/org/infinity/resource/effects/Opcode196.java
+++ b/src/org/infinity/resource/effects/Opcode196.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode197.java b/src/org/infinity/resource/effects/Opcode197.java
index 2abf51d4c..4971a6599 100644
--- a/src/org/infinity/resource/effects/Opcode197.java
+++ b/src/org/infinity/resource/effects/Opcode197.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode198.java b/src/org/infinity/resource/effects/Opcode198.java
index da82ec98f..64270b478 100644
--- a/src/org/infinity/resource/effects/Opcode198.java
+++ b/src/org/infinity/resource/effects/Opcode198.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode199.java b/src/org/infinity/resource/effects/Opcode199.java
index 91f79f6e4..797792452 100644
--- a/src/org/infinity/resource/effects/Opcode199.java
+++ b/src/org/infinity/resource/effects/Opcode199.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode200.java b/src/org/infinity/resource/effects/Opcode200.java
index 60f5f24ac..23cbcbd03 100644
--- a/src/org/infinity/resource/effects/Opcode200.java
+++ b/src/org/infinity/resource/effects/Opcode200.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode201.java b/src/org/infinity/resource/effects/Opcode201.java
index 949f3a14e..12b094d60 100644
--- a/src/org/infinity/resource/effects/Opcode201.java
+++ b/src/org/infinity/resource/effects/Opcode201.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode202.java b/src/org/infinity/resource/effects/Opcode202.java
index 29187158b..83f51e0ef 100644
--- a/src/org/infinity/resource/effects/Opcode202.java
+++ b/src/org/infinity/resource/effects/Opcode202.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode203.java b/src/org/infinity/resource/effects/Opcode203.java
index 39eeaaf2d..4bec5773d 100644
--- a/src/org/infinity/resource/effects/Opcode203.java
+++ b/src/org/infinity/resource/effects/Opcode203.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode204.java b/src/org/infinity/resource/effects/Opcode204.java
index be4eea3a1..d416d0fc5 100644
--- a/src/org/infinity/resource/effects/Opcode204.java
+++ b/src/org/infinity/resource/effects/Opcode204.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode205.java b/src/org/infinity/resource/effects/Opcode205.java
index b139fc83e..1e3d329d5 100644
--- a/src/org/infinity/resource/effects/Opcode205.java
+++ b/src/org/infinity/resource/effects/Opcode205.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode206.java b/src/org/infinity/resource/effects/Opcode206.java
index 3c8c09e9b..9633facce 100644
--- a/src/org/infinity/resource/effects/Opcode206.java
+++ b/src/org/infinity/resource/effects/Opcode206.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode207.java b/src/org/infinity/resource/effects/Opcode207.java
index 51da402c7..aafb4c37f 100644
--- a/src/org/infinity/resource/effects/Opcode207.java
+++ b/src/org/infinity/resource/effects/Opcode207.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode208.java b/src/org/infinity/resource/effects/Opcode208.java
index 82d75cfa2..dca3eb58a 100644
--- a/src/org/infinity/resource/effects/Opcode208.java
+++ b/src/org/infinity/resource/effects/Opcode208.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode209.java b/src/org/infinity/resource/effects/Opcode209.java
index 989b3ca50..e4d2b4e09 100644
--- a/src/org/infinity/resource/effects/Opcode209.java
+++ b/src/org/infinity/resource/effects/Opcode209.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode210.java b/src/org/infinity/resource/effects/Opcode210.java
index 8e1e4b3fc..51e844fcf 100644
--- a/src/org/infinity/resource/effects/Opcode210.java
+++ b/src/org/infinity/resource/effects/Opcode210.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode211.java b/src/org/infinity/resource/effects/Opcode211.java
index 02e12176d..92fd09a19 100644
--- a/src/org/infinity/resource/effects/Opcode211.java
+++ b/src/org/infinity/resource/effects/Opcode211.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode212.java b/src/org/infinity/resource/effects/Opcode212.java
index 0328e758d..e8e7813d2 100644
--- a/src/org/infinity/resource/effects/Opcode212.java
+++ b/src/org/infinity/resource/effects/Opcode212.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode213.java b/src/org/infinity/resource/effects/Opcode213.java
index a862cea98..4a90cc72b 100644
--- a/src/org/infinity/resource/effects/Opcode213.java
+++ b/src/org/infinity/resource/effects/Opcode213.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode214.java b/src/org/infinity/resource/effects/Opcode214.java
index ab74ecacb..7340b6dcf 100644
--- a/src/org/infinity/resource/effects/Opcode214.java
+++ b/src/org/infinity/resource/effects/Opcode214.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode215.java b/src/org/infinity/resource/effects/Opcode215.java
index ad99681be..b1a9e3760 100644
--- a/src/org/infinity/resource/effects/Opcode215.java
+++ b/src/org/infinity/resource/effects/Opcode215.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode216.java b/src/org/infinity/resource/effects/Opcode216.java
index 7dfa9b739..33382e973 100644
--- a/src/org/infinity/resource/effects/Opcode216.java
+++ b/src/org/infinity/resource/effects/Opcode216.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode217.java b/src/org/infinity/resource/effects/Opcode217.java
index 1d61ec5b1..54ceada8f 100644
--- a/src/org/infinity/resource/effects/Opcode217.java
+++ b/src/org/infinity/resource/effects/Opcode217.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode218.java b/src/org/infinity/resource/effects/Opcode218.java
index 68d34ab10..71ddb2170 100644
--- a/src/org/infinity/resource/effects/Opcode218.java
+++ b/src/org/infinity/resource/effects/Opcode218.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode219.java b/src/org/infinity/resource/effects/Opcode219.java
index 6332610e0..3709669aa 100644
--- a/src/org/infinity/resource/effects/Opcode219.java
+++ b/src/org/infinity/resource/effects/Opcode219.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode220.java b/src/org/infinity/resource/effects/Opcode220.java
index cc08fbfb9..b14588447 100644
--- a/src/org/infinity/resource/effects/Opcode220.java
+++ b/src/org/infinity/resource/effects/Opcode220.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode221.java b/src/org/infinity/resource/effects/Opcode221.java
index 40045606a..f8391f2f0 100644
--- a/src/org/infinity/resource/effects/Opcode221.java
+++ b/src/org/infinity/resource/effects/Opcode221.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode222.java b/src/org/infinity/resource/effects/Opcode222.java
index 561914381..5b8a94dc7 100644
--- a/src/org/infinity/resource/effects/Opcode222.java
+++ b/src/org/infinity/resource/effects/Opcode222.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode223.java b/src/org/infinity/resource/effects/Opcode223.java
index 644637678..c28562f0d 100644
--- a/src/org/infinity/resource/effects/Opcode223.java
+++ b/src/org/infinity/resource/effects/Opcode223.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode224.java b/src/org/infinity/resource/effects/Opcode224.java
index 6fa3c0a6d..9d9f0dd51 100644
--- a/src/org/infinity/resource/effects/Opcode224.java
+++ b/src/org/infinity/resource/effects/Opcode224.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode225.java b/src/org/infinity/resource/effects/Opcode225.java
index c8297b005..79abac63d 100644
--- a/src/org/infinity/resource/effects/Opcode225.java
+++ b/src/org/infinity/resource/effects/Opcode225.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode226.java b/src/org/infinity/resource/effects/Opcode226.java
index 39a65cc4d..84d94018c 100644
--- a/src/org/infinity/resource/effects/Opcode226.java
+++ b/src/org/infinity/resource/effects/Opcode226.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode227.java b/src/org/infinity/resource/effects/Opcode227.java
index 6661da4b6..af9b5e6b5 100644
--- a/src/org/infinity/resource/effects/Opcode227.java
+++ b/src/org/infinity/resource/effects/Opcode227.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode228.java b/src/org/infinity/resource/effects/Opcode228.java
index 30e5ffe95..80442f042 100644
--- a/src/org/infinity/resource/effects/Opcode228.java
+++ b/src/org/infinity/resource/effects/Opcode228.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode229.java b/src/org/infinity/resource/effects/Opcode229.java
index e0c865e14..041fadf22 100644
--- a/src/org/infinity/resource/effects/Opcode229.java
+++ b/src/org/infinity/resource/effects/Opcode229.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode230.java b/src/org/infinity/resource/effects/Opcode230.java
index 18c4838bf..34a37de44 100644
--- a/src/org/infinity/resource/effects/Opcode230.java
+++ b/src/org/infinity/resource/effects/Opcode230.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode231.java b/src/org/infinity/resource/effects/Opcode231.java
index 8247becd2..73759cceb 100644
--- a/src/org/infinity/resource/effects/Opcode231.java
+++ b/src/org/infinity/resource/effects/Opcode231.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode232.java b/src/org/infinity/resource/effects/Opcode232.java
index c1fe5e785..849e3463b 100644
--- a/src/org/infinity/resource/effects/Opcode232.java
+++ b/src/org/infinity/resource/effects/Opcode232.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode233.java b/src/org/infinity/resource/effects/Opcode233.java
index 1c561181e..5f40a28ce 100644
--- a/src/org/infinity/resource/effects/Opcode233.java
+++ b/src/org/infinity/resource/effects/Opcode233.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode234.java b/src/org/infinity/resource/effects/Opcode234.java
index 10c35bda2..cafaf723c 100644
--- a/src/org/infinity/resource/effects/Opcode234.java
+++ b/src/org/infinity/resource/effects/Opcode234.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode235.java b/src/org/infinity/resource/effects/Opcode235.java
index 347dac199..3051deeaf 100644
--- a/src/org/infinity/resource/effects/Opcode235.java
+++ b/src/org/infinity/resource/effects/Opcode235.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode236.java b/src/org/infinity/resource/effects/Opcode236.java
index 77f62a5b6..6be9422c4 100644
--- a/src/org/infinity/resource/effects/Opcode236.java
+++ b/src/org/infinity/resource/effects/Opcode236.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode237.java b/src/org/infinity/resource/effects/Opcode237.java
index 20042040b..e616ae6ac 100644
--- a/src/org/infinity/resource/effects/Opcode237.java
+++ b/src/org/infinity/resource/effects/Opcode237.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode238.java b/src/org/infinity/resource/effects/Opcode238.java
index b20c97546..50601bdd3 100644
--- a/src/org/infinity/resource/effects/Opcode238.java
+++ b/src/org/infinity/resource/effects/Opcode238.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode239.java b/src/org/infinity/resource/effects/Opcode239.java
index f10f370f0..332395e94 100644
--- a/src/org/infinity/resource/effects/Opcode239.java
+++ b/src/org/infinity/resource/effects/Opcode239.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode240.java b/src/org/infinity/resource/effects/Opcode240.java
index e9b39f657..a9812ef66 100644
--- a/src/org/infinity/resource/effects/Opcode240.java
+++ b/src/org/infinity/resource/effects/Opcode240.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode241.java b/src/org/infinity/resource/effects/Opcode241.java
index 7aebc3199..c915005d8 100644
--- a/src/org/infinity/resource/effects/Opcode241.java
+++ b/src/org/infinity/resource/effects/Opcode241.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode242.java b/src/org/infinity/resource/effects/Opcode242.java
index a369a506f..ce38c9ce5 100644
--- a/src/org/infinity/resource/effects/Opcode242.java
+++ b/src/org/infinity/resource/effects/Opcode242.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode243.java b/src/org/infinity/resource/effects/Opcode243.java
index b0d955662..1d31064b3 100644
--- a/src/org/infinity/resource/effects/Opcode243.java
+++ b/src/org/infinity/resource/effects/Opcode243.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode244.java b/src/org/infinity/resource/effects/Opcode244.java
index d0951358b..383371b00 100644
--- a/src/org/infinity/resource/effects/Opcode244.java
+++ b/src/org/infinity/resource/effects/Opcode244.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode245.java b/src/org/infinity/resource/effects/Opcode245.java
index 8c53f8f3a..9491e9862 100644
--- a/src/org/infinity/resource/effects/Opcode245.java
+++ b/src/org/infinity/resource/effects/Opcode245.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode246.java b/src/org/infinity/resource/effects/Opcode246.java
index 8c97b7ff5..a8628f9d5 100644
--- a/src/org/infinity/resource/effects/Opcode246.java
+++ b/src/org/infinity/resource/effects/Opcode246.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode247.java b/src/org/infinity/resource/effects/Opcode247.java
index 6b7cbc76b..452798394 100644
--- a/src/org/infinity/resource/effects/Opcode247.java
+++ b/src/org/infinity/resource/effects/Opcode247.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode248.java b/src/org/infinity/resource/effects/Opcode248.java
index b5374df4c..185bfdf1b 100644
--- a/src/org/infinity/resource/effects/Opcode248.java
+++ b/src/org/infinity/resource/effects/Opcode248.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode249.java b/src/org/infinity/resource/effects/Opcode249.java
index f74bc96fe..343a6a66d 100644
--- a/src/org/infinity/resource/effects/Opcode249.java
+++ b/src/org/infinity/resource/effects/Opcode249.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode250.java b/src/org/infinity/resource/effects/Opcode250.java
index e4b3b8133..11599ca13 100644
--- a/src/org/infinity/resource/effects/Opcode250.java
+++ b/src/org/infinity/resource/effects/Opcode250.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode251.java b/src/org/infinity/resource/effects/Opcode251.java
index 82ccd1776..f9ad3877f 100644
--- a/src/org/infinity/resource/effects/Opcode251.java
+++ b/src/org/infinity/resource/effects/Opcode251.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode252.java b/src/org/infinity/resource/effects/Opcode252.java
index 99fde8284..0d9da7107 100644
--- a/src/org/infinity/resource/effects/Opcode252.java
+++ b/src/org/infinity/resource/effects/Opcode252.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode253.java b/src/org/infinity/resource/effects/Opcode253.java
index 1ee2e0492..833529504 100644
--- a/src/org/infinity/resource/effects/Opcode253.java
+++ b/src/org/infinity/resource/effects/Opcode253.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode254.java b/src/org/infinity/resource/effects/Opcode254.java
index 42eb8e06b..42e93702d 100644
--- a/src/org/infinity/resource/effects/Opcode254.java
+++ b/src/org/infinity/resource/effects/Opcode254.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode255.java b/src/org/infinity/resource/effects/Opcode255.java
index 946ae2efa..05b24f496 100644
--- a/src/org/infinity/resource/effects/Opcode255.java
+++ b/src/org/infinity/resource/effects/Opcode255.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode256.java b/src/org/infinity/resource/effects/Opcode256.java
index 198afc0cb..a9abf29b5 100644
--- a/src/org/infinity/resource/effects/Opcode256.java
+++ b/src/org/infinity/resource/effects/Opcode256.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode257.java b/src/org/infinity/resource/effects/Opcode257.java
index 4a58d673c..08192b25a 100644
--- a/src/org/infinity/resource/effects/Opcode257.java
+++ b/src/org/infinity/resource/effects/Opcode257.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode258.java b/src/org/infinity/resource/effects/Opcode258.java
index 78307f3cd..c22b31f4a 100644
--- a/src/org/infinity/resource/effects/Opcode258.java
+++ b/src/org/infinity/resource/effects/Opcode258.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode259.java b/src/org/infinity/resource/effects/Opcode259.java
index 5935c5f97..af8e54f23 100644
--- a/src/org/infinity/resource/effects/Opcode259.java
+++ b/src/org/infinity/resource/effects/Opcode259.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode260.java b/src/org/infinity/resource/effects/Opcode260.java
index e17ab4335..72090b45c 100644
--- a/src/org/infinity/resource/effects/Opcode260.java
+++ b/src/org/infinity/resource/effects/Opcode260.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode261.java b/src/org/infinity/resource/effects/Opcode261.java
index 7048f98e6..c16312936 100644
--- a/src/org/infinity/resource/effects/Opcode261.java
+++ b/src/org/infinity/resource/effects/Opcode261.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode262.java b/src/org/infinity/resource/effects/Opcode262.java
index a4036e39e..d615c9d32 100644
--- a/src/org/infinity/resource/effects/Opcode262.java
+++ b/src/org/infinity/resource/effects/Opcode262.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode263.java b/src/org/infinity/resource/effects/Opcode263.java
index 81f5f93fe..13a1b17aa 100644
--- a/src/org/infinity/resource/effects/Opcode263.java
+++ b/src/org/infinity/resource/effects/Opcode263.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode264.java b/src/org/infinity/resource/effects/Opcode264.java
index bf2bf956d..fecfee0b1 100644
--- a/src/org/infinity/resource/effects/Opcode264.java
+++ b/src/org/infinity/resource/effects/Opcode264.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode265.java b/src/org/infinity/resource/effects/Opcode265.java
index 6b2a65376..865f7a4e5 100644
--- a/src/org/infinity/resource/effects/Opcode265.java
+++ b/src/org/infinity/resource/effects/Opcode265.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode266.java b/src/org/infinity/resource/effects/Opcode266.java
index e2010ad2e..3f071db1d 100644
--- a/src/org/infinity/resource/effects/Opcode266.java
+++ b/src/org/infinity/resource/effects/Opcode266.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode267.java b/src/org/infinity/resource/effects/Opcode267.java
index 5bb1117f8..871d33393 100644
--- a/src/org/infinity/resource/effects/Opcode267.java
+++ b/src/org/infinity/resource/effects/Opcode267.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode268.java b/src/org/infinity/resource/effects/Opcode268.java
index 4d35d682d..28b7a4993 100644
--- a/src/org/infinity/resource/effects/Opcode268.java
+++ b/src/org/infinity/resource/effects/Opcode268.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode269.java b/src/org/infinity/resource/effects/Opcode269.java
index 62ed0ecec..8499583c3 100644
--- a/src/org/infinity/resource/effects/Opcode269.java
+++ b/src/org/infinity/resource/effects/Opcode269.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode270.java b/src/org/infinity/resource/effects/Opcode270.java
index de9392327..912f47123 100644
--- a/src/org/infinity/resource/effects/Opcode270.java
+++ b/src/org/infinity/resource/effects/Opcode270.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode271.java b/src/org/infinity/resource/effects/Opcode271.java
index 122ffa09f..255b98203 100644
--- a/src/org/infinity/resource/effects/Opcode271.java
+++ b/src/org/infinity/resource/effects/Opcode271.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode272.java b/src/org/infinity/resource/effects/Opcode272.java
index 4d37ba2ff..c5a4e164a 100644
--- a/src/org/infinity/resource/effects/Opcode272.java
+++ b/src/org/infinity/resource/effects/Opcode272.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode273.java b/src/org/infinity/resource/effects/Opcode273.java
index a7a22b924..a9eb236a9 100644
--- a/src/org/infinity/resource/effects/Opcode273.java
+++ b/src/org/infinity/resource/effects/Opcode273.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode274.java b/src/org/infinity/resource/effects/Opcode274.java
index 7a82e881b..1c6c17c5f 100644
--- a/src/org/infinity/resource/effects/Opcode274.java
+++ b/src/org/infinity/resource/effects/Opcode274.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode275.java b/src/org/infinity/resource/effects/Opcode275.java
index ca0a4b580..ec9e9717d 100644
--- a/src/org/infinity/resource/effects/Opcode275.java
+++ b/src/org/infinity/resource/effects/Opcode275.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode276.java b/src/org/infinity/resource/effects/Opcode276.java
index 21b38ec61..4c5b69baf 100644
--- a/src/org/infinity/resource/effects/Opcode276.java
+++ b/src/org/infinity/resource/effects/Opcode276.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode277.java b/src/org/infinity/resource/effects/Opcode277.java
index 99ac55682..5581fbdcd 100644
--- a/src/org/infinity/resource/effects/Opcode277.java
+++ b/src/org/infinity/resource/effects/Opcode277.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode278.java b/src/org/infinity/resource/effects/Opcode278.java
index 3680de572..4d5b82f9a 100644
--- a/src/org/infinity/resource/effects/Opcode278.java
+++ b/src/org/infinity/resource/effects/Opcode278.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode279.java b/src/org/infinity/resource/effects/Opcode279.java
index 3b07f1b39..7e0ad6ecf 100644
--- a/src/org/infinity/resource/effects/Opcode279.java
+++ b/src/org/infinity/resource/effects/Opcode279.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode280.java b/src/org/infinity/resource/effects/Opcode280.java
index cba3dd2b0..9640ae1e1 100644
--- a/src/org/infinity/resource/effects/Opcode280.java
+++ b/src/org/infinity/resource/effects/Opcode280.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode281.java b/src/org/infinity/resource/effects/Opcode281.java
index 7fa1eca01..6dbff9709 100644
--- a/src/org/infinity/resource/effects/Opcode281.java
+++ b/src/org/infinity/resource/effects/Opcode281.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode282.java b/src/org/infinity/resource/effects/Opcode282.java
index ac4aa30f8..3b6f08b86 100644
--- a/src/org/infinity/resource/effects/Opcode282.java
+++ b/src/org/infinity/resource/effects/Opcode282.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode283.java b/src/org/infinity/resource/effects/Opcode283.java
index dcc45d8c2..da612acff 100644
--- a/src/org/infinity/resource/effects/Opcode283.java
+++ b/src/org/infinity/resource/effects/Opcode283.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode284.java b/src/org/infinity/resource/effects/Opcode284.java
index 6668f3f1e..16f03a25c 100644
--- a/src/org/infinity/resource/effects/Opcode284.java
+++ b/src/org/infinity/resource/effects/Opcode284.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode285.java b/src/org/infinity/resource/effects/Opcode285.java
index c7b36d72d..1880b63c9 100644
--- a/src/org/infinity/resource/effects/Opcode285.java
+++ b/src/org/infinity/resource/effects/Opcode285.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode286.java b/src/org/infinity/resource/effects/Opcode286.java
index 7739a066e..f088542ed 100644
--- a/src/org/infinity/resource/effects/Opcode286.java
+++ b/src/org/infinity/resource/effects/Opcode286.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode287.java b/src/org/infinity/resource/effects/Opcode287.java
index d59e1e250..00ecf02dd 100644
--- a/src/org/infinity/resource/effects/Opcode287.java
+++ b/src/org/infinity/resource/effects/Opcode287.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode288.java b/src/org/infinity/resource/effects/Opcode288.java
index 15c6d3f27..4159d81c8 100644
--- a/src/org/infinity/resource/effects/Opcode288.java
+++ b/src/org/infinity/resource/effects/Opcode288.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode289.java b/src/org/infinity/resource/effects/Opcode289.java
index 1cd178ce1..a084d6c1e 100644
--- a/src/org/infinity/resource/effects/Opcode289.java
+++ b/src/org/infinity/resource/effects/Opcode289.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode290.java b/src/org/infinity/resource/effects/Opcode290.java
index a7ad2e3aa..323248d5f 100644
--- a/src/org/infinity/resource/effects/Opcode290.java
+++ b/src/org/infinity/resource/effects/Opcode290.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode291.java b/src/org/infinity/resource/effects/Opcode291.java
index 5389fe5b7..422e8d745 100644
--- a/src/org/infinity/resource/effects/Opcode291.java
+++ b/src/org/infinity/resource/effects/Opcode291.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode292.java b/src/org/infinity/resource/effects/Opcode292.java
index b9e10556c..4d3784396 100644
--- a/src/org/infinity/resource/effects/Opcode292.java
+++ b/src/org/infinity/resource/effects/Opcode292.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode293.java b/src/org/infinity/resource/effects/Opcode293.java
index b097b31c9..68070bd6a 100644
--- a/src/org/infinity/resource/effects/Opcode293.java
+++ b/src/org/infinity/resource/effects/Opcode293.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode294.java b/src/org/infinity/resource/effects/Opcode294.java
index c7fbe6387..0ac518746 100644
--- a/src/org/infinity/resource/effects/Opcode294.java
+++ b/src/org/infinity/resource/effects/Opcode294.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode295.java b/src/org/infinity/resource/effects/Opcode295.java
index 9d753661c..2da9aec9c 100644
--- a/src/org/infinity/resource/effects/Opcode295.java
+++ b/src/org/infinity/resource/effects/Opcode295.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode296.java b/src/org/infinity/resource/effects/Opcode296.java
index 513b09a8e..99eaac68c 100644
--- a/src/org/infinity/resource/effects/Opcode296.java
+++ b/src/org/infinity/resource/effects/Opcode296.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode297.java b/src/org/infinity/resource/effects/Opcode297.java
index cde8c6b66..df8fc9524 100644
--- a/src/org/infinity/resource/effects/Opcode297.java
+++ b/src/org/infinity/resource/effects/Opcode297.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode298.java b/src/org/infinity/resource/effects/Opcode298.java
index 14e391c48..3cfa52778 100644
--- a/src/org/infinity/resource/effects/Opcode298.java
+++ b/src/org/infinity/resource/effects/Opcode298.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode299.java b/src/org/infinity/resource/effects/Opcode299.java
index 9db3af671..fb4ad92b7 100644
--- a/src/org/infinity/resource/effects/Opcode299.java
+++ b/src/org/infinity/resource/effects/Opcode299.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode300.java b/src/org/infinity/resource/effects/Opcode300.java
index 248706247..665a58061 100644
--- a/src/org/infinity/resource/effects/Opcode300.java
+++ b/src/org/infinity/resource/effects/Opcode300.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode301.java b/src/org/infinity/resource/effects/Opcode301.java
index 37701d8ea..90ced3345 100644
--- a/src/org/infinity/resource/effects/Opcode301.java
+++ b/src/org/infinity/resource/effects/Opcode301.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode302.java b/src/org/infinity/resource/effects/Opcode302.java
index a234babbe..2b4dfdedb 100644
--- a/src/org/infinity/resource/effects/Opcode302.java
+++ b/src/org/infinity/resource/effects/Opcode302.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode303.java b/src/org/infinity/resource/effects/Opcode303.java
index 37459513e..63a697cc4 100644
--- a/src/org/infinity/resource/effects/Opcode303.java
+++ b/src/org/infinity/resource/effects/Opcode303.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode304.java b/src/org/infinity/resource/effects/Opcode304.java
index 89486bb36..e54edab24 100644
--- a/src/org/infinity/resource/effects/Opcode304.java
+++ b/src/org/infinity/resource/effects/Opcode304.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode305.java b/src/org/infinity/resource/effects/Opcode305.java
index ace5c9a4e..3fbc5ceda 100644
--- a/src/org/infinity/resource/effects/Opcode305.java
+++ b/src/org/infinity/resource/effects/Opcode305.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode306.java b/src/org/infinity/resource/effects/Opcode306.java
index dd810d03b..210550006 100644
--- a/src/org/infinity/resource/effects/Opcode306.java
+++ b/src/org/infinity/resource/effects/Opcode306.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode307.java b/src/org/infinity/resource/effects/Opcode307.java
index ae2b37792..4cc1f187e 100644
--- a/src/org/infinity/resource/effects/Opcode307.java
+++ b/src/org/infinity/resource/effects/Opcode307.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode308.java b/src/org/infinity/resource/effects/Opcode308.java
index c9410a184..aa8c501df 100644
--- a/src/org/infinity/resource/effects/Opcode308.java
+++ b/src/org/infinity/resource/effects/Opcode308.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode309.java b/src/org/infinity/resource/effects/Opcode309.java
index 66bf51a6a..6e890a7b9 100644
--- a/src/org/infinity/resource/effects/Opcode309.java
+++ b/src/org/infinity/resource/effects/Opcode309.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode310.java b/src/org/infinity/resource/effects/Opcode310.java
index bd0308d8a..86356ac5b 100644
--- a/src/org/infinity/resource/effects/Opcode310.java
+++ b/src/org/infinity/resource/effects/Opcode310.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode311.java b/src/org/infinity/resource/effects/Opcode311.java
index 8207266e6..28ac7d4fc 100644
--- a/src/org/infinity/resource/effects/Opcode311.java
+++ b/src/org/infinity/resource/effects/Opcode311.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode312.java b/src/org/infinity/resource/effects/Opcode312.java
index cd976bcdc..1c7916ba4 100644
--- a/src/org/infinity/resource/effects/Opcode312.java
+++ b/src/org/infinity/resource/effects/Opcode312.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode313.java b/src/org/infinity/resource/effects/Opcode313.java
index aaeed79fb..7ed74de7e 100644
--- a/src/org/infinity/resource/effects/Opcode313.java
+++ b/src/org/infinity/resource/effects/Opcode313.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode314.java b/src/org/infinity/resource/effects/Opcode314.java
index 33a7663e1..207267b7f 100644
--- a/src/org/infinity/resource/effects/Opcode314.java
+++ b/src/org/infinity/resource/effects/Opcode314.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode315.java b/src/org/infinity/resource/effects/Opcode315.java
index 9c2151ab4..04581777c 100644
--- a/src/org/infinity/resource/effects/Opcode315.java
+++ b/src/org/infinity/resource/effects/Opcode315.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode316.java b/src/org/infinity/resource/effects/Opcode316.java
index 423dbe616..0a905dafb 100644
--- a/src/org/infinity/resource/effects/Opcode316.java
+++ b/src/org/infinity/resource/effects/Opcode316.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode317.java b/src/org/infinity/resource/effects/Opcode317.java
index 4c39f5308..e44eb79c1 100644
--- a/src/org/infinity/resource/effects/Opcode317.java
+++ b/src/org/infinity/resource/effects/Opcode317.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode318.java b/src/org/infinity/resource/effects/Opcode318.java
index fe7efceb4..0c3d4ddbc 100644
--- a/src/org/infinity/resource/effects/Opcode318.java
+++ b/src/org/infinity/resource/effects/Opcode318.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode319.java b/src/org/infinity/resource/effects/Opcode319.java
index 3fb00d8fe..acf660863 100644
--- a/src/org/infinity/resource/effects/Opcode319.java
+++ b/src/org/infinity/resource/effects/Opcode319.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
@@ -51,6 +51,7 @@ protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offs
list.set(1, power);
}
+ String resType = null;
byte power = buffer.get(offset - 1);
if (isEEEx() && (power == 2 || power == 3)) {
final SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4);
@@ -65,9 +66,12 @@ protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offs
param2.addUpdateListener((UpdateListener)parent);
list.add(param2.createIdsValueFromType(buffer));
list.add(param2);
+ if (param2.getValue() == 11) {
+ resType = EFFECT_STRING;
+ }
}
- return null;
+ return resType;
}
@Override
diff --git a/src/org/infinity/resource/effects/Opcode320.java b/src/org/infinity/resource/effects/Opcode320.java
index 43623ca6e..24e5164d2 100644
--- a/src/org/infinity/resource/effects/Opcode320.java
+++ b/src/org/infinity/resource/effects/Opcode320.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode321.java b/src/org/infinity/resource/effects/Opcode321.java
index c2713b07f..4d93a761b 100644
--- a/src/org/infinity/resource/effects/Opcode321.java
+++ b/src/org/infinity/resource/effects/Opcode321.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode322.java b/src/org/infinity/resource/effects/Opcode322.java
index 29b0437da..d77ed28b8 100644
--- a/src/org/infinity/resource/effects/Opcode322.java
+++ b/src/org/infinity/resource/effects/Opcode322.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode323.java b/src/org/infinity/resource/effects/Opcode323.java
index 71efdac58..5b42587c8 100644
--- a/src/org/infinity/resource/effects/Opcode323.java
+++ b/src/org/infinity/resource/effects/Opcode323.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode324.java b/src/org/infinity/resource/effects/Opcode324.java
index 796f5e159..0378b91cf 100644
--- a/src/org/infinity/resource/effects/Opcode324.java
+++ b/src/org/infinity/resource/effects/Opcode324.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode325.java b/src/org/infinity/resource/effects/Opcode325.java
index 081e5ad27..c30958c26 100644
--- a/src/org/infinity/resource/effects/Opcode325.java
+++ b/src/org/infinity/resource/effects/Opcode325.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode326.java b/src/org/infinity/resource/effects/Opcode326.java
index 68bce8ae3..b541de372 100644
--- a/src/org/infinity/resource/effects/Opcode326.java
+++ b/src/org/infinity/resource/effects/Opcode326.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode327.java b/src/org/infinity/resource/effects/Opcode327.java
index 27d219bab..3230ce122 100644
--- a/src/org/infinity/resource/effects/Opcode327.java
+++ b/src/org/infinity/resource/effects/Opcode327.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode328.java b/src/org/infinity/resource/effects/Opcode328.java
index 0d63f6470..da158eda8 100644
--- a/src/org/infinity/resource/effects/Opcode328.java
+++ b/src/org/infinity/resource/effects/Opcode328.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode329.java b/src/org/infinity/resource/effects/Opcode329.java
index 1fb4cd5e7..54aefbc46 100644
--- a/src/org/infinity/resource/effects/Opcode329.java
+++ b/src/org/infinity/resource/effects/Opcode329.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode330.java b/src/org/infinity/resource/effects/Opcode330.java
index 4801cbc2b..c7e78c909 100644
--- a/src/org/infinity/resource/effects/Opcode330.java
+++ b/src/org/infinity/resource/effects/Opcode330.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode331.java b/src/org/infinity/resource/effects/Opcode331.java
index 4a1483933..048c81bdb 100644
--- a/src/org/infinity/resource/effects/Opcode331.java
+++ b/src/org/infinity/resource/effects/Opcode331.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode332.java b/src/org/infinity/resource/effects/Opcode332.java
index 071e80640..7bafb46cc 100644
--- a/src/org/infinity/resource/effects/Opcode332.java
+++ b/src/org/infinity/resource/effects/Opcode332.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode333.java b/src/org/infinity/resource/effects/Opcode333.java
index 7cc79d480..5b4663a01 100644
--- a/src/org/infinity/resource/effects/Opcode333.java
+++ b/src/org/infinity/resource/effects/Opcode333.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode334.java b/src/org/infinity/resource/effects/Opcode334.java
index 37a1dcce6..e2cf99c5e 100644
--- a/src/org/infinity/resource/effects/Opcode334.java
+++ b/src/org/infinity/resource/effects/Opcode334.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode335.java b/src/org/infinity/resource/effects/Opcode335.java
index 3b67b20f8..3b7168c66 100644
--- a/src/org/infinity/resource/effects/Opcode335.java
+++ b/src/org/infinity/resource/effects/Opcode335.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode336.java b/src/org/infinity/resource/effects/Opcode336.java
index 0f7ca5baf..ef242ec7a 100644
--- a/src/org/infinity/resource/effects/Opcode336.java
+++ b/src/org/infinity/resource/effects/Opcode336.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode337.java b/src/org/infinity/resource/effects/Opcode337.java
index b6d6c002a..c45f2f69c 100644
--- a/src/org/infinity/resource/effects/Opcode337.java
+++ b/src/org/infinity/resource/effects/Opcode337.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode338.java b/src/org/infinity/resource/effects/Opcode338.java
index cc13199c4..3feea0eff 100644
--- a/src/org/infinity/resource/effects/Opcode338.java
+++ b/src/org/infinity/resource/effects/Opcode338.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode339.java b/src/org/infinity/resource/effects/Opcode339.java
index eaba33ef9..8bf57d153 100644
--- a/src/org/infinity/resource/effects/Opcode339.java
+++ b/src/org/infinity/resource/effects/Opcode339.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode340.java b/src/org/infinity/resource/effects/Opcode340.java
index 862b4aa2c..2a5b1b6af 100644
--- a/src/org/infinity/resource/effects/Opcode340.java
+++ b/src/org/infinity/resource/effects/Opcode340.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode341.java b/src/org/infinity/resource/effects/Opcode341.java
index 0b7ebb3e5..53df681f4 100644
--- a/src/org/infinity/resource/effects/Opcode341.java
+++ b/src/org/infinity/resource/effects/Opcode341.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode342.java b/src/org/infinity/resource/effects/Opcode342.java
index e6c9ba4f2..aa026abe2 100644
--- a/src/org/infinity/resource/effects/Opcode342.java
+++ b/src/org/infinity/resource/effects/Opcode342.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode343.java b/src/org/infinity/resource/effects/Opcode343.java
index fc4ea1b8a..e1d19a76e 100644
--- a/src/org/infinity/resource/effects/Opcode343.java
+++ b/src/org/infinity/resource/effects/Opcode343.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode344.java b/src/org/infinity/resource/effects/Opcode344.java
index 9ccb6c1d0..3177b878b 100644
--- a/src/org/infinity/resource/effects/Opcode344.java
+++ b/src/org/infinity/resource/effects/Opcode344.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode345.java b/src/org/infinity/resource/effects/Opcode345.java
index 31b0b60fa..e76809bd8 100644
--- a/src/org/infinity/resource/effects/Opcode345.java
+++ b/src/org/infinity/resource/effects/Opcode345.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode346.java b/src/org/infinity/resource/effects/Opcode346.java
index d748f47ad..60169318b 100644
--- a/src/org/infinity/resource/effects/Opcode346.java
+++ b/src/org/infinity/resource/effects/Opcode346.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode347.java b/src/org/infinity/resource/effects/Opcode347.java
index a7d688bfc..c4a930713 100644
--- a/src/org/infinity/resource/effects/Opcode347.java
+++ b/src/org/infinity/resource/effects/Opcode347.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode348.java b/src/org/infinity/resource/effects/Opcode348.java
new file mode 100644
index 000000000..967303aea
--- /dev/null
+++ b/src/org/infinity/resource/effects/Opcode348.java
@@ -0,0 +1,51 @@
+// Near Infinity - An Infinity Engine Browser and Editor
+// Copyright (C) 2001 Jon Olav Hauglid
+// See LICENSE.txt for license information
+
+package org.infinity.resource.effects;
+
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.infinity.datatype.Datatype;
+import org.infinity.datatype.DecNumber;
+import org.infinity.resource.Profile;
+import org.infinity.resource.StructEntry;
+
+/**
+ * Implemention of opcode 348.
+ */
+public class Opcode348 extends BaseOpcode {
+ private static final String EFFECT_BASE_AMOUNT = "Base amount";
+ private static final String EFFECT_AMOUNT_PER_LEVEL = "Amount per level";
+
+ private static final String RES_TYPE = "BAM:VVC";
+
+ /** Returns the opcode name for the current game variant. */
+ private static String getOpcodeName() {
+ switch (Profile.getEngine()) {
+ case EE:
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ return "Cloak of Warding";
+ }
+ default:
+ return null;
+ }
+ }
+
+ public Opcode348() {
+ super(348, getOpcodeName());
+ }
+
+ @Override
+ protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list,
+ boolean isVersion1) {
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ list.add(new DecNumber(buffer, offset, 4, EFFECT_BASE_AMOUNT));
+ list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_AMOUNT_PER_LEVEL));
+ return RES_TYPE;
+ } else {
+ return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1);
+ }
+ }
+}
diff --git a/src/org/infinity/resource/effects/Opcode349.java b/src/org/infinity/resource/effects/Opcode349.java
new file mode 100644
index 000000000..5c7a764aa
--- /dev/null
+++ b/src/org/infinity/resource/effects/Opcode349.java
@@ -0,0 +1,51 @@
+// Near Infinity - An Infinity Engine Browser and Editor
+// Copyright (C) 2001 Jon Olav Hauglid
+// See LICENSE.txt for license information
+
+package org.infinity.resource.effects;
+
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.infinity.datatype.Datatype;
+import org.infinity.datatype.DecNumber;
+import org.infinity.resource.AbstractStruct;
+import org.infinity.resource.Profile;
+import org.infinity.resource.StructEntry;
+
+/**
+ * Implemention of opcode 349.
+ */
+public class Opcode349 extends BaseOpcode {
+ private static final String EFFECT_DAMAGE_EFFECTS_TO_REFLECT = "# damage effects to reflect";
+
+ private static final String RES_TYPE = "BAM:VVC";
+
+ /** Returns the opcode name for the current game variant. */
+ private static String getOpcodeName() {
+ switch (Profile.getEngine()) {
+ case EE:
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ return "Pain Mirror";
+ }
+ default:
+ return null;
+ }
+ }
+
+ public Opcode349() {
+ super(349, getOpcodeName());
+ }
+
+ @Override
+ protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list,
+ boolean isVersion1) {
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ list.add(new DecNumber(buffer, offset, 4, EFFECT_DAMAGE_EFFECTS_TO_REFLECT));
+ list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED));
+ return RES_TYPE;
+ } else {
+ return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1);
+ }
+ }
+}
diff --git a/src/org/infinity/resource/effects/Opcode350.java b/src/org/infinity/resource/effects/Opcode350.java
new file mode 100644
index 000000000..7fffa09f8
--- /dev/null
+++ b/src/org/infinity/resource/effects/Opcode350.java
@@ -0,0 +1,52 @@
+// Near Infinity - An Infinity Engine Browser and Editor
+// Copyright (C) 2001 Jon Olav Hauglid
+// See LICENSE.txt for license information
+
+package org.infinity.resource.effects;
+
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.infinity.datatype.Bitmap;
+import org.infinity.datatype.Datatype;
+import org.infinity.datatype.DecNumber;
+import org.infinity.resource.AbstractStruct;
+import org.infinity.resource.Profile;
+import org.infinity.resource.StructEntry;
+
+/**
+ * Implemention of opcode 350.
+ */
+public class Opcode350 extends BaseOpcode {
+ private static final String EFFECT_ENABLED = "Enabled?";
+
+ private static final String RES_TYPE = "BAM:VVC";
+
+ /** Returns the opcode name for the current game variant. */
+ private static String getOpcodeName() {
+ switch (Profile.getEngine()) {
+ case EE:
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ return "Guardian Mantle";
+ }
+ default:
+ return null;
+ }
+ }
+
+ public Opcode350() {
+ super(350, getOpcodeName());
+ }
+
+ @Override
+ protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list,
+ boolean isVersion1) {
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ list.add(new Bitmap(buffer, offset, 4, EFFECT_ENABLED, AbstractStruct.OPTION_NOYES));
+ list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED));
+ return RES_TYPE;
+ } else {
+ return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1);
+ }
+ }
+}
diff --git a/src/org/infinity/resource/effects/Opcode351.java b/src/org/infinity/resource/effects/Opcode351.java
new file mode 100644
index 000000000..a506345bb
--- /dev/null
+++ b/src/org/infinity/resource/effects/Opcode351.java
@@ -0,0 +1,53 @@
+// Near Infinity - An Infinity Engine Browser and Editor
+// Copyright (C) 2001 Jon Olav Hauglid
+// See LICENSE.txt for license information
+
+package org.infinity.resource.effects;
+
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.infinity.datatype.Bitmap;
+import org.infinity.datatype.Datatype;
+import org.infinity.datatype.DecNumber;
+import org.infinity.resource.AbstractStruct;
+import org.infinity.resource.Profile;
+import org.infinity.resource.StructEntry;
+
+/**
+ * Implemention of opcode 351.
+ */
+public class Opcode351 extends BaseOpcode {
+ private static final String EFFECT_AMOUNT = "Amount";
+ private static final String EFFECT_ADD_CASTER_LEVEL_BONUS = "Add caster level bonus";
+
+ private static final String RES_TYPE = "BAM:VVC";
+
+ /** Returns the opcode name for the current game variant. */
+ private static String getOpcodeName() {
+ switch (Profile.getEngine()) {
+ case EE:
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ return "Armor";
+ }
+ default:
+ return null;
+ }
+ }
+
+ public Opcode351() {
+ super(351, getOpcodeName());
+ }
+
+ @Override
+ protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list,
+ boolean isVersion1) {
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT));
+ list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ADD_CASTER_LEVEL_BONUS, AbstractStruct.OPTION_NOYES));
+ return RES_TYPE;
+ } else {
+ return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1);
+ }
+ }
+}
diff --git a/src/org/infinity/resource/effects/Opcode352.java b/src/org/infinity/resource/effects/Opcode352.java
index 56f1bc074..c7c2bcec5 100644
--- a/src/org/infinity/resource/effects/Opcode352.java
+++ b/src/org/infinity/resource/effects/Opcode352.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode353.java b/src/org/infinity/resource/effects/Opcode353.java
index 65f5a4501..19b41bb06 100644
--- a/src/org/infinity/resource/effects/Opcode353.java
+++ b/src/org/infinity/resource/effects/Opcode353.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode354.java b/src/org/infinity/resource/effects/Opcode354.java
index 0efea23df..2757e3a44 100644
--- a/src/org/infinity/resource/effects/Opcode354.java
+++ b/src/org/infinity/resource/effects/Opcode354.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode355.java b/src/org/infinity/resource/effects/Opcode355.java
index 2d65a00d3..3b2993ca0 100644
--- a/src/org/infinity/resource/effects/Opcode355.java
+++ b/src/org/infinity/resource/effects/Opcode355.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode356.java b/src/org/infinity/resource/effects/Opcode356.java
index 3d865f6f8..15bb49fdf 100644
--- a/src/org/infinity/resource/effects/Opcode356.java
+++ b/src/org/infinity/resource/effects/Opcode356.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode357.java b/src/org/infinity/resource/effects/Opcode357.java
index b8007970d..f41dcaeba 100644
--- a/src/org/infinity/resource/effects/Opcode357.java
+++ b/src/org/infinity/resource/effects/Opcode357.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode358.java b/src/org/infinity/resource/effects/Opcode358.java
index ae360f1a9..c74ed5b2f 100644
--- a/src/org/infinity/resource/effects/Opcode358.java
+++ b/src/org/infinity/resource/effects/Opcode358.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode360.java b/src/org/infinity/resource/effects/Opcode360.java
index d848ce365..c79d4ecf6 100644
--- a/src/org/infinity/resource/effects/Opcode360.java
+++ b/src/org/infinity/resource/effects/Opcode360.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode361.java b/src/org/infinity/resource/effects/Opcode361.java
index bf8ead6b6..6ce6de11b 100644
--- a/src/org/infinity/resource/effects/Opcode361.java
+++ b/src/org/infinity/resource/effects/Opcode361.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode362.java b/src/org/infinity/resource/effects/Opcode362.java
index 1cc948dc7..5befba577 100644
--- a/src/org/infinity/resource/effects/Opcode362.java
+++ b/src/org/infinity/resource/effects/Opcode362.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode363.java b/src/org/infinity/resource/effects/Opcode363.java
index 3a23391c5..f628f9123 100644
--- a/src/org/infinity/resource/effects/Opcode363.java
+++ b/src/org/infinity/resource/effects/Opcode363.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode365.java b/src/org/infinity/resource/effects/Opcode365.java
index 18625e053..36fca3485 100644
--- a/src/org/infinity/resource/effects/Opcode365.java
+++ b/src/org/infinity/resource/effects/Opcode365.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode366.java b/src/org/infinity/resource/effects/Opcode366.java
index 9754890c7..773e2ffee 100644
--- a/src/org/infinity/resource/effects/Opcode366.java
+++ b/src/org/infinity/resource/effects/Opcode366.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode367.java b/src/org/infinity/resource/effects/Opcode367.java
index ef52a92af..59791afd0 100644
--- a/src/org/infinity/resource/effects/Opcode367.java
+++ b/src/org/infinity/resource/effects/Opcode367.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode368.java b/src/org/infinity/resource/effects/Opcode368.java
index 48a742473..81b9ccff8 100644
--- a/src/org/infinity/resource/effects/Opcode368.java
+++ b/src/org/infinity/resource/effects/Opcode368.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode369.java b/src/org/infinity/resource/effects/Opcode369.java
index d8cb6905f..6afa35f14 100644
--- a/src/org/infinity/resource/effects/Opcode369.java
+++ b/src/org/infinity/resource/effects/Opcode369.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode370.java b/src/org/infinity/resource/effects/Opcode370.java
index 523fb4be9..08f99830b 100644
--- a/src/org/infinity/resource/effects/Opcode370.java
+++ b/src/org/infinity/resource/effects/Opcode370.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode371.java b/src/org/infinity/resource/effects/Opcode371.java
index ba233650e..f599eef32 100644
--- a/src/org/infinity/resource/effects/Opcode371.java
+++ b/src/org/infinity/resource/effects/Opcode371.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode372.java b/src/org/infinity/resource/effects/Opcode372.java
index 56c8a0092..14f94f57c 100644
--- a/src/org/infinity/resource/effects/Opcode372.java
+++ b/src/org/infinity/resource/effects/Opcode372.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode373.java b/src/org/infinity/resource/effects/Opcode373.java
index 2f72920aa..ad6c78e60 100644
--- a/src/org/infinity/resource/effects/Opcode373.java
+++ b/src/org/infinity/resource/effects/Opcode373.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode374.java b/src/org/infinity/resource/effects/Opcode374.java
index aef229f0b..f8f75edad 100644
--- a/src/org/infinity/resource/effects/Opcode374.java
+++ b/src/org/infinity/resource/effects/Opcode374.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode375.java b/src/org/infinity/resource/effects/Opcode375.java
index 68eab9751..2b9833337 100644
--- a/src/org/infinity/resource/effects/Opcode375.java
+++ b/src/org/infinity/resource/effects/Opcode375.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode376.java b/src/org/infinity/resource/effects/Opcode376.java
index 93688d5b5..3d6829d70 100644
--- a/src/org/infinity/resource/effects/Opcode376.java
+++ b/src/org/infinity/resource/effects/Opcode376.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode377.java b/src/org/infinity/resource/effects/Opcode377.java
new file mode 100644
index 000000000..9ca8f7cec
--- /dev/null
+++ b/src/org/infinity/resource/effects/Opcode377.java
@@ -0,0 +1,47 @@
+// Near Infinity - An Infinity Engine Browser and Editor
+// Copyright (C) 2001 Jon Olav Hauglid
+// See LICENSE.txt for license information
+
+package org.infinity.resource.effects;
+
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.infinity.datatype.Datatype;
+import org.infinity.datatype.DecNumber;
+import org.infinity.resource.AbstractStruct;
+import org.infinity.resource.Profile;
+import org.infinity.resource.StructEntry;
+
+/**
+ * Implemention of opcode 377.
+ */
+public class Opcode377 extends BaseOpcode {
+ /** Returns the opcode name for the current game variant. */
+ private static String getOpcodeName() {
+ switch (Profile.getEngine()) {
+ case EE:
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ return "Speak with Dead";
+ }
+ default:
+ return null;
+ }
+ }
+
+ public Opcode377() {
+ super(377, getOpcodeName());
+ }
+
+ @Override
+ protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list,
+ boolean isVersion1) {
+ if (Profile.getGame() == Profile.Game.PSTEE) {
+ list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED));
+ list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED));
+ return null;
+ } else {
+ return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1);
+ }
+ }
+}
diff --git a/src/org/infinity/resource/effects/Opcode378.java b/src/org/infinity/resource/effects/Opcode378.java
index 63b5fb1dd..ae8e656ad 100644
--- a/src/org/infinity/resource/effects/Opcode378.java
+++ b/src/org/infinity/resource/effects/Opcode378.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode379.java b/src/org/infinity/resource/effects/Opcode379.java
index 126418354..780b6d948 100644
--- a/src/org/infinity/resource/effects/Opcode379.java
+++ b/src/org/infinity/resource/effects/Opcode379.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode380.java b/src/org/infinity/resource/effects/Opcode380.java
index e319f0bc7..45f9e7446 100644
--- a/src/org/infinity/resource/effects/Opcode380.java
+++ b/src/org/infinity/resource/effects/Opcode380.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode381.java b/src/org/infinity/resource/effects/Opcode381.java
index 202ea5f0e..49d9b998c 100644
--- a/src/org/infinity/resource/effects/Opcode381.java
+++ b/src/org/infinity/resource/effects/Opcode381.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode382.java b/src/org/infinity/resource/effects/Opcode382.java
index 28fcdd48f..d3e7ba314 100644
--- a/src/org/infinity/resource/effects/Opcode382.java
+++ b/src/org/infinity/resource/effects/Opcode382.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode383.java b/src/org/infinity/resource/effects/Opcode383.java
index 090a9e729..26b106240 100644
--- a/src/org/infinity/resource/effects/Opcode383.java
+++ b/src/org/infinity/resource/effects/Opcode383.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode400.java b/src/org/infinity/resource/effects/Opcode400.java
index 34225bfa3..5cde9a22d 100644
--- a/src/org/infinity/resource/effects/Opcode400.java
+++ b/src/org/infinity/resource/effects/Opcode400.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode401.java b/src/org/infinity/resource/effects/Opcode401.java
index f8e60e479..0c019297a 100644
--- a/src/org/infinity/resource/effects/Opcode401.java
+++ b/src/org/infinity/resource/effects/Opcode401.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode402.java b/src/org/infinity/resource/effects/Opcode402.java
index 5f1d0e89e..f4a35a2d9 100644
--- a/src/org/infinity/resource/effects/Opcode402.java
+++ b/src/org/infinity/resource/effects/Opcode402.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode403.java b/src/org/infinity/resource/effects/Opcode403.java
index bb72e999c..7d340f3a7 100644
--- a/src/org/infinity/resource/effects/Opcode403.java
+++ b/src/org/infinity/resource/effects/Opcode403.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode404.java b/src/org/infinity/resource/effects/Opcode404.java
index d9a41fb69..600507acf 100644
--- a/src/org/infinity/resource/effects/Opcode404.java
+++ b/src/org/infinity/resource/effects/Opcode404.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode405.java b/src/org/infinity/resource/effects/Opcode405.java
index b0334cdb5..fb3c4326f 100644
--- a/src/org/infinity/resource/effects/Opcode405.java
+++ b/src/org/infinity/resource/effects/Opcode405.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode406.java b/src/org/infinity/resource/effects/Opcode406.java
index 8441e3984..fc6ed98de 100644
--- a/src/org/infinity/resource/effects/Opcode406.java
+++ b/src/org/infinity/resource/effects/Opcode406.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode407.java b/src/org/infinity/resource/effects/Opcode407.java
index 49e226860..9a607f18a 100644
--- a/src/org/infinity/resource/effects/Opcode407.java
+++ b/src/org/infinity/resource/effects/Opcode407.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode408.java b/src/org/infinity/resource/effects/Opcode408.java
index d4008249e..0e7d13107 100644
--- a/src/org/infinity/resource/effects/Opcode408.java
+++ b/src/org/infinity/resource/effects/Opcode408.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode409.java b/src/org/infinity/resource/effects/Opcode409.java
index 5e1658498..a740f7d99 100644
--- a/src/org/infinity/resource/effects/Opcode409.java
+++ b/src/org/infinity/resource/effects/Opcode409.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode410.java b/src/org/infinity/resource/effects/Opcode410.java
index bf343163b..0dbd5412e 100644
--- a/src/org/infinity/resource/effects/Opcode410.java
+++ b/src/org/infinity/resource/effects/Opcode410.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode411.java b/src/org/infinity/resource/effects/Opcode411.java
index 5e3ebec70..402b1a33c 100644
--- a/src/org/infinity/resource/effects/Opcode411.java
+++ b/src/org/infinity/resource/effects/Opcode411.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode412.java b/src/org/infinity/resource/effects/Opcode412.java
index 8c6616180..6c9c8317e 100644
--- a/src/org/infinity/resource/effects/Opcode412.java
+++ b/src/org/infinity/resource/effects/Opcode412.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode413.java b/src/org/infinity/resource/effects/Opcode413.java
index c0e478da6..dcab18ad6 100644
--- a/src/org/infinity/resource/effects/Opcode413.java
+++ b/src/org/infinity/resource/effects/Opcode413.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode414.java b/src/org/infinity/resource/effects/Opcode414.java
index 0d42a4577..2a6885288 100644
--- a/src/org/infinity/resource/effects/Opcode414.java
+++ b/src/org/infinity/resource/effects/Opcode414.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode415.java b/src/org/infinity/resource/effects/Opcode415.java
index 7abac68e8..6404adff8 100644
--- a/src/org/infinity/resource/effects/Opcode415.java
+++ b/src/org/infinity/resource/effects/Opcode415.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode416.java b/src/org/infinity/resource/effects/Opcode416.java
index 2a3a95faf..b800ea627 100644
--- a/src/org/infinity/resource/effects/Opcode416.java
+++ b/src/org/infinity/resource/effects/Opcode416.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode417.java b/src/org/infinity/resource/effects/Opcode417.java
index 82442d1fe..a748311ab 100644
--- a/src/org/infinity/resource/effects/Opcode417.java
+++ b/src/org/infinity/resource/effects/Opcode417.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode418.java b/src/org/infinity/resource/effects/Opcode418.java
index afcf8fbc2..423f5161e 100644
--- a/src/org/infinity/resource/effects/Opcode418.java
+++ b/src/org/infinity/resource/effects/Opcode418.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode419.java b/src/org/infinity/resource/effects/Opcode419.java
index 3534fe939..3f888339e 100644
--- a/src/org/infinity/resource/effects/Opcode419.java
+++ b/src/org/infinity/resource/effects/Opcode419.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode420.java b/src/org/infinity/resource/effects/Opcode420.java
index f45a9813c..3de2fde5c 100644
--- a/src/org/infinity/resource/effects/Opcode420.java
+++ b/src/org/infinity/resource/effects/Opcode420.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode421.java b/src/org/infinity/resource/effects/Opcode421.java
index 61eaa4194..3465b18bf 100644
--- a/src/org/infinity/resource/effects/Opcode421.java
+++ b/src/org/infinity/resource/effects/Opcode421.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode422.java b/src/org/infinity/resource/effects/Opcode422.java
index 6ea5a6b74..824dd5ea4 100644
--- a/src/org/infinity/resource/effects/Opcode422.java
+++ b/src/org/infinity/resource/effects/Opcode422.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode423.java b/src/org/infinity/resource/effects/Opcode423.java
index 2484a0afd..dbb857794 100644
--- a/src/org/infinity/resource/effects/Opcode423.java
+++ b/src/org/infinity/resource/effects/Opcode423.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode424.java b/src/org/infinity/resource/effects/Opcode424.java
index 81b82aa50..1b51595d2 100644
--- a/src/org/infinity/resource/effects/Opcode424.java
+++ b/src/org/infinity/resource/effects/Opcode424.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode425.java b/src/org/infinity/resource/effects/Opcode425.java
index 18c60fbe5..504574024 100644
--- a/src/org/infinity/resource/effects/Opcode425.java
+++ b/src/org/infinity/resource/effects/Opcode425.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode426.java b/src/org/infinity/resource/effects/Opcode426.java
index b55ed0049..420c1c43c 100644
--- a/src/org/infinity/resource/effects/Opcode426.java
+++ b/src/org/infinity/resource/effects/Opcode426.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode427.java b/src/org/infinity/resource/effects/Opcode427.java
index b165d8cba..855e40b32 100644
--- a/src/org/infinity/resource/effects/Opcode427.java
+++ b/src/org/infinity/resource/effects/Opcode427.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode428.java b/src/org/infinity/resource/effects/Opcode428.java
index 98616723b..e75622560 100644
--- a/src/org/infinity/resource/effects/Opcode428.java
+++ b/src/org/infinity/resource/effects/Opcode428.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode429.java b/src/org/infinity/resource/effects/Opcode429.java
index 62c9869da..38c5b82d2 100644
--- a/src/org/infinity/resource/effects/Opcode429.java
+++ b/src/org/infinity/resource/effects/Opcode429.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode430.java b/src/org/infinity/resource/effects/Opcode430.java
index 831885f53..09fc70395 100644
--- a/src/org/infinity/resource/effects/Opcode430.java
+++ b/src/org/infinity/resource/effects/Opcode430.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode431.java b/src/org/infinity/resource/effects/Opcode431.java
index c0c486a6e..ce967cc6f 100644
--- a/src/org/infinity/resource/effects/Opcode431.java
+++ b/src/org/infinity/resource/effects/Opcode431.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode432.java b/src/org/infinity/resource/effects/Opcode432.java
index 284cfacc3..4c19b852c 100644
--- a/src/org/infinity/resource/effects/Opcode432.java
+++ b/src/org/infinity/resource/effects/Opcode432.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode433.java b/src/org/infinity/resource/effects/Opcode433.java
index 02de17ac7..7e5d1aa98 100644
--- a/src/org/infinity/resource/effects/Opcode433.java
+++ b/src/org/infinity/resource/effects/Opcode433.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode434.java b/src/org/infinity/resource/effects/Opcode434.java
index 2973da3cf..fcc710236 100644
--- a/src/org/infinity/resource/effects/Opcode434.java
+++ b/src/org/infinity/resource/effects/Opcode434.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode435.java b/src/org/infinity/resource/effects/Opcode435.java
index 114b1fedb..982344459 100644
--- a/src/org/infinity/resource/effects/Opcode435.java
+++ b/src/org/infinity/resource/effects/Opcode435.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode436.java b/src/org/infinity/resource/effects/Opcode436.java
index 3b1073685..6ceab4f4f 100644
--- a/src/org/infinity/resource/effects/Opcode436.java
+++ b/src/org/infinity/resource/effects/Opcode436.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode437.java b/src/org/infinity/resource/effects/Opcode437.java
index d88522b17..461e25475 100644
--- a/src/org/infinity/resource/effects/Opcode437.java
+++ b/src/org/infinity/resource/effects/Opcode437.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode438.java b/src/org/infinity/resource/effects/Opcode438.java
index a53824672..bd650f9f0 100644
--- a/src/org/infinity/resource/effects/Opcode438.java
+++ b/src/org/infinity/resource/effects/Opcode438.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode439.java b/src/org/infinity/resource/effects/Opcode439.java
index 10bd7460b..5fa5e9584 100644
--- a/src/org/infinity/resource/effects/Opcode439.java
+++ b/src/org/infinity/resource/effects/Opcode439.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode440.java b/src/org/infinity/resource/effects/Opcode440.java
index 5938a60e2..38d8735f5 100644
--- a/src/org/infinity/resource/effects/Opcode440.java
+++ b/src/org/infinity/resource/effects/Opcode440.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode441.java b/src/org/infinity/resource/effects/Opcode441.java
index b53912faf..c0d1a305d 100644
--- a/src/org/infinity/resource/effects/Opcode441.java
+++ b/src/org/infinity/resource/effects/Opcode441.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode442.java b/src/org/infinity/resource/effects/Opcode442.java
index 5ae0c1e2c..8290f028d 100644
--- a/src/org/infinity/resource/effects/Opcode442.java
+++ b/src/org/infinity/resource/effects/Opcode442.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode443.java b/src/org/infinity/resource/effects/Opcode443.java
index ec975d4b6..90299e88d 100644
--- a/src/org/infinity/resource/effects/Opcode443.java
+++ b/src/org/infinity/resource/effects/Opcode443.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode444.java b/src/org/infinity/resource/effects/Opcode444.java
index d8ec57308..7b72bb1ce 100644
--- a/src/org/infinity/resource/effects/Opcode444.java
+++ b/src/org/infinity/resource/effects/Opcode444.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode445.java b/src/org/infinity/resource/effects/Opcode445.java
index 020f394d4..aa7f2defd 100644
--- a/src/org/infinity/resource/effects/Opcode445.java
+++ b/src/org/infinity/resource/effects/Opcode445.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode446.java b/src/org/infinity/resource/effects/Opcode446.java
index 253d9f3ee..4a0ea1207 100644
--- a/src/org/infinity/resource/effects/Opcode446.java
+++ b/src/org/infinity/resource/effects/Opcode446.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode447.java b/src/org/infinity/resource/effects/Opcode447.java
index 0f9790c20..b20431abd 100644
--- a/src/org/infinity/resource/effects/Opcode447.java
+++ b/src/org/infinity/resource/effects/Opcode447.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode448.java b/src/org/infinity/resource/effects/Opcode448.java
index c8abee7b6..bdaa8260d 100644
--- a/src/org/infinity/resource/effects/Opcode448.java
+++ b/src/org/infinity/resource/effects/Opcode448.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode449.java b/src/org/infinity/resource/effects/Opcode449.java
index dfa4a5d8d..8733fca93 100644
--- a/src/org/infinity/resource/effects/Opcode449.java
+++ b/src/org/infinity/resource/effects/Opcode449.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode450.java b/src/org/infinity/resource/effects/Opcode450.java
index e11f6f3d5..e8666772a 100644
--- a/src/org/infinity/resource/effects/Opcode450.java
+++ b/src/org/infinity/resource/effects/Opcode450.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode451.java b/src/org/infinity/resource/effects/Opcode451.java
index 9236427bd..512fc46f5 100644
--- a/src/org/infinity/resource/effects/Opcode451.java
+++ b/src/org/infinity/resource/effects/Opcode451.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode452.java b/src/org/infinity/resource/effects/Opcode452.java
index f3dce56a1..652d37653 100644
--- a/src/org/infinity/resource/effects/Opcode452.java
+++ b/src/org/infinity/resource/effects/Opcode452.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode453.java b/src/org/infinity/resource/effects/Opcode453.java
index 01b30a7c0..ea86c3c5c 100644
--- a/src/org/infinity/resource/effects/Opcode453.java
+++ b/src/org/infinity/resource/effects/Opcode453.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode454.java b/src/org/infinity/resource/effects/Opcode454.java
index 462dfea99..6fd053d49 100644
--- a/src/org/infinity/resource/effects/Opcode454.java
+++ b/src/org/infinity/resource/effects/Opcode454.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode455.java b/src/org/infinity/resource/effects/Opcode455.java
index 6a8086791..63a5a8b88 100644
--- a/src/org/infinity/resource/effects/Opcode455.java
+++ b/src/org/infinity/resource/effects/Opcode455.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode456.java b/src/org/infinity/resource/effects/Opcode456.java
index b6555b31e..f83596a38 100644
--- a/src/org/infinity/resource/effects/Opcode456.java
+++ b/src/org/infinity/resource/effects/Opcode456.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/effects/Opcode457.java b/src/org/infinity/resource/effects/Opcode457.java
index e71614d54..a7cdc4536 100644
--- a/src/org/infinity/resource/effects/Opcode457.java
+++ b/src/org/infinity/resource/effects/Opcode457.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.effects;
diff --git a/src/org/infinity/resource/gam/Familiar.java b/src/org/infinity/resource/gam/Familiar.java
index 972f85199..ed1f3a284 100644
--- a/src/org/infinity/resource/gam/Familiar.java
+++ b/src/org/infinity/resource/gam/Familiar.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/GamResource.java b/src/org/infinity/resource/gam/GamResource.java
index bd8abd4d2..dbf54c734 100644
--- a/src/org/infinity/resource/gam/GamResource.java
+++ b/src/org/infinity/resource/gam/GamResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/JournalEntry.java b/src/org/infinity/resource/gam/JournalEntry.java
index 3c0ff230b..c592b2ea0 100644
--- a/src/org/infinity/resource/gam/JournalEntry.java
+++ b/src/org/infinity/resource/gam/JournalEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/KillVariable.java b/src/org/infinity/resource/gam/KillVariable.java
index 196a20b75..5ed5c24cd 100644
--- a/src/org/infinity/resource/gam/KillVariable.java
+++ b/src/org/infinity/resource/gam/KillVariable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/ModronMaze.java b/src/org/infinity/resource/gam/ModronMaze.java
index bee1f1cfa..de1b99a7d 100644
--- a/src/org/infinity/resource/gam/ModronMaze.java
+++ b/src/org/infinity/resource/gam/ModronMaze.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/ModronMazeEntry.java b/src/org/infinity/resource/gam/ModronMazeEntry.java
index 1fb2e7ca3..4b19c2aac 100644
--- a/src/org/infinity/resource/gam/ModronMazeEntry.java
+++ b/src/org/infinity/resource/gam/ModronMazeEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/NonPartyNPC.java b/src/org/infinity/resource/gam/NonPartyNPC.java
index 06c3d3c09..6c4b2c281 100644
--- a/src/org/infinity/resource/gam/NonPartyNPC.java
+++ b/src/org/infinity/resource/gam/NonPartyNPC.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/PartyNPC.java b/src/org/infinity/resource/gam/PartyNPC.java
index 29224f918..5c8661477 100644
--- a/src/org/infinity/resource/gam/PartyNPC.java
+++ b/src/org/infinity/resource/gam/PartyNPC.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/StoredLocation.java b/src/org/infinity/resource/gam/StoredLocation.java
index a854b6c53..0555e67a7 100644
--- a/src/org/infinity/resource/gam/StoredLocation.java
+++ b/src/org/infinity/resource/gam/StoredLocation.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/UnknownSection2.java b/src/org/infinity/resource/gam/UnknownSection2.java
index 395fcf1d6..ed4cd802a 100644
--- a/src/org/infinity/resource/gam/UnknownSection2.java
+++ b/src/org/infinity/resource/gam/UnknownSection2.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/UnknownSection3.java b/src/org/infinity/resource/gam/UnknownSection3.java
index 7e7d5ea62..e5df3acd4 100644
--- a/src/org/infinity/resource/gam/UnknownSection3.java
+++ b/src/org/infinity/resource/gam/UnknownSection3.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/Variable.java b/src/org/infinity/resource/gam/Variable.java
index 8a7882438..a38d39f7a 100644
--- a/src/org/infinity/resource/gam/Variable.java
+++ b/src/org/infinity/resource/gam/Variable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/Viewer.java b/src/org/infinity/resource/gam/Viewer.java
index fe0a59e5e..5a9db32cc 100644
--- a/src/org/infinity/resource/gam/Viewer.java
+++ b/src/org/infinity/resource/gam/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/gam/ViewerNPC.java b/src/org/infinity/resource/gam/ViewerNPC.java
index 6afb49ed9..5e8c74ce1 100644
--- a/src/org/infinity/resource/gam/ViewerNPC.java
+++ b/src/org/infinity/resource/gam/ViewerNPC.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.gam;
diff --git a/src/org/infinity/resource/graphics/BamDecoder.java b/src/org/infinity/resource/graphics/BamDecoder.java
index 70a8696c3..b7efbbd95 100644
--- a/src/org/infinity/resource/graphics/BamDecoder.java
+++ b/src/org/infinity/resource/graphics/BamDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/BamResource.java b/src/org/infinity/resource/graphics/BamResource.java
index 93e3bd39e..0e7238579 100644
--- a/src/org/infinity/resource/graphics/BamResource.java
+++ b/src/org/infinity/resource/graphics/BamResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/BamV1Decoder.java b/src/org/infinity/resource/graphics/BamV1Decoder.java
index 93a8cea17..8a544d7ab 100644
--- a/src/org/infinity/resource/graphics/BamV1Decoder.java
+++ b/src/org/infinity/resource/graphics/BamV1Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/BamV2Decoder.java b/src/org/infinity/resource/graphics/BamV2Decoder.java
index 6dc290e47..459e6d9fe 100644
--- a/src/org/infinity/resource/graphics/BamV2Decoder.java
+++ b/src/org/infinity/resource/graphics/BamV2Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/BlendingComposite.java b/src/org/infinity/resource/graphics/BlendingComposite.java
index 507131205..f2b45937b 100644
--- a/src/org/infinity/resource/graphics/BlendingComposite.java
+++ b/src/org/infinity/resource/graphics/BlendingComposite.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/ColorConvert.java b/src/org/infinity/resource/graphics/ColorConvert.java
index e3f7d8500..b4c63ff56 100644
--- a/src/org/infinity/resource/graphics/ColorConvert.java
+++ b/src/org/infinity/resource/graphics/ColorConvert.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
@@ -340,9 +340,13 @@ public static Dimension getImageDimension(Path fileName) {
* @param calculator the function for distance calculation. Choose one of the predefined functions or specify a
* custom instance. Specify {@code null} to use the fastest (but slightly inaccurate) distance
* calculation.
+ * @param skipGreen indicates whether the special color "Green" should be ignored by the color calculation.
* @return Palette index pointing to the nearest color value. Returns -1 if color entry could not be determined.
*/
- public static int getNearestColor(int argb, int[] palette, double alphaWeight, ColorDistanceFunc calculator) {
+ public static int getNearestColor(int argb, int[] palette, double alphaWeight, ColorDistanceFunc calculator,
+ boolean skipGreen) {
+ final int Green = 0x0000ff00;
+
int retVal = -1;
if (palette == null) {
return retVal;
@@ -354,7 +358,13 @@ public static int getNearestColor(int argb, int[] palette, double alphaWeight, C
alphaWeight = Math.max(0.0, Math.min(2.0, alphaWeight));
double minDist = Double.MAX_VALUE;
for (int i = 0; i < palette.length; i++) {
- double dist = calculator.calculate(argb, palette[i], alphaWeight);
+ final int argb2 = palette[i];
+ // BAM V1: It is a bad idea to use the transparent green color as the "nearest" color,
+ // the input most likely did not intend for adjacent colors to be transparent.
+ if (skipGreen && (argb2 & 0x00ffffff) == Green) {
+ continue;
+ }
+ double dist = calculator.calculate(argb, argb2, alphaWeight);
if (dist < minDist) {
minDist = dist;
retVal = i;
@@ -364,6 +374,24 @@ public static int getNearestColor(int argb, int[] palette, double alphaWeight, C
return retVal;
}
+ /**
+ * Calculates the nearest color available in the given palette using the specified color distance function.
+ *
+ * @param argb the reference ARGB color.
+ * @param palette palette with ARGB colors to search.
+ * @param alphaWeight Weight factor of the alpha component. Supported range: [0.0, 2.0]. A value < 1.0 makes alpha
+ * less important for the distance calculation. A value > 1.0 makes alpha more important for the
+ * distance calculation. Specify 1.0 to use the unmodified alpha compomponent for the calculation.
+ * Specify 0.0 to ignore the alpha part in the calculation.
+ * @param calculator the function for distance calculation. Choose one of the predefined functions or specify a
+ * custom instance. Specify {@code null} to use the fastest (but slightly inaccurate) distance
+ * calculation.
+ * @return Palette index pointing to the nearest color value. Returns -1 if color entry could not be determined.
+ */
+ public static int getNearestColor(int argb, int[] palette, double alphaWeight, ColorDistanceFunc calculator) {
+ return getNearestColor(argb, palette, alphaWeight, calculator, false);
+ }
+
/**
* Sorts the given palette in-place by the specified sort type.
*
diff --git a/src/org/infinity/resource/graphics/Compressor.java b/src/org/infinity/resource/graphics/Compressor.java
index 7321ae69d..4063e819f 100644
--- a/src/org/infinity/resource/graphics/Compressor.java
+++ b/src/org/infinity/resource/graphics/Compressor.java
@@ -1,15 +1,19 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
+import java.util.zip.DeflaterInputStream;
import java.util.zip.Inflater;
+import java.util.zip.InflaterInputStream;
import org.infinity.util.ArrayUtil;
import org.infinity.util.DynamicArray;
@@ -95,10 +99,56 @@ public static byte[] compress(byte[] data, int ofs, int len, boolean prependSize
return result;
}
+ /**
+ * Reads {@code len} bytes of raw data from the {@code InputStream} and writes the compressed data to the
+ * {@code OutputStream}.
+ *
+ * @param is {@code InputStream} with data to compress.
+ * @param os {@code OutputStream} to write compressed data to.
+ * @param len Length of data to compress, in bytes. Specify {@code 0} to compress until no more input data is available.
+ * @param prependSize If {@code true} then uncompressed size value will be written to the output stream
+ * before compressed data is written. Ignored if {@code len} is 0.
+ * @return
+ * @throws IOException if an I/O error occurs.
+ */
+ public static int compress(InputStream is, OutputStream os, int len, boolean prependSize) throws IOException {
+ int result = 0;
+ if (is != null && os != null) {
+ if (len > 0 && prependSize) {
+ StreamUtils.writeInt(os, len);
+ result += 4;
+ }
+
+ byte[] buffer = new byte[Math.min(65536, len)];
+ final DeflaterInputStream dis = new DeflaterInputStream(is);
+ int bufLen = 0;
+ while ((bufLen = dis.read(buffer)) > 0) {
+ os.write(buffer, 0, bufLen);
+ result += bufLen;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Decompresses the data of the specified ByteBuffer object and returns it as a new ByteBuffer object.
+ *
+ * @param buffer {@code ByteBuffer} with data to decompress.
+ * @return A {@code ByteBuffer} object with decompressed data.
+ * @throws IOException if an I/O error occurs.
+ */
public static ByteBuffer decompress(ByteBuffer buffer) throws IOException {
return decompress(buffer, 8);
}
+ /**
+ * Decompresses the data of the specified ByteBuffer object and returns it as a new ByteBuffer object.
+ *
+ * @param buffer {@code ByteBuffer} with data to decompress.
+ * @param offset Start offset of compressed data.
+ * @return A {@code ByteBuffer} object with decompressed data.
+ * @throws IOException if an I/O error occurs.
+ */
public static ByteBuffer decompress(ByteBuffer buffer, int offset) throws IOException {
ByteBuffer retVal = null;
if (buffer != null && offset < buffer.limit()) {
@@ -109,10 +159,26 @@ public static ByteBuffer decompress(ByteBuffer buffer, int offset) throws IOExce
return retVal;
}
+ /**
+ * Decompresses the data of the specified byte array and returns it as a new byte array object.
+ *
+ * @param buffer Byte array with data to decompress.
+ * @param offset Start offset of compressed data.
+ * @return A byte array with decompressed data.
+ * @throws IOException
+ */
public static byte[] decompress(byte buffer[]) throws IOException {
return decompress(buffer, 8);
}
+ /**
+ * Decompresses the data of the specified byte array and returns it as a new byte array object.
+ *
+ * @param buffer Byte array with data to decompress.
+ * @param offset Start offset of compressed data.
+ * @return A byte array with decompressed data.
+ * @throws IOException if an I/O error occurs.
+ */
public static byte[] decompress(byte buffer[], int ofs) throws IOException {
Inflater inflater = new Inflater();
byte result[] = new byte[DynamicArray.getInt(buffer, ofs)];
@@ -127,6 +193,43 @@ public static byte[] decompress(byte buffer[], int ofs) throws IOException {
return result;
}
+ /**
+ * Decompresses the data from the specified {@code InputStream} and returns it as a new byte array object.
+ *
+ * @param is {@code InputStream} with data to decompress.
+ * The current stream position should point to the start of the game resource.
+ * @return A byte array with decompressed data.
+ * @throws IOException
+ */
+ public static byte[] decompress(InputStream is) throws IOException {
+ return decompress(is, 8, 0);
+ }
+
+ /**
+ * Decompresses the data from the specified {@code InputStream} and returns it as a new byte array object.
+ *
+ * @param is {@code InputStream} with data to decompress.
+ * The current stream position should point to the start of the game resource.
+ * @param ofs Specifies the number of bytes to skip before reading compressed data from the stream.
+ * @param size Amount of bytes to return from the uncompressed data. Specify {@code 0} to return all decompressed data.
+ * @return A byte array with decompressed data.
+ * @throws IOException if an I/O error occurs.
+ */
+ public static byte[] decompress(InputStream is, int ofs, int size) throws IOException {
+ is.skip(ofs);
+ if (size <= 0) {
+ size = StreamUtils.readInt(is);
+ } else {
+ is.skip(4);
+ }
+ byte[] result = new byte[size];
+
+ final InflaterInputStream inflater = new InflaterInputStream(is);
+ inflater.read(result);
+
+ return result;
+ }
+
private Compressor() {
}
}
diff --git a/src/org/infinity/resource/graphics/DxtEncoder.java b/src/org/infinity/resource/graphics/DxtEncoder.java
index 1413eec96..8c213361a 100644
--- a/src/org/infinity/resource/graphics/DxtEncoder.java
+++ b/src/org/infinity/resource/graphics/DxtEncoder.java
@@ -1,5 +1,5 @@
/* Near Infinity - An Infinity Engine Browser and Editor
- * Copyright (C) 2001 - 2022 Jon Olav Hauglid
+ * Copyright (C) 2001 Jon Olav Hauglid
* See LICENSE.txt for license information
*
* The DXT compression algorithm is based on libsquish:
diff --git a/src/org/infinity/resource/graphics/GifSequenceReader.java b/src/org/infinity/resource/graphics/GifSequenceReader.java
index e342b1580..f31eb2e15 100644
--- a/src/org/infinity/resource/graphics/GifSequenceReader.java
+++ b/src/org/infinity/resource/graphics/GifSequenceReader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/GifSequenceWriter.java b/src/org/infinity/resource/graphics/GifSequenceWriter.java
index c9963f582..b61fb5228 100644
--- a/src/org/infinity/resource/graphics/GifSequenceWriter.java
+++ b/src/org/infinity/resource/graphics/GifSequenceWriter.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// Originally created by Elliot Kroo on 2009-04-25.
diff --git a/src/org/infinity/resource/graphics/GraphicsResource.java b/src/org/infinity/resource/graphics/GraphicsResource.java
index 88ffbacc5..98dcd8815 100644
--- a/src/org/infinity/resource/graphics/GraphicsResource.java
+++ b/src/org/infinity/resource/graphics/GraphicsResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/MosDecoder.java b/src/org/infinity/resource/graphics/MosDecoder.java
index 4087b8f65..c3094e41f 100644
--- a/src/org/infinity/resource/graphics/MosDecoder.java
+++ b/src/org/infinity/resource/graphics/MosDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
@@ -59,6 +59,31 @@ public static Type getType(ResourceEntry mosEntry) {
return retVal;
}
+ /**
+ * Returns information about the specified MOS resource.
+ *
+ * @param mosEntry The MOS resource entry.
+ * @return A {@link MosInfo} structure with information about the specified MOS resource,
+ * {@code null} if information is not available.
+ */
+ public static MosInfo getInfo(ResourceEntry mosEntry) {
+ MosInfo retVal = null;
+
+ switch (getType(mosEntry)) {
+ case MOSC:
+ case MOSV1:
+ retVal = MosV1Decoder.getInfo(mosEntry);
+ break;
+ case MOSV2:
+ retVal = MosV2Decoder.getInfo(mosEntry);
+ break;
+ default:
+ break;
+ }
+
+ return retVal;
+ }
+
/**
* Returns a new MosDecoder object based on the specified MOS resource entry.
*
@@ -150,4 +175,42 @@ protected MosDecoder(ResourceEntry mosEntry) {
protected void setType(Type type) {
this.type = type;
}
+
+ // -------------------------- INNER CLASSES --------------------------
+
+ /** A class for providing parsed MOS header information. */
+ public static class MosInfo {
+ /** Type of the MOS resource. */
+ public final Type type;
+ /** MOS width, in pixels. */
+ public final int width;
+ /** MOS height, in pixels. */
+ public final int height;
+ /** Number of MOS V1 data block columns. */
+ public final int columns;
+ /** Number of MOS V1 data block rows. */
+ public final int rows;
+ /** Dimension of a MOS V1 data block, in pixels. */
+ public final int blockSize;
+ /** Number of MOS V2 data blocks. */
+ public final int numBlocks;
+
+ public MosInfo(boolean compressed, int width, int height, int columns, int rows, int blockSize) {
+ this.type = compressed ? Type.MOSC : Type.MOSV1;
+ this.width = width;
+ this.height = height;
+ this.columns = columns;
+ this.rows = rows;
+ this.blockSize= blockSize;
+ this.numBlocks = 0;
+ }
+
+ public MosInfo(int width, int height, int numBlocks) {
+ this.type = Type.MOSV2;
+ this.width = width;
+ this.height = height;
+ this.numBlocks = numBlocks;
+ this.columns = this.rows = this.blockSize = 0;
+ }
+ }
}
diff --git a/src/org/infinity/resource/graphics/MosResource.java b/src/org/infinity/resource/graphics/MosResource.java
index 5dcd641b4..ad23b0c2a 100644
--- a/src/org/infinity/resource/graphics/MosResource.java
+++ b/src/org/infinity/resource/graphics/MosResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/MosV1Decoder.java b/src/org/infinity/resource/graphics/MosV1Decoder.java
index 57b0e4c3d..8676f7648 100644
--- a/src/org/infinity/resource/graphics/MosV1Decoder.java
+++ b/src/org/infinity/resource/graphics/MosV1Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
@@ -9,10 +9,12 @@
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
+import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.infinity.resource.key.ResourceEntry;
+import org.infinity.util.DynamicArray;
import org.infinity.util.io.StreamUtils;
public class MosV1Decoder extends MosDecoder {
@@ -32,6 +34,46 @@ public class MosV1Decoder extends MosDecoder {
private BufferedImage workingCanvas; // storage space big enough for a single block
private int lastBlockIndex; // hold the index of the last data block drawn onto workingCanvas
+ /**
+ * Returns information about the specified MOS resource.
+ *
+ * @param mosEntry The MOS resource entry.
+ * @return A {@link MosInfo} structure with information about the specified MOS resource,
+ * {@code null} if information is not available.
+ */
+ public static MosDecoder.MosInfo getInfo(ResourceEntry mosEntry) {
+ MosDecoder.MosInfo retVal = null;
+
+ try (InputStream is = mosEntry.getResourceDataAsStream()) {
+ String signature = StreamUtils.readString(is, 4);
+ String version = StreamUtils.readString(is, 4);
+
+ byte[] header = null;
+ boolean compressed = false;
+ if ("MOSC".equals(signature)) {
+ compressed = true;
+ header = Compressor.decompress(is, 0, 0x18);
+ } else if ("MOS ".equals(signature) && "V1 ".equals(version)) {
+ header = new byte[0x18];
+ DynamicArray.putString(header, 0, 8, "MOS V1 ");
+ is.read(header, 8, header.length - 8);
+ }
+
+ if (header != null) {
+ int width = DynamicArray.getShort(header, 0x08);
+ int height = DynamicArray.getShort(header, 0x0a);
+ int columns = DynamicArray.getShort(header, 0x0c);
+ int rows = DynamicArray.getShort(header, 0x0e);
+ int blockSize = DynamicArray.getInt(header, 0x10);
+ retVal = new MosDecoder.MosInfo(compressed, width, height, columns, rows, blockSize);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return retVal;
+ }
+
public MosV1Decoder(ResourceEntry mosEntry) {
super(mosEntry);
init();
diff --git a/src/org/infinity/resource/graphics/MosV2Decoder.java b/src/org/infinity/resource/graphics/MosV2Decoder.java
index 1603fd3d7..1441ecba3 100644
--- a/src/org/infinity/resource/graphics/MosV2Decoder.java
+++ b/src/org/infinity/resource/graphics/MosV2Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
@@ -11,6 +11,7 @@
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
+import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -19,6 +20,7 @@
import org.infinity.resource.ResourceFactory;
import org.infinity.resource.key.ResourceEntry;
+import org.infinity.util.DynamicArray;
import org.infinity.util.io.StreamUtils;
public class MosV2Decoder extends MosDecoder {
@@ -32,6 +34,37 @@ public class MosV2Decoder extends MosDecoder {
private int blockCount;
private int ofsData;
+ /**
+ * Returns information about the specified MOS resource.
+ *
+ * @param mosEntry The MOS resource entry.
+ * @return A {@link MosInfo} structure with information about the specified MOS resource,
+ * {@code null} if information is not available.
+ */
+ public static MosDecoder.MosInfo getInfo(ResourceEntry mosEntry) {
+ MosDecoder.MosInfo retVal = null;
+
+ try (InputStream is = mosEntry.getResourceDataAsStream()) {
+ String signature = StreamUtils.readString(is, 4);
+ String version = StreamUtils.readString(is, 4);
+
+ if ("MOS ".equals(signature) && "V2 ".equals(version)) {
+ final byte[] header = new byte[0x18];
+ DynamicArray.putString(header, 0, 8, "MOS V2 ");
+ is.read(header, 8, header.length - 8);
+
+ int width = DynamicArray.getInt(header, 0x08);
+ int height = DynamicArray.getInt(header, 0x0c);
+ int numBlocks = DynamicArray.getInt(header, 0x10);
+ retVal = new MosDecoder.MosInfo(width, height, numBlocks);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return retVal;
+ }
+
public MosV2Decoder(ResourceEntry mosEntry) {
super(mosEntry);
init();
diff --git a/src/org/infinity/resource/graphics/Palette.java b/src/org/infinity/resource/graphics/Palette.java
index ffd4e2073..0bf3daac4 100644
--- a/src/org/infinity/resource/graphics/Palette.java
+++ b/src/org/infinity/resource/graphics/Palette.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/PltResource.java b/src/org/infinity/resource/graphics/PltResource.java
index 4483b6389..d053d989c 100644
--- a/src/org/infinity/resource/graphics/PltResource.java
+++ b/src/org/infinity/resource/graphics/PltResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/PseudoBamDecoder.java b/src/org/infinity/resource/graphics/PseudoBamDecoder.java
index 1c844b00a..7bf693489 100644
--- a/src/org/infinity/resource/graphics/PseudoBamDecoder.java
+++ b/src/org/infinity/resource/graphics/PseudoBamDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/PvrDecoder.java b/src/org/infinity/resource/graphics/PvrDecoder.java
index bc27eab27..14523e6e9 100644
--- a/src/org/infinity/resource/graphics/PvrDecoder.java
+++ b/src/org/infinity/resource/graphics/PvrDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2023 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/PvrzResource.java b/src/org/infinity/resource/graphics/PvrzResource.java
index cd20a3473..dd05f5a15 100644
--- a/src/org/infinity/resource/graphics/PvrzResource.java
+++ b/src/org/infinity/resource/graphics/PvrzResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/TisDecoder.java b/src/org/infinity/resource/graphics/TisDecoder.java
index 3e86c9413..eba119d45 100644
--- a/src/org/infinity/resource/graphics/TisDecoder.java
+++ b/src/org/infinity/resource/graphics/TisDecoder.java
@@ -1,13 +1,15 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
import java.awt.Image;
+import java.io.InputStream;
import java.nio.ByteBuffer;
import org.infinity.resource.key.ResourceEntry;
+import org.infinity.util.io.StreamUtils;
/**
* Common base class for handling TIS resources.
@@ -58,6 +60,36 @@ public static Type getType(ResourceEntry tisEntry) {
return retVal;
}
+ /**
+ * Returns information about the specified TIS resource.
+ *
+ * @param tisEntry The TIS resource entry.
+ * @return A {@link TisInfo} structure with information about the specified TIS resource,
+ * {@code null} if information is not available.
+ */
+ public static TisInfo getInfo(ResourceEntry tisEntry) {
+ TisInfo retVal = null;
+
+ if (tisEntry != null) {
+ try (InputStream is = tisEntry.getResourceDataAsStream()) {
+ String signature = StreamUtils.readString(is, 4);
+ String version = StreamUtils.readString(is, 4);
+
+ if ("TIS ".equals(signature) && "V1 ".equals(version)) {
+ int numTiles = StreamUtils.readInt(is);
+ int tileSize = StreamUtils.readInt(is);
+ is.skip(4); // tile data offset
+ int tileDim = StreamUtils.readInt(is);
+ retVal = new TisInfo(numTiles, tileSize, tileDim);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ return retVal;
+ }
+
/**
* Returns a new TisDecoder object based on the type of the specified resource entry.
*
@@ -130,4 +162,27 @@ protected TisDecoder(ResourceEntry tisEntry) {
protected void setType(Type type) {
this.type = type;
}
+
+ // -------------------------- INNER CLASSES --------------------------
+
+ /** A class for providing parsed TIS header information. */
+ public static class TisInfo {
+ /** Type of the TIS resource. */
+ public final Type type;
+ /** Number of tiles stored in the TIS file. */
+ public final int numTiles;
+ /** Dimension of a TIS tile, in pixels (always 64). */
+ public final int tileDimension;
+
+ public TisInfo(int numTiles, int tileSize, int tileDim) {
+ this.type = tileSize == 0x0c ? Type.PVRZ : Type.PALETTE;
+ this.numTiles = numTiles;
+ this.tileDimension = tileDim;
+ }
+
+ /** Returns the tile size, in bytes, for the current TIS file. */
+ public int getTileSize() {
+ return type == Type.PVRZ ? 0x0c : 0x1400;
+ }
+ }
}
diff --git a/src/org/infinity/resource/graphics/TisResource.java b/src/org/infinity/resource/graphics/TisResource.java
index 506bff6df..845639ac0 100644
--- a/src/org/infinity/resource/graphics/TisResource.java
+++ b/src/org/infinity/resource/graphics/TisResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/TisV1Decoder.java b/src/org/infinity/resource/graphics/TisV1Decoder.java
index 069e67235..637d098a7 100644
--- a/src/org/infinity/resource/graphics/TisV1Decoder.java
+++ b/src/org/infinity/resource/graphics/TisV1Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/TisV2Decoder.java b/src/org/infinity/resource/graphics/TisV2Decoder.java
index 33b369b1f..45c992848 100644
--- a/src/org/infinity/resource/graphics/TisV2Decoder.java
+++ b/src/org/infinity/resource/graphics/TisV2Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics;
diff --git a/src/org/infinity/resource/graphics/decoder/Decodable.java b/src/org/infinity/resource/graphics/decoder/Decodable.java
index fe06afabd..e2aee81c3 100644
--- a/src/org/infinity/resource/graphics/decoder/Decodable.java
+++ b/src/org/infinity/resource/graphics/decoder/Decodable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2023 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics.decoder;
diff --git a/src/org/infinity/resource/graphics/decoder/DummyDecoder.java b/src/org/infinity/resource/graphics/decoder/DummyDecoder.java
index 0462901a4..8d75c85dd 100644
--- a/src/org/infinity/resource/graphics/decoder/DummyDecoder.java
+++ b/src/org/infinity/resource/graphics/decoder/DummyDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2023 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics.decoder;
diff --git a/src/org/infinity/resource/graphics/decoder/DxtDecoder.java b/src/org/infinity/resource/graphics/decoder/DxtDecoder.java
index dc2bafb3f..f6328014b 100644
--- a/src/org/infinity/resource/graphics/decoder/DxtDecoder.java
+++ b/src/org/infinity/resource/graphics/decoder/DxtDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2023 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics.decoder;
diff --git a/src/org/infinity/resource/graphics/decoder/Etc2Decoder.java b/src/org/infinity/resource/graphics/decoder/Etc2Decoder.java
index 20752c0db..5c0ab0262 100644
--- a/src/org/infinity/resource/graphics/decoder/Etc2Decoder.java
+++ b/src/org/infinity/resource/graphics/decoder/Etc2Decoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2023 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics.decoder;
diff --git a/src/org/infinity/resource/graphics/decoder/PvrInfo.java b/src/org/infinity/resource/graphics/decoder/PvrInfo.java
index 9a86291fe..87b0daadf 100644
--- a/src/org/infinity/resource/graphics/decoder/PvrInfo.java
+++ b/src/org/infinity/resource/graphics/decoder/PvrInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2023 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
// ----------------------------------------------------------------
// PVRT format specifications and reference implementation:
diff --git a/src/org/infinity/resource/graphics/decoder/PvrtcDecoder.java b/src/org/infinity/resource/graphics/decoder/PvrtcDecoder.java
index 279232070..fd7e1c1c0 100644
--- a/src/org/infinity/resource/graphics/decoder/PvrtcDecoder.java
+++ b/src/org/infinity/resource/graphics/decoder/PvrtcDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2023 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.graphics.decoder;
diff --git a/src/org/infinity/resource/itm/Ability.java b/src/org/infinity/resource/itm/Ability.java
index 71a1d8f52..db08efedd 100644
--- a/src/org/infinity/resource/itm/Ability.java
+++ b/src/org/infinity/resource/itm/Ability.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.itm;
diff --git a/src/org/infinity/resource/itm/ItmResource.java b/src/org/infinity/resource/itm/ItmResource.java
index 39bbd8063..d20e9f4ce 100644
--- a/src/org/infinity/resource/itm/ItmResource.java
+++ b/src/org/infinity/resource/itm/ItmResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.itm;
diff --git a/src/org/infinity/resource/itm/Viewer.java b/src/org/infinity/resource/itm/Viewer.java
index 43d6eb9eb..38c0b97ab 100644
--- a/src/org/infinity/resource/itm/Viewer.java
+++ b/src/org/infinity/resource/itm/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.itm;
diff --git a/src/org/infinity/resource/itm/ViewerAbility.java b/src/org/infinity/resource/itm/ViewerAbility.java
index 3341974a1..8e23f7ff7 100644
--- a/src/org/infinity/resource/itm/ViewerAbility.java
+++ b/src/org/infinity/resource/itm/ViewerAbility.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.itm;
diff --git a/src/org/infinity/resource/key/AbstractBIFFReader.java b/src/org/infinity/resource/key/AbstractBIFFReader.java
index 80b94b85d..f53fe9e38 100644
--- a/src/org/infinity/resource/key/AbstractBIFFReader.java
+++ b/src/org/infinity/resource/key/AbstractBIFFReader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/BIFCReader.java b/src/org/infinity/resource/key/BIFCReader.java
index 7aaf6d9f1..d8f2c7c19 100644
--- a/src/org/infinity/resource/key/BIFCReader.java
+++ b/src/org/infinity/resource/key/BIFCReader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/BIFFEntry.java b/src/org/infinity/resource/key/BIFFEntry.java
index 75bc1a06e..55c54c7a7 100644
--- a/src/org/infinity/resource/key/BIFFEntry.java
+++ b/src/org/infinity/resource/key/BIFFEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/BIFFReader.java b/src/org/infinity/resource/key/BIFFReader.java
index 824169fa4..9c2399c3a 100644
--- a/src/org/infinity/resource/key/BIFFReader.java
+++ b/src/org/infinity/resource/key/BIFFReader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/BIFFResourceEntry.java b/src/org/infinity/resource/key/BIFFResourceEntry.java
index 115f78bef..feab6869a 100644
--- a/src/org/infinity/resource/key/BIFFResourceEntry.java
+++ b/src/org/infinity/resource/key/BIFFResourceEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/BIFFWriter.java b/src/org/infinity/resource/key/BIFFWriter.java
index 53bcccab7..7f38d7654 100644
--- a/src/org/infinity/resource/key/BIFFWriter.java
+++ b/src/org/infinity/resource/key/BIFFWriter.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/BIFReader.java b/src/org/infinity/resource/key/BIFReader.java
index 02553974b..ff24dec83 100644
--- a/src/org/infinity/resource/key/BIFReader.java
+++ b/src/org/infinity/resource/key/BIFReader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/BufferedResourceEntry.java b/src/org/infinity/resource/key/BufferedResourceEntry.java
index fbbb802e2..baa9d59d1 100644
--- a/src/org/infinity/resource/key/BufferedResourceEntry.java
+++ b/src/org/infinity/resource/key/BufferedResourceEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/FileResourceEntry.java b/src/org/infinity/resource/key/FileResourceEntry.java
index b55e697a3..6d649142a 100644
--- a/src/org/infinity/resource/key/FileResourceEntry.java
+++ b/src/org/infinity/resource/key/FileResourceEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/Keyfile.java b/src/org/infinity/resource/key/Keyfile.java
index b7af08e7b..31cbc8bb4 100644
--- a/src/org/infinity/resource/key/Keyfile.java
+++ b/src/org/infinity/resource/key/Keyfile.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/ResourceEntry.java b/src/org/infinity/resource/key/ResourceEntry.java
index 8f7006c37..fc29b3ea9 100644
--- a/src/org/infinity/resource/key/ResourceEntry.java
+++ b/src/org/infinity/resource/key/ResourceEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/ResourceTreeFolder.java b/src/org/infinity/resource/key/ResourceTreeFolder.java
index 4a8c5125f..e0032c25d 100644
--- a/src/org/infinity/resource/key/ResourceTreeFolder.java
+++ b/src/org/infinity/resource/key/ResourceTreeFolder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/key/ResourceTreeModel.java b/src/org/infinity/resource/key/ResourceTreeModel.java
index ddf2d399b..ef8052a73 100644
--- a/src/org/infinity/resource/key/ResourceTreeModel.java
+++ b/src/org/infinity/resource/key/ResourceTreeModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.key;
diff --git a/src/org/infinity/resource/maze/MazeEntry.java b/src/org/infinity/resource/maze/MazeEntry.java
index f291c9872..89662195a 100644
--- a/src/org/infinity/resource/maze/MazeEntry.java
+++ b/src/org/infinity/resource/maze/MazeEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.maze;
diff --git a/src/org/infinity/resource/maze/MazeResource.java b/src/org/infinity/resource/maze/MazeResource.java
index a48022845..288820b8d 100644
--- a/src/org/infinity/resource/maze/MazeResource.java
+++ b/src/org/infinity/resource/maze/MazeResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.maze;
diff --git a/src/org/infinity/resource/mus/Entry.java b/src/org/infinity/resource/mus/Entry.java
index 753525f83..0271ba6e3 100644
--- a/src/org/infinity/resource/mus/Entry.java
+++ b/src/org/infinity/resource/mus/Entry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.mus;
diff --git a/src/org/infinity/resource/mus/MusResource.java b/src/org/infinity/resource/mus/MusResource.java
index 3469c805d..9d80076bc 100644
--- a/src/org/infinity/resource/mus/MusResource.java
+++ b/src/org/infinity/resource/mus/MusResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.mus;
diff --git a/src/org/infinity/resource/mus/Viewer.java b/src/org/infinity/resource/mus/Viewer.java
index 57131ab15..ea33c0ad6 100644
--- a/src/org/infinity/resource/mus/Viewer.java
+++ b/src/org/infinity/resource/mus/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.mus;
diff --git a/src/org/infinity/resource/other/EffResource.java b/src/org/infinity/resource/other/EffResource.java
index e94cdc868..98000b95a 100644
--- a/src/org/infinity/resource/other/EffResource.java
+++ b/src/org/infinity/resource/other/EffResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.other;
diff --git a/src/org/infinity/resource/other/FntResource.java b/src/org/infinity/resource/other/FntResource.java
index ed94eb683..7e6171e63 100644
--- a/src/org/infinity/resource/other/FntResource.java
+++ b/src/org/infinity/resource/other/FntResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.other;
diff --git a/src/org/infinity/resource/other/TtfResource.java b/src/org/infinity/resource/other/TtfResource.java
index 2b228c3c5..933e5f50f 100644
--- a/src/org/infinity/resource/other/TtfResource.java
+++ b/src/org/infinity/resource/other/TtfResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.other;
diff --git a/src/org/infinity/resource/other/UnknownResource.java b/src/org/infinity/resource/other/UnknownResource.java
index 95b74a0c2..a9670078c 100644
--- a/src/org/infinity/resource/other/UnknownResource.java
+++ b/src/org/infinity/resource/other/UnknownResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.other;
diff --git a/src/org/infinity/resource/other/VvcResource.java b/src/org/infinity/resource/other/VvcResource.java
index 26d2aa14a..457e7e122 100644
--- a/src/org/infinity/resource/other/VvcResource.java
+++ b/src/org/infinity/resource/other/VvcResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.other;
diff --git a/src/org/infinity/resource/other/WfxResource.java b/src/org/infinity/resource/other/WfxResource.java
index 3097a3d7d..346a1ec2a 100644
--- a/src/org/infinity/resource/other/WfxResource.java
+++ b/src/org/infinity/resource/other/WfxResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.other;
diff --git a/src/org/infinity/resource/pro/ProAreaType.java b/src/org/infinity/resource/pro/ProAreaType.java
index 2ca4babab..7b98de038 100644
--- a/src/org/infinity/resource/pro/ProAreaType.java
+++ b/src/org/infinity/resource/pro/ProAreaType.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.pro;
diff --git a/src/org/infinity/resource/pro/ProResource.java b/src/org/infinity/resource/pro/ProResource.java
index dbc0a45ae..8d2fda849 100644
--- a/src/org/infinity/resource/pro/ProResource.java
+++ b/src/org/infinity/resource/pro/ProResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.pro;
@@ -52,7 +52,7 @@
* @see
* https://gibberlings3.github.io/iesdp/file_formats/ie_formats/pro_v1.htm
*/
-public final class ProResource extends AbstractStruct implements Resource, HasViewerTabs, UpdateListener {
+public final class ProResource extends AbstractStruct implements Resource, HasChildStructs, HasViewerTabs, UpdateListener {
// PRO-specific field labels
public static final String PRO_TYPE = "Projectile type";
public static final String PRO_SPEED = "Speed";
@@ -195,6 +195,16 @@ public boolean valueUpdated(UpdateEvent event) {
return false;
}
+ @Override
+ public AddRemovable[] getPrototypes() throws Exception {
+ return new AddRemovable[] {};
+ }
+
+ @Override
+ public AddRemovable confirmAddEntry(AddRemovable entry) throws Exception {
+ return entry;
+ }
+
@Override
public int getViewerTabCount() {
return 1;
diff --git a/src/org/infinity/resource/pro/ProSingleType.java b/src/org/infinity/resource/pro/ProSingleType.java
index 7a85537dd..4e0ad08ac 100644
--- a/src/org/infinity/resource/pro/ProSingleType.java
+++ b/src/org/infinity/resource/pro/ProSingleType.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.pro;
diff --git a/src/org/infinity/resource/sav/IOHandler.java b/src/org/infinity/resource/sav/IOHandler.java
index 9ee463b94..7b777bc93 100644
--- a/src/org/infinity/resource/sav/IOHandler.java
+++ b/src/org/infinity/resource/sav/IOHandler.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sav;
diff --git a/src/org/infinity/resource/sav/SavResource.java b/src/org/infinity/resource/sav/SavResource.java
index 16edb8226..6b26afdfb 100644
--- a/src/org/infinity/resource/sav/SavResource.java
+++ b/src/org/infinity/resource/sav/SavResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sav;
diff --git a/src/org/infinity/resource/sav/SavResourceEntry.java b/src/org/infinity/resource/sav/SavResourceEntry.java
index 03a8a1191..005a71363 100644
--- a/src/org/infinity/resource/sav/SavResourceEntry.java
+++ b/src/org/infinity/resource/sav/SavResourceEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sav;
diff --git a/src/org/infinity/resource/sound/AcmBuffer.java b/src/org/infinity/resource/sound/AcmBuffer.java
index 1924bbb56..bb71cf083 100644
--- a/src/org/infinity/resource/sound/AcmBuffer.java
+++ b/src/org/infinity/resource/sound/AcmBuffer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/sound/AudioBuffer.java b/src/org/infinity/resource/sound/AudioBuffer.java
index 3d1826dfb..c732983ec 100644
--- a/src/org/infinity/resource/sound/AudioBuffer.java
+++ b/src/org/infinity/resource/sound/AudioBuffer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/sound/AudioFactory.java b/src/org/infinity/resource/sound/AudioFactory.java
index cd9db1355..99b924e51 100644
--- a/src/org/infinity/resource/sound/AudioFactory.java
+++ b/src/org/infinity/resource/sound/AudioFactory.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/sound/AudioPlayer.java b/src/org/infinity/resource/sound/AudioPlayer.java
index be37a396d..0a9634549 100644
--- a/src/org/infinity/resource/sound/AudioPlayer.java
+++ b/src/org/infinity/resource/sound/AudioPlayer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/sound/OggBuffer.java b/src/org/infinity/resource/sound/OggBuffer.java
index f92554110..d21f78884 100644
--- a/src/org/infinity/resource/sound/OggBuffer.java
+++ b/src/org/infinity/resource/sound/OggBuffer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/sound/SoundResource.java b/src/org/infinity/resource/sound/SoundResource.java
index 5878cd0a7..83b3731a8 100644
--- a/src/org/infinity/resource/sound/SoundResource.java
+++ b/src/org/infinity/resource/sound/SoundResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/sound/WavBuffer.java b/src/org/infinity/resource/sound/WavBuffer.java
index cc0db276d..646fa2336 100644
--- a/src/org/infinity/resource/sound/WavBuffer.java
+++ b/src/org/infinity/resource/sound/WavBuffer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/sound/WavcBuffer.java b/src/org/infinity/resource/sound/WavcBuffer.java
index 5bb69d234..8817a3c4b 100644
--- a/src/org/infinity/resource/sound/WavcBuffer.java
+++ b/src/org/infinity/resource/sound/WavcBuffer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sound;
diff --git a/src/org/infinity/resource/spl/Ability.java b/src/org/infinity/resource/spl/Ability.java
index 99f57936c..43f93a8a2 100644
--- a/src/org/infinity/resource/spl/Ability.java
+++ b/src/org/infinity/resource/spl/Ability.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.spl;
diff --git a/src/org/infinity/resource/spl/SplResource.java b/src/org/infinity/resource/spl/SplResource.java
index 5a825381d..65ea74bf1 100644
--- a/src/org/infinity/resource/spl/SplResource.java
+++ b/src/org/infinity/resource/spl/SplResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.spl;
diff --git a/src/org/infinity/resource/spl/Viewer.java b/src/org/infinity/resource/spl/Viewer.java
index 1963b38ad..cf45f7ef4 100644
--- a/src/org/infinity/resource/spl/Viewer.java
+++ b/src/org/infinity/resource/spl/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.spl;
diff --git a/src/org/infinity/resource/spl/ViewerAbility.java b/src/org/infinity/resource/spl/ViewerAbility.java
index 6a921cfa8..4d3de66fc 100644
--- a/src/org/infinity/resource/spl/ViewerAbility.java
+++ b/src/org/infinity/resource/spl/ViewerAbility.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.spl;
diff --git a/src/org/infinity/resource/src/Entry.java b/src/org/infinity/resource/src/Entry.java
index c534cd37c..20a43ef96 100644
--- a/src/org/infinity/resource/src/Entry.java
+++ b/src/org/infinity/resource/src/Entry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.src;
diff --git a/src/org/infinity/resource/src/SrcResource.java b/src/org/infinity/resource/src/SrcResource.java
index a32060d3d..06feb83aa 100644
--- a/src/org/infinity/resource/src/SrcResource.java
+++ b/src/org/infinity/resource/src/SrcResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.src;
diff --git a/src/org/infinity/resource/sto/Cure.java b/src/org/infinity/resource/sto/Cure.java
index 857ab9d07..85b739089 100644
--- a/src/org/infinity/resource/sto/Cure.java
+++ b/src/org/infinity/resource/sto/Cure.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sto;
diff --git a/src/org/infinity/resource/sto/Drink.java b/src/org/infinity/resource/sto/Drink.java
index 2fe70a652..a61509905 100644
--- a/src/org/infinity/resource/sto/Drink.java
+++ b/src/org/infinity/resource/sto/Drink.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sto;
diff --git a/src/org/infinity/resource/sto/ItemSale.java b/src/org/infinity/resource/sto/ItemSale.java
index 9f716b15e..8099cf9d3 100644
--- a/src/org/infinity/resource/sto/ItemSale.java
+++ b/src/org/infinity/resource/sto/ItemSale.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sto;
diff --git a/src/org/infinity/resource/sto/ItemSale11.java b/src/org/infinity/resource/sto/ItemSale11.java
index 22554c2e9..205f86893 100644
--- a/src/org/infinity/resource/sto/ItemSale11.java
+++ b/src/org/infinity/resource/sto/ItemSale11.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sto;
diff --git a/src/org/infinity/resource/sto/Purchases.java b/src/org/infinity/resource/sto/Purchases.java
index a942bcd9e..d76ef2db4 100644
--- a/src/org/infinity/resource/sto/Purchases.java
+++ b/src/org/infinity/resource/sto/Purchases.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sto;
diff --git a/src/org/infinity/resource/sto/StoResource.java b/src/org/infinity/resource/sto/StoResource.java
index 287bd9c3f..54ff44ca6 100644
--- a/src/org/infinity/resource/sto/StoResource.java
+++ b/src/org/infinity/resource/sto/StoResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sto;
diff --git a/src/org/infinity/resource/sto/Viewer.java b/src/org/infinity/resource/sto/Viewer.java
index ce04237c9..fee7abbf2 100644
--- a/src/org/infinity/resource/sto/Viewer.java
+++ b/src/org/infinity/resource/sto/Viewer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.sto;
diff --git a/src/org/infinity/resource/text/PlainTextResource.java b/src/org/infinity/resource/text/PlainTextResource.java
index 97223cf99..2df2a45fe 100644
--- a/src/org/infinity/resource/text/PlainTextResource.java
+++ b/src/org/infinity/resource/text/PlainTextResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.text;
@@ -328,12 +328,7 @@ public PlainTextResource(ResourceEntry entry) throws Exception {
if (buffer.limit() > 1 && buffer.getShort(0) == -1) {
buffer = StaticSimpleXorDecryptor.decrypt(buffer, 2);
}
- final Charset cs;
- if (BrowserMenuBar.getInstance() != null) {
- cs = Charset.forName(BrowserMenuBar.getInstance().getSelectedCharset());
- } else {
- cs = Misc.CHARSET_DEFAULT;
- }
+ final Charset cs = Misc.getCharsetFrom(BrowserMenuBar.getInstance().getSelectedCharset());
text = StreamUtils.readString(buffer, buffer.limit(), cs);
}
diff --git a/src/org/infinity/resource/text/QuestsPanel.java b/src/org/infinity/resource/text/QuestsPanel.java
index 7c08cf9cb..b895948bf 100644
--- a/src/org/infinity/resource/text/QuestsPanel.java
+++ b/src/org/infinity/resource/text/QuestsPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.text;
diff --git a/src/org/infinity/resource/text/QuestsResource.java b/src/org/infinity/resource/text/QuestsResource.java
index 636bc841d..a6a12ccde 100644
--- a/src/org/infinity/resource/text/QuestsResource.java
+++ b/src/org/infinity/resource/text/QuestsResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.text;
diff --git a/src/org/infinity/resource/text/modes/BCSFoldParser.java b/src/org/infinity/resource/text/modes/BCSFoldParser.java
index 3753e0729..d638ebadf 100644
--- a/src/org/infinity/resource/text/modes/BCSFoldParser.java
+++ b/src/org/infinity/resource/text/modes/BCSFoldParser.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.text.modes;
diff --git a/src/org/infinity/resource/text/modes/BCSTokenMaker.java b/src/org/infinity/resource/text/modes/BCSTokenMaker.java
index 1a2a22341..a752c8699 100644
--- a/src/org/infinity/resource/text/modes/BCSTokenMaker.java
+++ b/src/org/infinity/resource/text/modes/BCSTokenMaker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.text.modes;
diff --git a/src/org/infinity/resource/text/modes/GLSLTokenMaker.java b/src/org/infinity/resource/text/modes/GLSLTokenMaker.java
index c7023d22b..539e0f58d 100644
--- a/src/org/infinity/resource/text/modes/GLSLTokenMaker.java
+++ b/src/org/infinity/resource/text/modes/GLSLTokenMaker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2005 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
/* The following code was generated by JFlex 1.5.1 */
@@ -24,6 +24,7 @@
import org.fife.ui.rsyntaxtextarea.AbstractJFlexCTokenMaker;
import org.fife.ui.rsyntaxtextarea.Token;
import org.fife.ui.rsyntaxtextarea.TokenImpl;
+import org.infinity.util.Misc;
/**
@@ -3872,8 +3873,7 @@ public GLSLTokenMaker(java.io.Reader in) {
* @param in the java.io.Inputstream to read input from.
*/
public GLSLTokenMaker(java.io.InputStream in) {
- this(new java.io.InputStreamReader
- (in, java.nio.charset.Charset.forName("UTF-8")));
+ this(new java.io.InputStreamReader(in, Misc.CHARSET_UTF8));
}
/**
diff --git a/src/org/infinity/resource/text/modes/TLKTokenMaker.java b/src/org/infinity/resource/text/modes/TLKTokenMaker.java
index 0ea88a723..5453fd350 100644
--- a/src/org/infinity/resource/text/modes/TLKTokenMaker.java
+++ b/src/org/infinity/resource/text/modes/TLKTokenMaker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.text.modes;
diff --git a/src/org/infinity/resource/text/modes/WeiDULogTokenMaker.java b/src/org/infinity/resource/text/modes/WeiDULogTokenMaker.java
index 0fa99851a..73238c19d 100644
--- a/src/org/infinity/resource/text/modes/WeiDULogTokenMaker.java
+++ b/src/org/infinity/resource/text/modes/WeiDULogTokenMaker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.text.modes;
diff --git a/src/org/infinity/resource/to/StrRefEntry.java b/src/org/infinity/resource/to/StrRefEntry.java
index adaa162ea..d7c783579 100644
--- a/src/org/infinity/resource/to/StrRefEntry.java
+++ b/src/org/infinity/resource/to/StrRefEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.to;
diff --git a/src/org/infinity/resource/to/StrRefEntry2.java b/src/org/infinity/resource/to/StrRefEntry2.java
index 491b41409..8e866ff0d 100644
--- a/src/org/infinity/resource/to/StrRefEntry2.java
+++ b/src/org/infinity/resource/to/StrRefEntry2.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.to;
diff --git a/src/org/infinity/resource/to/StringEntry.java b/src/org/infinity/resource/to/StringEntry.java
index 26452332e..5fc12053b 100644
--- a/src/org/infinity/resource/to/StringEntry.java
+++ b/src/org/infinity/resource/to/StringEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.to;
diff --git a/src/org/infinity/resource/to/StringEntry2.java b/src/org/infinity/resource/to/StringEntry2.java
index 68cca8ed1..c5097e60a 100644
--- a/src/org/infinity/resource/to/StringEntry2.java
+++ b/src/org/infinity/resource/to/StringEntry2.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.to;
diff --git a/src/org/infinity/resource/to/TohResource.java b/src/org/infinity/resource/to/TohResource.java
index 9fa78c75d..9313ae36e 100644
--- a/src/org/infinity/resource/to/TohResource.java
+++ b/src/org/infinity/resource/to/TohResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.to;
diff --git a/src/org/infinity/resource/to/TotResource.java b/src/org/infinity/resource/to/TotResource.java
index 5aec391c9..384b0d7f5 100644
--- a/src/org/infinity/resource/to/TotResource.java
+++ b/src/org/infinity/resource/to/TotResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.to;
diff --git a/src/org/infinity/resource/ui/ResourceCellRenderer.java b/src/org/infinity/resource/ui/ResourceCellRenderer.java
index 077db4eaf..f2be5a6f5 100644
--- a/src/org/infinity/resource/ui/ResourceCellRenderer.java
+++ b/src/org/infinity/resource/ui/ResourceCellRenderer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.ui;
diff --git a/src/org/infinity/resource/ui/ResourceListModel.java b/src/org/infinity/resource/ui/ResourceListModel.java
index 397267cb5..1ae676431 100644
--- a/src/org/infinity/resource/ui/ResourceListModel.java
+++ b/src/org/infinity/resource/ui/ResourceListModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.ui;
diff --git a/src/org/infinity/resource/var/Entry.java b/src/org/infinity/resource/var/Entry.java
index a90081517..9237a344c 100644
--- a/src/org/infinity/resource/var/Entry.java
+++ b/src/org/infinity/resource/var/Entry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.var;
diff --git a/src/org/infinity/resource/var/VarResource.java b/src/org/infinity/resource/var/VarResource.java
index 485359845..6d5f6e2ef 100644
--- a/src/org/infinity/resource/var/VarResource.java
+++ b/src/org/infinity/resource/var/VarResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.var;
diff --git a/src/org/infinity/resource/vef/AbstractComponent.java b/src/org/infinity/resource/vef/AbstractComponent.java
index ee9c97dae..bc64690a0 100644
--- a/src/org/infinity/resource/vef/AbstractComponent.java
+++ b/src/org/infinity/resource/vef/AbstractComponent.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vef;
diff --git a/src/org/infinity/resource/vef/PrimaryComponent.java b/src/org/infinity/resource/vef/PrimaryComponent.java
index 6030ded23..57d1fc99b 100644
--- a/src/org/infinity/resource/vef/PrimaryComponent.java
+++ b/src/org/infinity/resource/vef/PrimaryComponent.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vef;
diff --git a/src/org/infinity/resource/vef/SecondaryComponent.java b/src/org/infinity/resource/vef/SecondaryComponent.java
index 4e744869a..4599d95cb 100644
--- a/src/org/infinity/resource/vef/SecondaryComponent.java
+++ b/src/org/infinity/resource/vef/SecondaryComponent.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vef;
diff --git a/src/org/infinity/resource/vef/VefResource.java b/src/org/infinity/resource/vef/VefResource.java
index d7ee9e280..29feb8b5e 100644
--- a/src/org/infinity/resource/vef/VefResource.java
+++ b/src/org/infinity/resource/vef/VefResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vef;
diff --git a/src/org/infinity/resource/vef/VefType.java b/src/org/infinity/resource/vef/VefType.java
index 655a84a6b..7195f85ee 100644
--- a/src/org/infinity/resource/vef/VefType.java
+++ b/src/org/infinity/resource/vef/VefType.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vef;
diff --git a/src/org/infinity/resource/vertex/ClosedVertex.java b/src/org/infinity/resource/vertex/ClosedVertex.java
index 91f0f41a5..498660863 100644
--- a/src/org/infinity/resource/vertex/ClosedVertex.java
+++ b/src/org/infinity/resource/vertex/ClosedVertex.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vertex;
diff --git a/src/org/infinity/resource/vertex/ClosedVertexImpeded.java b/src/org/infinity/resource/vertex/ClosedVertexImpeded.java
index 223a001f3..e468607cf 100644
--- a/src/org/infinity/resource/vertex/ClosedVertexImpeded.java
+++ b/src/org/infinity/resource/vertex/ClosedVertexImpeded.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vertex;
diff --git a/src/org/infinity/resource/vertex/OpenVertex.java b/src/org/infinity/resource/vertex/OpenVertex.java
index 3a8de1ad4..ae90222f2 100644
--- a/src/org/infinity/resource/vertex/OpenVertex.java
+++ b/src/org/infinity/resource/vertex/OpenVertex.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vertex;
diff --git a/src/org/infinity/resource/vertex/OpenVertexImpeded.java b/src/org/infinity/resource/vertex/OpenVertexImpeded.java
index b2dc2cc98..60a97df51 100644
--- a/src/org/infinity/resource/vertex/OpenVertexImpeded.java
+++ b/src/org/infinity/resource/vertex/OpenVertexImpeded.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vertex;
diff --git a/src/org/infinity/resource/vertex/Vertex.java b/src/org/infinity/resource/vertex/Vertex.java
index 04db25d40..a2d9df81b 100644
--- a/src/org/infinity/resource/vertex/Vertex.java
+++ b/src/org/infinity/resource/vertex/Vertex.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.vertex;
diff --git a/src/org/infinity/resource/video/AudioQueue.java b/src/org/infinity/resource/video/AudioQueue.java
index 8f8f7808b..225d67cf4 100644
--- a/src/org/infinity/resource/video/AudioQueue.java
+++ b/src/org/infinity/resource/video/AudioQueue.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/BasicVideoBuffer.java b/src/org/infinity/resource/video/BasicVideoBuffer.java
index 322624fe9..7ff4b8734 100644
--- a/src/org/infinity/resource/video/BasicVideoBuffer.java
+++ b/src/org/infinity/resource/video/BasicVideoBuffer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/ImageRenderer.java b/src/org/infinity/resource/video/ImageRenderer.java
index 1ef4616f0..5ca8dc4bc 100644
--- a/src/org/infinity/resource/video/ImageRenderer.java
+++ b/src/org/infinity/resource/video/ImageRenderer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/MveAudioDecoder.java b/src/org/infinity/resource/video/MveAudioDecoder.java
index 364f4e2ca..8dc297d7a 100644
--- a/src/org/infinity/resource/video/MveAudioDecoder.java
+++ b/src/org/infinity/resource/video/MveAudioDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/MveDecoder.java b/src/org/infinity/resource/video/MveDecoder.java
index 5d7e5705a..7ee977186 100644
--- a/src/org/infinity/resource/video/MveDecoder.java
+++ b/src/org/infinity/resource/video/MveDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/MvePlayer.java b/src/org/infinity/resource/video/MvePlayer.java
index cae5081a8..a16b1d9ae 100644
--- a/src/org/infinity/resource/video/MvePlayer.java
+++ b/src/org/infinity/resource/video/MvePlayer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/MveResource.java b/src/org/infinity/resource/video/MveResource.java
index 07c2409cf..e211dda17 100644
--- a/src/org/infinity/resource/video/MveResource.java
+++ b/src/org/infinity/resource/video/MveResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/MveVideoDecoder.java b/src/org/infinity/resource/video/MveVideoDecoder.java
index c56bba640..b7354398e 100644
--- a/src/org/infinity/resource/video/MveVideoDecoder.java
+++ b/src/org/infinity/resource/video/MveVideoDecoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/VideoBuffer.java b/src/org/infinity/resource/video/VideoBuffer.java
index 1f7347bb2..495223ea7 100644
--- a/src/org/infinity/resource/video/VideoBuffer.java
+++ b/src/org/infinity/resource/video/VideoBuffer.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
diff --git a/src/org/infinity/resource/video/WbmResource.java b/src/org/infinity/resource/video/WbmResource.java
index 81332741e..f7894378c 100644
--- a/src/org/infinity/resource/video/WbmResource.java
+++ b/src/org/infinity/resource/video/WbmResource.java
@@ -1,12 +1,11 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.video;
import java.awt.BorderLayout;
import java.awt.Component;
-import java.awt.Desktop;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
@@ -36,6 +35,7 @@
import org.infinity.resource.key.ResourceEntry;
import org.infinity.search.ReferenceSearcher;
import org.infinity.util.FileDeletionHook;
+import org.infinity.util.LauncherUtils;
import org.infinity.util.io.FileEx;
import org.infinity.util.io.FileManager;
import org.infinity.util.io.StreamUtils;
@@ -69,7 +69,7 @@ public void actionPerformed(ActionEvent event) {
}
if (videoFile != null) {
try {
- Desktop.getDesktop().open(videoFile.toFile());
+ LauncherUtils.open(videoFile);
} catch (Exception e) {
bPlayExternal.setEnabled(false);
WindowBlocker.blockWindow(false);
diff --git a/src/org/infinity/resource/wed/ClosedPolygon.java b/src/org/infinity/resource/wed/ClosedPolygon.java
index 82397f4dd..cbb48da14 100644
--- a/src/org/infinity/resource/wed/ClosedPolygon.java
+++ b/src/org/infinity/resource/wed/ClosedPolygon.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/Door.java b/src/org/infinity/resource/wed/Door.java
index 0daa0aa2c..2299c3f46 100644
--- a/src/org/infinity/resource/wed/Door.java
+++ b/src/org/infinity/resource/wed/Door.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/IndexNumber.java b/src/org/infinity/resource/wed/IndexNumber.java
index a884d6fd8..7f9a7a9e5 100644
--- a/src/org/infinity/resource/wed/IndexNumber.java
+++ b/src/org/infinity/resource/wed/IndexNumber.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/OpenPolygon.java b/src/org/infinity/resource/wed/OpenPolygon.java
index 27572c44d..1dfd53279 100644
--- a/src/org/infinity/resource/wed/OpenPolygon.java
+++ b/src/org/infinity/resource/wed/OpenPolygon.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/Overlay.java b/src/org/infinity/resource/wed/Overlay.java
index d38c3be31..99aa392c4 100644
--- a/src/org/infinity/resource/wed/Overlay.java
+++ b/src/org/infinity/resource/wed/Overlay.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/Polygon.java b/src/org/infinity/resource/wed/Polygon.java
index 3169b2477..b7d562462 100644
--- a/src/org/infinity/resource/wed/Polygon.java
+++ b/src/org/infinity/resource/wed/Polygon.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/Tilemap.java b/src/org/infinity/resource/wed/Tilemap.java
index 054a028f9..b4e0681ac 100644
--- a/src/org/infinity/resource/wed/Tilemap.java
+++ b/src/org/infinity/resource/wed/Tilemap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/WallPolygon.java b/src/org/infinity/resource/wed/WallPolygon.java
index 67bc9f6cd..f067078c6 100644
--- a/src/org/infinity/resource/wed/WallPolygon.java
+++ b/src/org/infinity/resource/wed/WallPolygon.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/Wallgroup.java b/src/org/infinity/resource/wed/Wallgroup.java
index e05818c23..191261d21 100644
--- a/src/org/infinity/resource/wed/Wallgroup.java
+++ b/src/org/infinity/resource/wed/Wallgroup.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wed/WedResource.java b/src/org/infinity/resource/wed/WedResource.java
index c3f1ab694..ea2eb5e93 100644
--- a/src/org/infinity/resource/wed/WedResource.java
+++ b/src/org/infinity/resource/wed/WedResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wed;
diff --git a/src/org/infinity/resource/wmp/AreaEntry.java b/src/org/infinity/resource/wmp/AreaEntry.java
index 81bab1c7f..ae9d6cd6e 100644
--- a/src/org/infinity/resource/wmp/AreaEntry.java
+++ b/src/org/infinity/resource/wmp/AreaEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/AreaLink.java b/src/org/infinity/resource/wmp/AreaLink.java
index 9c26560c4..f972f2e20 100644
--- a/src/org/infinity/resource/wmp/AreaLink.java
+++ b/src/org/infinity/resource/wmp/AreaLink.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/AreaLinkEast.java b/src/org/infinity/resource/wmp/AreaLinkEast.java
index b46e6dd30..dbc6a7346 100644
--- a/src/org/infinity/resource/wmp/AreaLinkEast.java
+++ b/src/org/infinity/resource/wmp/AreaLinkEast.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/AreaLinkNorth.java b/src/org/infinity/resource/wmp/AreaLinkNorth.java
index 059ff4de5..b330632b1 100644
--- a/src/org/infinity/resource/wmp/AreaLinkNorth.java
+++ b/src/org/infinity/resource/wmp/AreaLinkNorth.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/AreaLinkSouth.java b/src/org/infinity/resource/wmp/AreaLinkSouth.java
index 59cb05b1b..e159b96af 100644
--- a/src/org/infinity/resource/wmp/AreaLinkSouth.java
+++ b/src/org/infinity/resource/wmp/AreaLinkSouth.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/AreaLinkWest.java b/src/org/infinity/resource/wmp/AreaLinkWest.java
index e667d5958..357e6560e 100644
--- a/src/org/infinity/resource/wmp/AreaLinkWest.java
+++ b/src/org/infinity/resource/wmp/AreaLinkWest.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/MapEntry.java b/src/org/infinity/resource/wmp/MapEntry.java
index 869412fe5..5dddd0863 100644
--- a/src/org/infinity/resource/wmp/MapEntry.java
+++ b/src/org/infinity/resource/wmp/MapEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/ViewerArea.java b/src/org/infinity/resource/wmp/ViewerArea.java
index 1c5b4eacc..28e1ccc11 100644
--- a/src/org/infinity/resource/wmp/ViewerArea.java
+++ b/src/org/infinity/resource/wmp/ViewerArea.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/ViewerMap.java b/src/org/infinity/resource/wmp/ViewerMap.java
index c2fa42f33..de8104487 100644
--- a/src/org/infinity/resource/wmp/ViewerMap.java
+++ b/src/org/infinity/resource/wmp/ViewerMap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/resource/wmp/WmpResource.java b/src/org/infinity/resource/wmp/WmpResource.java
index 13df9f538..718db1425 100644
--- a/src/org/infinity/resource/wmp/WmpResource.java
+++ b/src/org/infinity/resource/wmp/WmpResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.wmp;
diff --git a/src/org/infinity/search/AbstractReferenceSearcher.java b/src/org/infinity/search/AbstractReferenceSearcher.java
index 09464dd3a..9acc3b525 100644
--- a/src/org/infinity/search/AbstractReferenceSearcher.java
+++ b/src/org/infinity/search/AbstractReferenceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/AbstractSearcher.java b/src/org/infinity/search/AbstractSearcher.java
index 8c23284e8..588261ab7 100644
--- a/src/org/infinity/search/AbstractSearcher.java
+++ b/src/org/infinity/search/AbstractSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/AttributeSearcher.java b/src/org/infinity/search/AttributeSearcher.java
index 277076f27..3ee55557a 100644
--- a/src/org/infinity/search/AttributeSearcher.java
+++ b/src/org/infinity/search/AttributeSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/DialogItemRefSearcher.java b/src/org/infinity/search/DialogItemRefSearcher.java
index 4b6a83ab2..52ede113a 100644
--- a/src/org/infinity/search/DialogItemRefSearcher.java
+++ b/src/org/infinity/search/DialogItemRefSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/DialogSearcher.java b/src/org/infinity/search/DialogSearcher.java
index 8f926ec3e..57937f7e9 100644
--- a/src/org/infinity/search/DialogSearcher.java
+++ b/src/org/infinity/search/DialogSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/DialogStateReferenceSearcher.java b/src/org/infinity/search/DialogStateReferenceSearcher.java
index 55e3f4efe..723a41dc3 100644
--- a/src/org/infinity/search/DialogStateReferenceSearcher.java
+++ b/src/org/infinity/search/DialogStateReferenceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/FileTypeSelector.java b/src/org/infinity/search/FileTypeSelector.java
index 9bc5496a9..df3be7571 100644
--- a/src/org/infinity/search/FileTypeSelector.java
+++ b/src/org/infinity/search/FileTypeSelector.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/ReferenceHitFrame.java b/src/org/infinity/search/ReferenceHitFrame.java
index ddcbc9f4e..995f2c137 100644
--- a/src/org/infinity/search/ReferenceHitFrame.java
+++ b/src/org/infinity/search/ReferenceHitFrame.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/ReferenceSearcher.java b/src/org/infinity/search/ReferenceSearcher.java
index f2af04ab0..1ce3087b3 100644
--- a/src/org/infinity/search/ReferenceSearcher.java
+++ b/src/org/infinity/search/ReferenceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/ScriptReferenceSearcher.java b/src/org/infinity/search/ScriptReferenceSearcher.java
index 60114c42a..b2a0fccaa 100644
--- a/src/org/infinity/search/ScriptReferenceSearcher.java
+++ b/src/org/infinity/search/ScriptReferenceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/SearchClient.java b/src/org/infinity/search/SearchClient.java
index 762ab721b..9219c3bb4 100644
--- a/src/org/infinity/search/SearchClient.java
+++ b/src/org/infinity/search/SearchClient.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/SearchFrame.java b/src/org/infinity/search/SearchFrame.java
index 11d33151a..a51f24003 100644
--- a/src/org/infinity/search/SearchFrame.java
+++ b/src/org/infinity/search/SearchFrame.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/SearchMaster.java b/src/org/infinity/search/SearchMaster.java
index fd93a99d3..872fcf8fa 100644
--- a/src/org/infinity/search/SearchMaster.java
+++ b/src/org/infinity/search/SearchMaster.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/SearchOptions.java b/src/org/infinity/search/SearchOptions.java
index 079e611b5..9b2b0c35b 100644
--- a/src/org/infinity/search/SearchOptions.java
+++ b/src/org/infinity/search/SearchOptions.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/SearchResource.java b/src/org/infinity/search/SearchResource.java
index 7de6906bc..149386112 100644
--- a/src/org/infinity/search/SearchResource.java
+++ b/src/org/infinity/search/SearchResource.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/SongReferenceSearcher.java b/src/org/infinity/search/SongReferenceSearcher.java
index 477ef1f6c..0d401cbab 100644
--- a/src/org/infinity/search/SongReferenceSearcher.java
+++ b/src/org/infinity/search/SongReferenceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/StringReferenceSearcher.java b/src/org/infinity/search/StringReferenceSearcher.java
index 58dbe2301..6b628644f 100644
--- a/src/org/infinity/search/StringReferenceSearcher.java
+++ b/src/org/infinity/search/StringReferenceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/TextHitFrame.java b/src/org/infinity/search/TextHitFrame.java
index 3ed59b702..9df3a2e81 100644
--- a/src/org/infinity/search/TextHitFrame.java
+++ b/src/org/infinity/search/TextHitFrame.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/TextResourceSearcher.java b/src/org/infinity/search/TextResourceSearcher.java
index fd4b54dd4..1ee9ef09b 100644
--- a/src/org/infinity/search/TextResourceSearcher.java
+++ b/src/org/infinity/search/TextResourceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/WavReferenceSearcher.java b/src/org/infinity/search/WavReferenceSearcher.java
index a61f0e2dd..1e062d01b 100644
--- a/src/org/infinity/search/WavReferenceSearcher.java
+++ b/src/org/infinity/search/WavReferenceSearcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search;
diff --git a/src/org/infinity/search/advanced/AdvancedSearch.java b/src/org/infinity/search/advanced/AdvancedSearch.java
index 8f33e5e30..1bc024c7f 100644
--- a/src/org/infinity/search/advanced/AdvancedSearch.java
+++ b/src/org/infinity/search/advanced/AdvancedSearch.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/search/advanced/AdvancedSearchWorker.java b/src/org/infinity/search/advanced/AdvancedSearchWorker.java
index 479478b41..9eda495d5 100644
--- a/src/org/infinity/search/advanced/AdvancedSearchWorker.java
+++ b/src/org/infinity/search/advanced/AdvancedSearchWorker.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/search/advanced/FilterInput.java b/src/org/infinity/search/advanced/FilterInput.java
index f5ab71ebc..f54b115fc 100644
--- a/src/org/infinity/search/advanced/FilterInput.java
+++ b/src/org/infinity/search/advanced/FilterInput.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/search/advanced/FlagsPanel.java b/src/org/infinity/search/advanced/FlagsPanel.java
index d85bdda3b..ec0f1dccb 100644
--- a/src/org/infinity/search/advanced/FlagsPanel.java
+++ b/src/org/infinity/search/advanced/FlagsPanel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/search/advanced/NumberFormatterEx.java b/src/org/infinity/search/advanced/NumberFormatterEx.java
index 9e71c8cf2..5c7bc92de 100644
--- a/src/org/infinity/search/advanced/NumberFormatterEx.java
+++ b/src/org/infinity/search/advanced/NumberFormatterEx.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/search/advanced/SearchOptions.java b/src/org/infinity/search/advanced/SearchOptions.java
index f1d40d7d2..78287b8cb 100644
--- a/src/org/infinity/search/advanced/SearchOptions.java
+++ b/src/org/infinity/search/advanced/SearchOptions.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/search/advanced/ToggleButtonDataModel.java b/src/org/infinity/search/advanced/ToggleButtonDataModel.java
index 3f0eecf36..ce9f47ddf 100644
--- a/src/org/infinity/search/advanced/ToggleButtonDataModel.java
+++ b/src/org/infinity/search/advanced/ToggleButtonDataModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/search/advanced/XmlConfig.java b/src/org/infinity/search/advanced/XmlConfig.java
index 24bfa033f..dc42e07a5 100644
--- a/src/org/infinity/search/advanced/XmlConfig.java
+++ b/src/org/infinity/search/advanced/XmlConfig.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.search.advanced;
diff --git a/src/org/infinity/updater/ParamURL.java b/src/org/infinity/updater/ParamURL.java
new file mode 100644
index 000000000..1b67eb1a5
--- /dev/null
+++ b/src/org/infinity/updater/ParamURL.java
@@ -0,0 +1,79 @@
+// Near Infinity - An Infinity Engine Browser and Editor
+// Copyright (C) 2001 Jon Olav Hauglid
+// See LICENSE.txt for license information
+
+package org.infinity.updater;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * Expands a {@link URL} by optional parameters that can be added, either by path or by query string.
+ */
+public class ParamURL {
+ private final List queryList = new ArrayList<>();
+ private final List pathList = new ArrayList<>();
+
+ private URL url;
+
+ public ParamURL(String url) throws Exception {
+ parse(url);
+ }
+
+ /** Returns the {@link URL} part of the parameterized URL. */
+ public URL getUrl() {
+ return url;
+ }
+
+ /** Returns a read-only list of the path parameters. */
+ public List getPaths() {
+ return Collections.unmodifiableList(pathList);
+ }
+
+ /** Returns a read-only list of the query parameters. */
+ public List getQueries() {
+ return Collections.unmodifiableList(queryList);
+ }
+
+ @Override
+ public String toString() {
+ String paths = pathList.stream().map(s -> "/" + s).collect(Collectors.joining());
+ String queries = String.join("&", queryList);
+ String result = url.toExternalForm() + paths;
+ if (!queries.isEmpty()) {
+ result += "?" + queries;
+ }
+ return result;
+ }
+
+ private void parse(String url) throws MalformedURLException {
+ final Pattern regUrl = Pattern.compile("^[^{]+");
+ final Pattern regParam = Pattern.compile("\\{([^}]*)\\}");
+
+ Matcher m = regUrl.matcher(url);
+ if (m.find()) {
+ this.url = new URL(m.group());
+ }
+
+ m = regParam.matcher(url);
+ while (m.find()) {
+ String param = m.group(1);
+ if (param.charAt(0) == '/') {
+ // path
+ pathList.add(param.substring(1));
+ } else if (param.charAt(0) == '?') {
+ String[] items = param.substring(1).split(",");
+ queryList.addAll(Arrays.asList(items));
+ } else {
+ throw new IllegalArgumentException("Not a valid parameterized URL: " + url);
+ }
+ }
+ }
+}
diff --git a/src/org/infinity/updater/UpdateCheck.java b/src/org/infinity/updater/UpdateCheck.java
index 376d87183..34d6cbdee 100644
--- a/src/org/infinity/updater/UpdateCheck.java
+++ b/src/org/infinity/updater/UpdateCheck.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.updater;
@@ -15,7 +15,7 @@
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.net.URL;
-import java.util.Iterator;
+import java.util.regex.Pattern;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
@@ -34,10 +34,14 @@
import javax.swing.WindowConstants;
import javax.swing.text.html.HTMLDocument;
+import org.commonmark.node.Node;
+import org.commonmark.parser.Parser;
+import org.commonmark.renderer.html.HtmlRenderer;
import org.infinity.NearInfinity;
import org.infinity.gui.LinkButton;
import org.infinity.gui.ViewerUtil;
import org.infinity.gui.WindowBlocker;
+import org.infinity.updater.UpdateInfo.Release;
/**
* Shows information about available updates and providing options how to deal with them.
@@ -128,13 +132,13 @@ public void actionPerformed(ActionEvent e) {
lNewVersion.setFont(lNewVersion.getFont().deriveFont(Font.BOLD));
tfNewVersion.setEditable(false);
tfNewVersion.setFont(lNewVersion.getFont());
- tfNewVersion.setText(getUpdateInfo().getRelease().getVersion());
+ tfNewVersion.setText(getUpdateInfo().getRelease().tagName);
JLabel lNewDate = new JLabel("Release date:");
lNewDate.setFont(lNewDate.getFont().deriveFont(Font.BOLD));
tfNewDate.setEditable(false);
tfNewDate.setFont(lNewDate.getFont());
- tfNewDate.setText(getUpdateInfo().getRelease().getTimeStamp().getTime().toString());
+ tfNewDate.setText(Utils.getStringFromDateTime(getUpdateInfo().getRelease().publishedAt));
JLabel lNewSize = new JLabel("Download size:");
lNewSize.setFont(lNewSize.getFont().deriveFont(Font.BOLD));
@@ -144,8 +148,7 @@ public void actionPerformed(ActionEvent e) {
try {
WindowBlocker.blockWindow(NearInfinity.getInstance(), true);
try {
- fileSize = Utils.getFileSizeUrl(new URL(getUpdateInfo().getRelease().getLink()),
- Updater.getInstance().getProxy());
+ fileSize = (int) getUpdateInfo().getRelease().getDefaultAsset().size;
} catch (Exception e) {
}
} finally {
@@ -158,7 +161,7 @@ public void actionPerformed(ActionEvent e) {
}
bDownload.addActionListener(getListeners());
- bDownload.setEnabled(getUpdateInfo().getRelease().getDownloadLink() != null);
+ bDownload.setEnabled(getUpdateInfo().getRelease().htmlUrl != null);
bCancel.addActionListener(getListeners());
@@ -216,30 +219,14 @@ public void actionPerformed(ActionEvent e) {
// creating changelog section
JPanel pChangelog = null;
- if (getUpdateInfo().getRelease().hasChangeLog()) {
+ if (hasChangelog()) {
pChangelog = new JPanel(new GridBagLayout());
-
JTextPane viewer = new JTextPane(new HTMLDocument());
viewer.setEditable(false);
viewer.setBackground(getBackground());
viewer.setContentType("text/html");
- StringBuilder sb = new StringBuilder();
- sb.append("");
- sb.append("");
- sb.append("");
- sb.append("
");
+
+ // only changelog list entries are relevant for us
+ final String[] lines = release.body.split("\r?\n");
+ int indexStart = 0;
+ int indexEnd = 0;
+ for (; indexStart < lines.length; indexStart++) {
+ final String line = lines[indexStart].toLowerCase();
+ if (line.contains("changelog:") || line.contains("changes:")) {
+ indexStart++;
+ break;
+ }
+ }
+
+ if (indexStart < lines.length) {
+ indexEnd = indexStart;
+ Pattern p = Pattern.compile("^\\s*[-+*]");
+ for (; indexEnd < lines.length; indexEnd++) {
+ if (!p.matcher(lines[indexEnd]).find()) {
+ break;
+ }
+ }
+
+ if (indexEnd > indexStart) {
+ // collecting list entries
+ StringBuilder sbList = new StringBuilder();
+ for (int i = indexStart; i < indexEnd; i++) {
+ sbList.append(lines[i]).append('\n');
+ }
+
+ // converting to html code
+ Parser parser = Parser.builder().build();
+ Node node = parser.parse(sbList.toString());
+ HtmlRenderer renderer = HtmlRenderer.builder().sanitizeUrls(true).build();
+ renderer.render(node, sb);
+ }
+ }
+
+ sb.append("");
+
+ return sb.toString();
+ }
+
// -------------------------- INNER CLASSES --------------------------
private class Listeners implements ActionListener {
diff --git a/src/org/infinity/updater/UpdateInfo.java b/src/org/infinity/updater/UpdateInfo.java
index 79ba263ac..2f2f0c433 100644
--- a/src/org/infinity/updater/UpdateInfo.java
+++ b/src/org/infinity/updater/UpdateInfo.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.updater;
@@ -10,13 +10,15 @@
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
+import java.time.OffsetDateTime;
import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.EnumMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -24,6 +26,8 @@
import org.infinity.util.Misc;
import org.infinity.util.io.StreamUtils;
import org.infinity.util.tuples.Couple;
+import org.json.JSONArray;
+import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
@@ -37,16 +41,6 @@
* Provides access to update information stored in "update.xml".
*/
public class UpdateInfo {
- /** Available release types. */
- public enum ReleaseType {
- /** Information about the latest Near Infinity release (stable or unstable). */
- LATEST,
- /** Information about the latest stable Near Infinity release. */
- STABLE,
- /** Information about the updater helper tool. */
- UPDATER
- }
-
/** File type of data to be downloaded. */
public enum FileType {
/** Indicates an unknown or unsupported file type. */
@@ -66,20 +60,14 @@ public enum FileType {
private static final String NODE_SERVER = "server";
private static final String NODE_INFO = "info";
private static final String NODE_LINK = "link";
- private static final String NODE_FILE = "file";
+ private static final String NODE_GITHUB = "github";
private static final String NODE_NAME = "name";
private static final String NODE_URL = "url";
- private static final String NODE_VERSION = "version";
- private static final String NODE_TIMESTAMP = "timestamp";
- private static final String NODE_HASH = "hash";
- private static final String NODE_CHANGELOG = "changelog";
- private static final String NODE_ENTRY = "entry";
private static final String ATTR_VERSION = "version";
private static final String ATTR_TYPE = "type";
- private final EnumMap releases = new EnumMap<>(ReleaseType.class);
-
private General general;
+ private Release release;
private int version;
/**
@@ -91,7 +79,7 @@ public enum FileType {
*/
public static boolean isValidXml(String s, String systemId) {
try {
- return isValidXml(new ByteArrayInputStream(s.getBytes("UTF-8")), systemId);
+ return isValidXml(new ByteArrayInputStream(s.getBytes(StandardCharsets.UTF_8.name())), systemId);
} catch (UnsupportedEncodingException e) {
}
return false;
@@ -169,20 +157,11 @@ public General getGeneral() {
}
/**
- * Provides access to the the Release section specified by the user in the Server Settings or returns {@code null} if
+ * Provides access to the the GitHub section specified by the user in the Server Settings or returns {@code null} if
* not available.
*/
public Release getRelease() {
- return releases.get(Updater.getInstance().isStableOnly() ? ReleaseType.STABLE : ReleaseType.LATEST);
- }
-
- /**
- * Provides access to the specified Release section or returns {@code null} if not available.
- *
- * @param type The release type to access.
- */
- public Release getRelease(ReleaseType type) {
- return releases.get(type);
+ return release;
}
// Returns whether all mandatory fields have been initialized correctly.
@@ -191,14 +170,10 @@ public boolean isValid() {
if (getGeneral() != null) {
retVal &= getGeneral().isValid();
}
+
if (getRelease() == null) {
retVal = false;
}
- if (retVal) {
- for (Iterator iter = releases.values().iterator(); iter.hasNext();) {
- retVal &= iter.next().isValid();
- }
- }
return retVal;
}
@@ -233,19 +208,17 @@ private void parseXml(InputStream is, String systemId) throws Exception {
throw new Exception("Update.xml: Unsupported root node name: " + elemRoot.getNodeName());
}
version = Misc.toNumber(elemRoot.getAttribute(ATTR_VERSION), 0);
- if (getUpdateInfoVersion() < 1) {
- throw new Exception("Update.xml: Unsupported or missing specification version");
+ if (version < 2) {
+ throw new Exception("Update.xml: Unsupported or missing specification version: " + version);
}
- // TODO: parse elements based on update version
-
// initializing general section
NodeList generalList = elemRoot.getElementsByTagName(NODE_GENERAL);
for (int idx = 0, size = generalList.getLength(); idx < size; idx++) {
Node n = generalList.item(idx);
if (n.getNodeType() == Node.ELEMENT_NODE) {
// General section is optional
- parseGeneral((Element) n);
+ general = parseGeneral((Element) n);
break;
}
}
@@ -255,13 +228,15 @@ private void parseXml(InputStream is, String systemId) throws Exception {
for (int idx = 0, size = releaseList.getLength(); idx < size; idx++) {
Node n = releaseList.item(idx);
if (n.getNodeType() == Node.ELEMENT_NODE) {
- parseRelease((Element) n);
+ final Element elemRelease = (Element) n;
+ release = parseGitHub(elemRelease);
}
}
}
}
- private void parseGeneral(Element elemGeneral) throws Exception {
+ /** Parses the child elements of the specified "general" node and return it as {@code General} instance. */
+ private General parseGeneral(Element elemGeneral) throws Exception {
if (elemGeneral == null || !elemGeneral.getNodeName().equals(NODE_GENERAL)) {
throw new Exception("Update.xml: Node \"" + NODE_GENERAL + "\" expected");
}
@@ -317,52 +292,34 @@ private void parseGeneral(Element elemGeneral) throws Exception {
}
}
- general = new General(serverList, infoList);
+ return new General(serverList, infoList);
}
- private void parseRelease(Element elemRelease) throws Exception {
+ /** Parses the child elements of the specified "github" node and return it as {@code GitHubRelease} instance. */
+ private Release parseGitHub(Element elemRelease) throws Exception {
if (elemRelease == null || !elemRelease.getNodeName().equals(NODE_RELEASE)) {
throw new Exception("Update.xml: Node \"" + NODE_RELEASE + "\" expected");
}
- ReleaseType type = null;
- String fileName = null;
- String link = null;
- String linkType = null;
- String version = null;
- String timeStamp = null;
- String hash = null;
- String linkManual = null;
- List changelog = null;
-
- try {
- type = Enum.valueOf(ReleaseType.class, elemRelease.getAttribute(ATTR_TYPE).toUpperCase());
- } catch (IllegalArgumentException e) {
- // skipping unsupported entries
- }
- if (type == null) {
- type = ReleaseType.LATEST;
- }
+ final List jsonLinks = new ArrayList<>();
// preprocessing available child elements in "release" section
NodeList children = elemRelease.getChildNodes();
- Element elemFile = null, elemChangelog = null;
+ Element elemGitHub = null;
for (int i = 0, size = children.getLength(); i < size; i++) {
Node node = children.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
- if (node.getNodeName().equals(NODE_FILE)) {
- elemFile = (Element) node;
- } else if (node.getNodeName().equals(NODE_CHANGELOG)) {
- elemChangelog = (Element) node;
+ if (node.getNodeName().equals(NODE_GITHUB)) {
+ elemGitHub = (Element) node;
}
}
}
- // processing required element "file"
- if (elemFile == null || !elemFile.getNodeName().equals(NODE_FILE)) {
- throw new Exception("Update.xml: Missing \"" + NODE_FILE + "\" node");
+ // processing required element "github"
+ if (elemGitHub == null || !elemGitHub.getNodeName().equals(NODE_GITHUB)) {
+ throw new Exception("Update.xml: Missing \"" + NODE_GITHUB + "\" node");
}
- children = elemFile.getChildNodes();
+ children = elemGitHub.getChildNodes();
for (int idx = 0, size = children.getLength(); idx < size; idx++) {
Element elem = null;
if (children.item(idx).getNodeType() == Node.ELEMENT_NODE) {
@@ -370,40 +327,18 @@ private void parseRelease(Element elemRelease) throws Exception {
} else {
continue;
}
- if (elem.getNodeName().equals(NODE_NAME)) {
- fileName = elem.getTextContent().trim();
- } else if (elem.getNodeName().equals(NODE_URL)) {
- linkType = elem.getAttribute(ATTR_TYPE);
- link = elem.getTextContent().trim();
- } else if (elem.getNodeName().equals(NODE_VERSION)) {
- version = elem.getTextContent().trim();
- } else if (elem.getNodeName().equals(NODE_TIMESTAMP)) {
- timeStamp = elem.getTextContent().trim();
- } else if (elem.getNodeName().equals(NODE_HASH)) {
- hash = elem.getTextContent().trim();
- } else if (elem.getNodeName().equals(NODE_LINK)) {
- linkManual = elem.getTextContent().trim();
- }
- }
-
- // processing optional element "changelog"
- if (elemChangelog != null) {
- changelog = new ArrayList<>();
- children = elemChangelog.getElementsByTagName(NODE_ENTRY);
- for (int idx = 0, size = children.getLength(); idx < size; idx++) {
- Element elem = (Element) children.item(idx);
- String s = elem.getTextContent().trim();
- if (!s.isEmpty()) {
- changelog.add(s);
+ if (elem.getNodeName().equals(NODE_URL)) {
+ final String jsonType = elem.getAttribute(ATTR_TYPE).trim();
+ if (jsonType.equalsIgnoreCase("json")) {
+ final String s = elem.getTextContent().trim();
+ if (!s.isEmpty()) {
+ jsonLinks.add(elem.getTextContent().trim());
+ }
}
}
- if (changelog.isEmpty()) {
- changelog = null;
- }
}
- Release release = new Release(type, fileName, link, linkType, version, hash, timeStamp, linkManual, changelog);
- releases.put(type, release);
+ return new Release(jsonLinks);
}
// -------------------------- INNER CLASSES --------------------------
@@ -478,129 +413,575 @@ public boolean isValid() {
}
}
- // Manages "Release" information
+ /**
+ * Provides "Release" information parsed from a GitHub API JSON file.
+ */
public static class Release {
- private final List changelog = new ArrayList<>();
- private final ReleaseType type;
-
- private String fileName;
- private String link;
- private String linkManual;
- private String version;
- private String hash;
- private FileType linkType;
- private Calendar timeStamp;
-
- private Release(ReleaseType type, String fileName, String link, String linkType, String version, String hash,
- String timeStamp, String linkManual, List changelog) throws Exception {
- // checking mandatory fields
- if (fileName == null) {
- throw new Exception(String.format("Update.xml: Missing \"%s\" node in %s section", NODE_NAME, NODE_RELEASE));
- }
- if (link == null) {
- throw new Exception(String.format("Update.xml: Missing \"%s\" node in %s section", NODE_LINK, NODE_RELEASE));
- }
- if (version == null) {
- throw new Exception(String.format("Update.xml: Missing \"%s\" node in %s section", NODE_VERSION, NODE_RELEASE));
- }
- if (timeStamp == null) {
- throw new Exception(
- String.format("Update.xml: Missing \"%s\" node in %s section", NODE_TIMESTAMP, NODE_RELEASE));
- }
- if (hash == null) {
- throw new Exception(String.format("Update.xml: Missing \"%s\" node in %s section", NODE_HASH, NODE_RELEASE));
- }
-
- this.type = type;
- this.fileName = fileName;
- this.link = link;
- this.linkType = validateLinkType(linkType);
- this.version = version;
- this.hash = hash;
- this.timeStamp = Utils.toCalendar(timeStamp);
- this.linkManual = linkManual;
- if (changelog != null) {
- this.changelog.addAll(changelog);
+ /** List of assets attached to this release. */
+ public final List assets = new ArrayList<>();
+
+ public String nodeId;
+ /** Internal identifier of the release. */
+ public int id;
+ /** URL for this release information (JSON) */
+ public URL url;
+ /**
+ * URL to assets information of this release (JSON).
+ * Provides the same information as the {@code assets} attribute.
+ */
+ public URL assetsUrl;
+ /** Parameterized URL for uploading assets to the release. */
+ public ParamURL uploadUrl;
+ /** URL to html version of the release (HTML) */
+ public URL htmlUrl;
+ /** Information about the release author. */
+ public User author;
+ /** Name of the release tag. */
+ public String tagName;
+ /** Specifies the commitish value that determines where the Git tag is created from. */
+ public String target;
+ /** Title of the release. */
+ public String name;
+ /** {@code true} to create a draft (unpublished) release, {@code false} to create a published one. */
+ public boolean draft;
+ /** Whether to identify the release as a prerelease or a full release. */
+ public boolean prerelease;
+ /** Timestamp when the release was created. */
+ public OffsetDateTime createdAt;
+ /** Timestamp when the release was published. */
+ public OffsetDateTime publishedAt;
+ /** URL to the automatically generated source tarball of the release. */
+ public URL tarballUrl;
+ /** URL to the automatically generated source zipball of the release. */
+ public URL zipballUrl;
+ /** Description text of the release, in Markdown format. */
+ public String body;
+ /** Information about social reaction for this release. */
+ public Reactions reactions;
+
+ public Release(List jsonLinks) throws Exception {
+ if (jsonLinks == null || jsonLinks.isEmpty()) {
+ throw new Exception(String.format("Update.xml: Missing \"%s\" node in %s section", NODE_GITHUB, NODE_RELEASE));
}
- }
- /** Returns the type of this file entry. */
- public ReleaseType getReleaseType() {
- return type;
- }
-
- /** Returns the actual filename without path. */
- public String getFileName() {
- return fileName;
+ for (final String link: jsonLinks) {
+ final URL url = new URL(link);
+ String json = Utils.downloadText(url, Updater.getInstance().getProxy(), StandardCharsets.UTF_8);
+ parseJson(json);
+ break;
+ }
}
- /** Returns the link to the file. Use {@link #getLinkType()} to determine archive format. */
- public String getLink() {
- return link;
- }
+ /**
+ * Returns the default asset which points to the zipped {@code NearInfinity.jar} file.
+ *
+ * @return {@link Asset} instance of the zipped NearInfinity.jar file,
+ * or {@code null} if asset doesn't exist.
+ */
+ public Asset getDefaultAsset() {
+ final String[] patterns = {
+ // Matches:
+ // NearInfinity-v2.3-20230618-1.zip
+ // NearInfinity-v2.3.2023.6.18.zip
+ // NearInfinity-20230618.zip
+ // NearInfinity.zip
+ "NearInfinity(-v?\\d+(\\.\\d+)*)?(-\\d+(-.+)?)?\\.zip",
+ "NearInfinity\\.jar",
+ };
+ for (final Asset asset: assets) {
+ for (final String pattern: patterns) {
+ Matcher m = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE).matcher(asset.name);
+ if (m.matches()) {
+ return asset;
+ }
+ }
+ }
- /** Returns the archive format of the file to download. */
- public FileType getLinkType() {
- return linkType;
- }
+ return null;
+ }
+
+ /** Parses the specified JSON string and initializes this class instance. */
+ private void parseJson(String jsonString) throws Exception {
+ // https://stleary.github.io/JSON-java/index.html
+ JSONObject root = new JSONObject(jsonString);
+ for (Iterator iter = root.keys(); iter.hasNext(); ) {
+ final String key = iter.next();
+ switch (key) {
+ case "url":
+ url = new URL(root.getString(key));
+ break;
+ case "assets_url":
+ assetsUrl = new URL(root.getString(key));
+ break;
+ case "upload_url":
+ uploadUrl = new ParamURL(root.getString(key));
+ break;
+ case "html_url":
+ htmlUrl = new URL(root.getString(key));
+ break;
+ case "id":
+ id = root.getInt(key);
+ break;
+ case "author":
+ author = new User(root.getJSONObject(key));
+ break;
+ case "node_id":
+ nodeId = root.getString(key);
+ break;
+ case "tag_name":
+ tagName = root.getString(key);
+ break;
+ case "target_commitish":
+ target = root.getString(key);
+ break;
+ case "name":
+ name = root.getString(key);
+ break;
+ case "draft":
+ draft = root.getBoolean(key);
+ break;
+ case "prerelease":
+ prerelease = root.getBoolean(key);
+ break;
+ case "created_at":
+ createdAt = Utils.getDateTimeFromString(root.getString(key));
+ break;
+ case "published_at":
+ publishedAt = Utils.getDateTimeFromString(root.getString(key));
+ break;
+ case "assets": {
+ final JSONArray array = root.getJSONArray(key);
+ for (int i = 0, len = array.length(); i < len; i++) {
+ final Asset asset = new Asset(array.getJSONObject(i));
+ assets.add(asset);
+ }
+ break;
+ }
+ case "tarball_url":
+ tarballUrl = new URL(root.getString(key));
+ break;
+ case "zipball_url":
+ zipballUrl = new URL(root.getString(key));
+ break;
+ case "body":
+ body = root.optString(key);
+ break;
+ case "reactions":
+ reactions = new Reactions(root.getJSONObject(key));
+ break;
+ default:
+ System.out.printf("Release parser: Skipping unknown key \"%s\"\n", key);
+ }
+ }
- /** Returns the file version. */
- public String getVersion() {
- return version;
- }
+ // validation
+ final List errors = new ArrayList<>();
+ if (assetsUrl == null) {
+ errors.add("Assets URL cannot be null");
+ }
+ if (uploadUrl == null) {
+ errors.add("Upload URL cannot be null");
+ }
+ if (tarballUrl == null) {
+ errors.add("Tar ball URL cannot be null");
+ }
+ if (zipballUrl == null) {
+ errors.add("Zip ball URL cannot be null");
+ }
+ if (createdAt == null) {
+ errors.add("Creation time cannot be null");
+ }
+ if (publishedAt == null) {
+ errors.add("Publication time cannot be null");
+ }
+ if (nodeId == null) {
+ errors.add("Node ID cannot be null");
+ }
+ if (author == null) {
+ errors.add("Author cannot be null");
+ }
+ if (htmlUrl == null) {
+ errors.add("HTML URL cannot be null");
+ }
+ if (name == null) {
+ errors.add("Release name cannot be null");
+ }
+ if (tagName == null) {
+ errors.add("Tag name cannot be null");
+ }
+ if (target == null) {
+ errors.add("Target cannot be null");
+ }
+ if (url == null) {
+ errors.add("Self URL cannot be null");
+ }
- /** Returns the md5 hash string for the file to download. */
- public String getHash() {
- return hash;
+ if (!errors.isEmpty()) {
+ if (errors.size() == 1) {
+ throw new NullPointerException(errors.get(0));
+ } else {
+ throw new NullPointerException("Update information are currently not available.");
+ }
+ }
}
+ }
- /** Returns the date and time of the file. */
- public Calendar getTimeStamp() {
- return timeStamp;
- }
+ /** Provides GitHub user information. */
+ public static class User {
+ public String nodeId;
+ /** Internal identifier of the user. */
+ public int id;
+ /** Login name of the user. */
+ public String login;
+ /** URL to the user's avatar graphics. */
+ public URL avatarUrl;
+ public String gravatarId;
+ /** URL to user information (JSON) */
+ public URL url;
+ /** URL to user front page (HTML). */
+ public URL htmlUrl;
+ /** URL to follower of user (JSON) */
+ public URL followersUrl;
+ /** Parameterized URL to the user following this user (JSON) */
+ public ParamURL followingUrl;
+ /** Parameterized URL to user's gists information (JSON) */
+ public ParamURL gistsUrl;
+ /** Parameterized URL to user's starred information (JSON) */
+ public ParamURL starredUrl;
+ /** URL to user's subscriptions (watching) information (JSON) */
+ public URL subscriptionsUrl;
+ /** URL to user's organizations information (JSON) */
+ public URL organizationsUrl;
+ /** URL to user's own repositories information (JSON) */
+ public URL reposUrl;
+ /** Parameterized URL to user's events information (JSON) */
+ public URL eventsUrl;
+ /** URL to user's received events information (JSON) */
+ public URL receivedEventsUrl;
+ /** The user type. */
+ public String type;
+ public boolean siteAdmin;
+
+ private User(JSONObject jsonUser) throws Exception {
+ JSONObject root = Objects.requireNonNull(jsonUser, "JSON user object cannot be null");
+ for (Iterator iter = root.keys(); iter.hasNext(); ) {
+ final String key = iter.next();
+ switch (key) {
+ case "login":
+ login = root.getString(key);
+ break;
+ case "id":
+ id = root.getInt(key);
+ break;
+ case "node_id":
+ nodeId = root.getString(key);
+ break;
+ case "avatar_url":
+ avatarUrl = new URL(root.getString(key));
+ break;
+ case "gravatar_id":
+ gravatarId = root.getString(key);
+ break;
+ case "url":
+ url = new URL(root.getString(key));
+ break;
+ case "html_url":
+ htmlUrl = new URL(root.getString(key));
+ break;
+ case "followers_url":
+ followersUrl = new URL(root.getString(key));
+ break;
+ case "following_url":
+ followingUrl = new ParamURL(root.getString(key));
+ break;
+ case "gists_url":
+ gistsUrl = new ParamURL(root.getString(key));
+ break;
+ case "starred_url":
+ starredUrl = new ParamURL(root.getString(key));
+ break;
+ case "subscriptions_url":
+ subscriptionsUrl = new URL(root.getString(key));
+ break;
+ case "organizations_url":
+ organizationsUrl = new URL(root.getString(key));
+ break;
+ case "repos_url":
+ reposUrl = new URL(root.getString(key));
+ break;
+ case "events_url":
+ eventsUrl = new URL(root.getString(key));
+ break;
+ case "received_events_url":
+ receivedEventsUrl = new URL(root.getString(key));
+ break;
+ case "type":
+ type = root.getString(key);
+ break;
+ case "site_admin":
+ siteAdmin = root.getBoolean(key);
+ break;
+ default:
+ System.out.printf("User parser: Skipping unknown key \"%s\"\n", key);
+ }
+ }
- /** Returns a String version of the timestamp in ISO 8601 format. */
- public String getTimeStampString() {
- return Utils.toTimeStamp(timeStamp);
- }
+ // validation
+ final List errors = new ArrayList<>();
+ if (avatarUrl == null) {
+ errors.add("Avatar URL cannot be null");
+ }
+ if (eventsUrl == null) {
+ errors.add("Events URL cannot be null");
+ }
+ if (followersUrl == null) {
+ errors.add("Followers URL cannot be null");
+ }
+ if (followingUrl == null) {
+ errors.add("Following URL cannot be null");
+ }
+ if (gistsUrl == null) {
+ errors.add("Gists URL cannot be null");
+ }
+ if (gravatarId == null) {
+ errors.add("Gravatar ID cannot be null");
+ }
+ if (htmlUrl == null) {
+ errors.add("HTML URL cannot be null");
+ }
+ if (nodeId == null) {
+ errors.add("Node ID cannot be null");
+ }
+ if (login == null) {
+ errors.add("Login name cannot be null");
+ }
+ if (organizationsUrl == null) {
+ errors.add("Organizations URL cannot be null");
+ }
+ if (receivedEventsUrl == null) {
+ errors.add("Received events URL cannot be null");
+ }
+ if (reposUrl == null) {
+ errors.add("Repositories URL cannot be null");
+ }
+ if (starredUrl == null) {
+ errors.add("Starred URL cannot be null");
+ }
+ if (subscriptionsUrl == null) {
+ errors.add("Subscriptions URL cannot be null");
+ }
+ if (type == null) {
+ errors.add("User type cannot be null");
+ }
+ if (url == null) {
+ errors.add("Self URL cannot be null");
+ }
- /** Returns a link to the file for manual download or {@code null} if not available. */
- public String getDownloadLink() {
- return linkManual;
+ if (!errors.isEmpty()) {
+ if (errors.size() == 1) {
+ throw new NullPointerException(errors.get(0));
+ } else {
+ throw new NullPointerException("Update information are currently not available.");
+ }
+ }
}
+ }
- /** Returns whether a ChangeLog is available. */
- public boolean hasChangeLog() {
- return !changelog.isEmpty();
- }
+ public static class Asset {
+ /** Available states of the release asset. */
+ public enum State {
+ UPLOADED,
+ OPEN,
+ }
+
+ public String nodeId;
+ /** Internal identifier of the asset. */
+ public int id;
+ /** URL for this asset information (JSON) */
+ public URL url;
+ /** Filename of the asset. */
+ public String name;
+ /** An optional label for this asset. */
+ public String label;
+ /** User information about the uploader of this asset. */
+ public User uploader;
+ /** Content type of the asset. */
+ public String contentType;
+ /** State of the release asset. */
+ public State state;
+ /** File size of the asset, in bytes. */
+ public long size;
+ /** Total number of downloads initiated for this asset at the time of request. */
+ public int downloadCount;
+ /** Timestamp when the asset was created. */
+ public OffsetDateTime createdAt;
+ /** Timestamp when the asset was last updated. */
+ public OffsetDateTime updatedAt;
+ /** URL for the direct asset download. */
+ public URL browserDownloadUrl;
+
+ private Asset(JSONObject jsonAsset) throws Exception {
+ JSONObject root = Objects.requireNonNull(jsonAsset, "JSON asset object cannot be null");
+ for (Iterator iter = root.keys(); iter.hasNext(); ) {
+ final String key = iter.next();
+ switch (key) {
+ case "url":
+ url = new URL(root.getString(key));
+ break;
+ case "id":
+ id = root.getInt(key);
+ break;
+ case "node_id":
+ nodeId = root.getString(key);
+ break;
+ case "name":
+ name = root.getString(key);
+ break;
+ case "label":
+ label = root.optString(key, "");
+ break;
+ case "uploader":
+ uploader = new User(root.getJSONObject(key));
+ break;
+ case "content_type":
+ contentType = root.getString(key);
+ break;
+ case "state": {
+ switch (root.getString(key).toLowerCase()) {
+ case "uploaded": state = State.UPLOADED; break;
+ case "open": state = State.OPEN; break;
+ default: throw new Exception(String.format("Asset parser: Unknown state value \"%s\"", key));
+ }
+ break;
+ }
+ case "size":
+ size = root.getLong(key);
+ break;
+ case "download_count":
+ downloadCount = root.getInt(key);
+ break;
+ case "created_at":
+ createdAt = Utils.getDateTimeFromString(root.getString(key));
+ break;
+ case "updated_at":
+ updatedAt = Utils.getDateTimeFromString(root.getString(key));
+ break;
+ case "browser_download_url":
+ browserDownloadUrl = new URL(root.getString(key));
+ break;
+ default:
+ System.out.printf("Asset parser: Skipping unknown key \"%s\"\n", key);
+ }
+ }
- /** Returns a read-only list of changelog entries. */
- public List getChangelog() {
- return Collections.unmodifiableList(changelog);
- }
+ // validation
+ final List errors = new ArrayList<>();
+ if (name == null) {
+ errors.add("Asset name cannot be null");
+ }
+ if (contentType == null) {
+ errors.add("Content type cannot be null");
+ }
+ if (state == null) {
+ errors.add("Asset state cannot be null");
+ }
+ if (url == null) {
+ errors.add("Self URL cannot be null");
+ }
+ if (nodeId == null) {
+ errors.add("Node ID cannot be null");
+ }
+ if (uploader == null) {
+ errors.add("Uploader info cannot be null");
+ }
+ if (browserDownloadUrl == null) {
+ errors.add("Browser download URL cannot be null");
+ }
+ if (createdAt == null) {
+ errors.add("Creation time cannot be null");
+ }
+ if (updatedAt == null) {
+ errors.add("Update time cannot be null");
+ }
- /** Checks whether data has been initialized correctly. */
- public boolean isValid() {
- if ((getReleaseType() == null) || !Utils.isUrlValid(getLink())
- || (getDownloadLink() != null && !Utils.isUrlValid(getDownloadLink()))) {
- return false;
+ if (!errors.isEmpty()) {
+ if (errors.size() == 1) {
+ throw new NullPointerException(errors.get(0));
+ } else {
+ throw new NullPointerException("Update information are currently not available.");
+ }
}
- return true;
}
+ }
- // Returns only supported archive formats for the linked file
- private static FileType validateLinkType(String linkType) throws Exception {
- if ("jar".equalsIgnoreCase(linkType)) {
- return FileType.ORIGINAL;
- } else if ("zip".equalsIgnoreCase(linkType)) {
- return FileType.ZIP;
- } else if ("gzip".equalsIgnoreCase(linkType)) {
- return FileType.GZIP;
+ public static class Reactions {
+ /** URL for detailed user information who performed the reactions (JSON) */
+ public URL url;
+ /** Total number of available reactions. */
+ public int totalCount;
+ /** Number of the {@code +1} reaction. */
+ public int plusOne;
+ /** Number of the {@code -1} reaction. */
+ public int minusOne;
+ /** Number of the {@code laugh} reaction. */
+ public int laugh;
+ /** Number of the {@code hooray} reaction. */
+ public int hooray;
+ /** Number of the {@code confused} reaction. */
+ public int confused;
+ /** Number of the {@code heart} reaction. */
+ public int heart;
+ /** Number of the {@code rocket} reaction. */
+ public int rocket;
+ /** Number of the {@code eyes} reaction. */
+ public int eyes;
+
+ private Reactions(JSONObject jsonReactions) throws Exception {
+ JSONObject root = Objects.requireNonNull(jsonReactions, "JSON asset object cannot be null");
+ for (Iterator iter = root.keys(); iter.hasNext(); ) {
+ final String key = iter.next();
+ switch (key) {
+ case "url":
+ url = new URL(root.getString(key));
+ break;
+ case "total_count":
+ totalCount = root.getInt(key);
+ break;
+ case "+1":
+ plusOne = root.getInt(key);
+ break;
+ case "-1":
+ minusOne = root.getInt(key);
+ break;
+ case "laugh":
+ laugh = root.getInt(key);
+ break;
+ case "hooray":
+ hooray = root.getInt(key);
+ break;
+ case "confused":
+ confused = root.getInt(key);
+ break;
+ case "heart":
+ heart = root.getInt(key);
+ break;
+ case "rocket":
+ rocket = root.getInt(key);
+ break;
+ case "eyes":
+ eyes = root.getInt(key);
+ break;
+ default:
+ System.out.printf("Reactions parser: Skipping unknown key \"%s\"\n", key);
+ }
}
- throw new Exception("Invalid link type: " + linkType);
+
+ // validation
+ Objects.requireNonNull(url, "Self URL cannot be null");
}
}
+
private static class XmlErrorHandler implements ErrorHandler {
public XmlErrorHandler() {
}
diff --git a/src/org/infinity/updater/Updater.java b/src/org/infinity/updater/Updater.java
index ddb919556..77a0521f9 100644
--- a/src/org/infinity/updater/Updater.java
+++ b/src/org/infinity/updater/Updater.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.updater;
@@ -11,14 +11,20 @@
import java.net.Proxy;
import java.net.URL;
import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.time.Duration;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeParseException;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.jar.JarFile;
import java.util.prefs.Preferences;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import org.infinity.NearInfinity;
@@ -29,11 +35,63 @@
* Provides functions for checking, downloading and updating new versions of Near Infinity.
*/
public class Updater {
- // Auto-check interval constants
- static final int UPDATE_INTERVAL_SESSION = 0;
- static final int UPDATE_INTERVAL_DAILY = 1;
- static final int UPDATE_INTERVAL_PER_WEEK = 2; // default
- static final int UPDATE_INTERVAL_PER_MONTH = 3;
+ /** Defines available autocheck intervals. */
+ public enum Interval {
+ HOURLY(0, "Hourly", Duration.ofHours(1)),
+ DAILY(1, "Daily", Duration.ofDays(1)),
+ WEEKLY(2, "Weekly", Duration.ofDays(7)),
+ MONTHLY(3, "Monthly", Duration.ofDays(30));
+
+ private final int id;
+ private final String label;
+ private final Duration interval;
+
+ private Interval(int id, String label, Duration interval) {
+ this.id = id;
+ this.label = label;
+ this.interval = interval;
+ }
+
+ /** Returns the unique identifier of this interval. */
+ public int getId() {
+ return id;
+ }
+
+ /** Returns a descriptive name of this interval. */
+ public String getLabel() {
+ return label;
+ }
+
+ /** Returns the interval time as {@link Duration} value. */
+ public Duration getInterval() {
+ return interval;
+ }
+
+ @Override
+ public String toString() {
+ return getLabel();
+ }
+
+ /** Returns the default {@code Interval} ({@code WEEKLY}). */
+ public static Interval getDefault() {
+ return WEEKLY;
+ }
+
+ /**
+ * Returns the {@code Interval} value based on the given identifier.
+ *
+ * @param id Interval identifier.
+ * @return Matching {@code Interval} instance, {@link #getDefault()} otherwise.
+ */
+ public static Interval FromId(int id) {
+ for (final Interval i: Interval.values()) {
+ if (i.getId() == id) {
+ return i;
+ }
+ }
+ return getDefault();
+ }
+ }
// Name of the update server definition file
private static final String UPDATE_FILENAME = "update.xml";
@@ -49,9 +107,6 @@ public class Updater {
// The preferences key format string for server URLs
private static final String PREFS_SERVER_FMT = "UpdateServer%d";
- // preferences key for determining whether to check for stable NI releases only
- private static final String PREFS_STABLEONLY = "UpdateStableReleasesOnly";
-
// preferences key for determining whether automatic update checks are enabled
private static final String PREFS_AUTOCHECK_UPDATES = "UpdateAutoCheckEnabled";
@@ -70,30 +125,24 @@ public class Updater {
// preferences key for proxy port (if any)
private static final String PREFS_PROXYPORT = "UpdateProxyPort";
- // preferences key for storing the hash found on the update server
- // (needed to trigger notifications only once for each new release)
- private static final String PREFS_UPDATE_HASH = "UpdateReleaseHash";
-
// preferences key for storing the NI version found on the update server
// (needed to trigger notifications only once for each new release)
- private static final String PREFS_UPDATE_VERSION = "UpdateReleaseVersion";
+ private static final String PREFS_UPDATE_VERSION = "UpdateReleaseVersion";
// preferences key for storing the timestamp of the file found on the update server
// (needed to trigger notifications only once for each new release)
- private static final String PREFS_UPDATE_TIMESTAMP = "UpdateReleaseTimestamp";
+ private static final String PREFS_UPDATE_TIMESTAMP = "UpdateReleaseTimestamp";
private static Updater instance = null;
private final List serverList = new ArrayList<>();
private Preferences prefs;
- private String hash;
private String version;
private String timestamp;
- private Calendar autoCheckDate;
+ private OffsetDateTime autoCheckDate;
private Proxy proxy;
- private int autoCheckInterval;
- private boolean stableOnly;
+ private Interval autoCheckInterval;
private boolean autoCheckEnabled;
private boolean proxyEnabled;
@@ -117,68 +166,69 @@ public static Updater getInstance() {
/**
* Returns whether the specified release can be considered a new release.
*
- * @param release The release to check.
- * @param onlyOnce If {@code true}, each new release will be checked only once.
+ * This method uses GitHub API information to determine whether a new release is available.
+ *
+ * @param release The GitHub release to check.
+ * @param onlyOnce If {@code true} then each new release will be checked only once.
* @return {@code true} if the specified release is considered newer, {@code false} otherwise.
*/
public static boolean isNewRelease(UpdateInfo.Release release, boolean onlyOnce) {
- boolean isNewer = false;
- if (release != null && release.isValid()) {
- String curHash = null;
- String curVersion = null;
- Calendar curCal = null;
-
- if (onlyOnce && !getInstance().getCurrentHash().isEmpty()
- && !(getInstance().getCurrentTimeStamp().isEmpty() || getInstance().getCurrentVersion().isEmpty())) {
- curHash = getInstance().getCurrentHash();
- curVersion = getInstance().getCurrentVersion();
- curCal = Utils.toCalendar(getInstance().getCurrentTimeStamp());
+ boolean retVal = false;
+
+ if (release != null) {
+ final String curVersionString;
+ if (onlyOnce && !getInstance().getCurrentVersion().isEmpty()) {
+ curVersionString = getInstance().getCurrentVersion();
} else {
- curHash = getJarFileHash();
- curVersion = NearInfinity.getVersion();
- curCal = getJarFileDate();
+ curVersionString = NearInfinity.getVersion();
}
- if (curHash != null && !curHash.isEmpty()) {
- String newHash = release.getHash();
- String newVersion = release.getVersion();
- Calendar newCal = release.getTimeStamp();
-
- isNewer = !curHash.equalsIgnoreCase(newHash);
- if (curCal != null && newCal != null) {
- isNewer &= (curCal.compareTo(newCal) < 0);
- } else if (curVersion != null && newVersion != null) {
- isNewer &= !curVersion.equalsIgnoreCase(newVersion);
- }
-
- getInstance().setCurrentHash(newHash);
- getInstance().setCurrentVersion(newVersion);
- getInstance().setCurrentTimeStamp(Utils.toTimeStamp(newCal));
+ // checking version info
+ int compare = 0;
+ try {
+ final long[] curVersion = getNormalizedVersion(curVersionString);
+ final long[] newVersion = getNormalizedVersion(release.tagName);
+ compare = compareNormalizedVersion(newVersion, curVersion);
+ } catch (Exception e) {
+ e.printStackTrace();
}
+ retVal = (compare > 0);
+
+ getInstance().setCurrentVersion(release.tagName);
}
- return isNewer;
+
+ return retVal;
}
- /** Returns the modification time of the current JAR's MANIFEST.MF. */
- static Calendar getJarFileDate() {
+ /** Returns the modification time of the current JAR's MANIFEST.MF as {@link FileTime} instance. */
+ static FileTime getJarFileTimeValue() throws Exception {
String jarPath = Utils.getJarFileName(NearInfinity.class);
if (jarPath != null && !jarPath.isEmpty()) {
try (JarFile jf = new JarFile(jarPath)) {
ZipEntry manifest = jf.getEntry("META-INF/MANIFEST.MF");
if (manifest != null) {
- Calendar cal = Calendar.getInstance();
- if (manifest.getTime() >= 0L) {
- cal.setTimeInMillis(manifest.getTime());
- return cal;
- }
+ return manifest.getLastModifiedTime();
}
} catch (IOException e) {
- e.printStackTrace();
+ throw e;
}
}
return null;
}
+ /** Returns the modification time of the current JAR's MANIFEST.MF as {@link OffsetDateTime} instance. */
+ static OffsetDateTime getJarFileDateTime() {
+ try {
+ final FileTime ft = getJarFileTimeValue();
+ if (ft != null) {
+ return OffsetDateTime.ofInstant(ft.toInstant(), ZoneId.systemDefault());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
/**
* Calculates the checksum of the current JAR file using the specified hash algorithm.
*
@@ -212,6 +262,77 @@ static boolean isSameServer(String server1, String server2) {
}
}
+ /**
+ * Attempts to convert the specified string into a series of {@code long} values.
+ *
+ * Examples:
+ * "v2.3-20230408" is converted into new long[]{2, 3, 20230408}
+ * "v2.3-20230408-1" is converted into new long[]{2, 3, 20230408, 1}
+ *
+ * @param s The version string to parse.
+ * @return A integer array of dynamic size containing the parsed version information.
+ * @throws NullPointerException If the version string is {@code null}.
+ * @throws IllegalArgumentException If the version string does not contain valid integer values.
+ */
+ private static long[] getNormalizedVersion(String s) {
+ if (s == null) {
+ throw new NullPointerException("Version string cannot be null");
+ }
+
+ final Pattern regNumber = Pattern.compile("\\d+");
+ final Matcher matcher = regNumber.matcher(s);
+
+ ArrayList items = new ArrayList<>();
+ while (matcher.find()) {
+ items.add(Long.parseLong(matcher.group()));
+ }
+
+ if (items.isEmpty()) {
+ throw new IllegalArgumentException("Version string does not contain numeric elements");
+ }
+
+ long[] retVal = new long[items.size()];
+ for (int i = 0; i < retVal.length; i++) {
+ retVal[i] = items.get(i).longValue();
+ }
+
+ return retVal;
+ }
+
+ /**
+ * Compares the numbers in both arrays and returns the result as:
+ *
+ *
a negative number if {@code arr1} is smaller than {@code arr2}
+ *
zero if {@code arr1} and {@code arr2} are equal
+ *
a positive number if {@code arr1} is greater than {@code arr2}
+ *
+ * Non-existing array elements are treated as 0.
+ *
+ * @param arr1 The first numeric array.
+ * @param arr2 The second numeric array.
+ * @return The computed result as described above.
+ * @throws NullPointerException if any of the parameters is {@code null}.
+ */
+ private static int compareNormalizedVersion(long[] arr1, long[] arr2) {
+ if (arr1 == null) {
+ throw new NullPointerException("First parameter is null");
+ }
+ if (arr2 == null) {
+ throw new NullPointerException("Second parameter is null");
+ }
+
+ for (int i = 0, count = Math.max(arr1.length, arr2.length); i < count; i++) {
+ long v1 = i < arr1.length ? arr1[i] : 0;
+ long v2 = i < arr2.length ? arr2[i] : 0;
+ long result = v1 - v2;
+ if (result != 0) {
+ return (result < 0) ? -1 : 1;
+ }
+ }
+
+ return 0;
+ }
+
private Updater() {
try {
prefs = Preferences.userNodeForPackage(getClass());
@@ -262,16 +383,6 @@ public void addServer(String link, boolean validate) throws MalformedURLExceptio
}
}
- /** Returns whether to look for stable releases only. */
- public boolean isStableOnly() {
- return stableOnly;
- }
-
- /** Returns whether to consider only stable releases when checking for updates. */
- public void setStableOnly(boolean set) {
- stableOnly = set;
- }
-
/** Returns whether to automatically check for updates. */
public boolean isAutoUpdateCheckEnabled() {
return autoCheckEnabled;
@@ -282,34 +393,30 @@ public void setAutoUpdateCheckEnabled(boolean set) {
autoCheckEnabled = set;
}
- /** Returns the current check interval value (as specified by the UPDATE_INTERVAL_xxx constants). */
- public int getAutoUpdateCheckInterval() {
+ /** Returns the current check interval value. */
+ public Interval getAutoUpdateCheckInterval() {
return autoCheckInterval;
}
/** Updates the check interval value (as specified by the UPDATE_INTERVAL_xxx constants). */
- public void setAutoUpdateCheckInterval(int value) {
- if (value < 0) {
- value = 0;
- }
- if (value > UPDATE_INTERVAL_PER_MONTH) {
- value = UPDATE_INTERVAL_PER_MONTH;
+ public void setAutoUpdateCheckInterval(Interval interval) {
+ if (interval == null) {
+ interval = Interval.getDefault();
}
- autoCheckInterval = value;
+ autoCheckInterval = interval;
}
/** Returns the last update check date. */
- public Calendar getAutoUpdateCheckDate() {
+ public OffsetDateTime getAutoUpdateCheckDate() {
return autoCheckDate;
}
/** Updates the last update check date. Specifying {@code null} will add the current date. */
- public void setAutoUpdateCheckDate(Calendar cal) {
- if (cal != null) {
- autoCheckDate = cal;
- } else {
- autoCheckDate = Calendar.getInstance();
+ public void setAutoUpdateCheckDate(OffsetDateTime date) {
+ if (date == null) {
+ date = OffsetDateTime.now();
}
+ autoCheckDate = date;
}
/** Returns true if the last auto update check is older than the currently defined update interval. */
@@ -317,29 +424,13 @@ public boolean hasAutoUpdateCheckDateExpired() {
return hasAutoUpdateCheckDateExpired(getAutoUpdateCheckInterval());
}
- /** Returns true if the last auto update check is older than specified by the UPDATE_INTERVAL_xxx constant. */
- public boolean hasAutoUpdateCheckDateExpired(int value) {
- switch (value) {
- case UPDATE_INTERVAL_SESSION: {
- return true;
- }
- case UPDATE_INTERVAL_DAILY: {
- Calendar cal = Calendar.getInstance();
- cal.add(Calendar.DAY_OF_MONTH, -1);
- return (getAutoUpdateCheckDate().compareTo(cal) < 0);
- }
- case UPDATE_INTERVAL_PER_WEEK: {
- Calendar cal = Calendar.getInstance();
- cal.add(Calendar.WEEK_OF_MONTH, -1);
- return (getAutoUpdateCheckDate().compareTo(cal) < 0);
- }
- case UPDATE_INTERVAL_PER_MONTH: {
- Calendar cal = Calendar.getInstance();
- cal.add(Calendar.MONDAY, -1);
- return (getAutoUpdateCheckDate().compareTo(cal) < 0);
- }
+ /** Returns true if the last auto update check is older than specified by the {@code Interval} value. */
+ public boolean hasAutoUpdateCheckDateExpired(Interval interval) {
+ if (interval == null) {
+ interval = Interval.getDefault();
}
- return false;
+ OffsetDateTime intervalExpiredAt = getAutoUpdateCheckDate().plus(interval.getInterval());
+ return intervalExpiredAt.compareTo(OffsetDateTime.now()) < 0;
}
/** Returns whether to use a proxy for accessing remote servers. */
@@ -388,34 +479,12 @@ public void setProxy(String hostName, int port) {
}
}
- /** Updates hash and timestamp from given Release info object. */
- public void updateReleaseInfo(UpdateInfo.Release release) {
- if (release != null && release.isValid()) {
- setCurrentHash(release.getHash());
- setCurrentTimeStamp(release.getTimeStampString());
- }
- }
-
- /** Returns the cached hash string from the latest update check. */
- public String getCurrentHash() {
- return hash;
- }
-
- /** Updates the cached hash string. */
- public void setCurrentHash(String hash) {
- if (hash != null) {
- this.hash = hash;
- } else {
- this.hash = "";
- }
- }
-
/** Returns the cached NI version. */
public String getCurrentVersion() {
return version;
}
- /** Updtes the cached NI version. */
+ /** Updates the cached NI version. */
public void setCurrentVersion(String version) {
if (version != null) {
this.version = version;
@@ -442,19 +511,16 @@ public void setCurrentTimeStamp(String timestamp) {
public void loadUpdateSettings() {
// resetting values
serverList.clear();
- stableOnly = false;
autoCheckEnabled = false;
- autoCheckInterval = UPDATE_INTERVAL_PER_WEEK;
- autoCheckDate = Calendar.getInstance();
+ autoCheckInterval = Interval.getDefault();
+ autoCheckDate = OffsetDateTime.now();
proxyEnabled = false;
proxy = null;
- hash = "";
version = "";
timestamp = "";
if (prefs != null) {
// loading server list (skipping identical server entries)
- stableOnly = prefs.getBoolean(PREFS_STABLEONLY, false);
for (int i = 0; i < getMaxServerCount(); i++) {
String server = prefs.get(String.format(PREFS_SERVER_FMT, i), "");
if (!server.isEmpty()) {
@@ -474,10 +540,13 @@ public void loadUpdateSettings() {
// loading auto update settings
autoCheckEnabled = prefs.getBoolean(PREFS_AUTOCHECK_UPDATES, false);
- autoCheckInterval = prefs.getInt(PREFS_AUTOCHECK_INTERAVAL, UPDATE_INTERVAL_PER_WEEK);
- Calendar cal = Utils.toCalendar(prefs.get(PREFS_AUTOCHECK_TIMESTAMP, null));
- if (cal != null) {
- autoCheckDate = cal;
+ autoCheckInterval = Interval.FromId(prefs.getInt(PREFS_AUTOCHECK_INTERAVAL, Interval.getDefault().getId()));
+ final String dateTime = prefs.get(PREFS_AUTOCHECK_TIMESTAMP, null);
+ try {
+ autoCheckDate = Utils.getDateTimeFromString(dateTime);
+ } catch (DateTimeParseException e) {
+ System.out.println("DateTimeParseException: " + e.getMessage());
+ autoCheckDate = OffsetDateTime.now();
}
// loading proxy settings
@@ -497,7 +566,6 @@ public void loadUpdateSettings() {
}
// loading autocheck-related information
- hash = prefs.get(PREFS_UPDATE_HASH, "");
version = prefs.get(PREFS_UPDATE_VERSION, "");
timestamp = prefs.get(PREFS_UPDATE_TIMESTAMP, "");
}
@@ -512,7 +580,6 @@ public void loadUpdateSettings() {
public boolean saveUpdateSettings() {
if (prefs != null) {
// saving server list
- prefs.putBoolean(PREFS_STABLEONLY, stableOnly);
for (int i = 0, size = getMaxServerCount(); i < size; i++) {
String server = null;
if (i < serverList.size()) {
@@ -527,8 +594,8 @@ public boolean saveUpdateSettings() {
// saving auto update settings
prefs.putBoolean(PREFS_AUTOCHECK_UPDATES, autoCheckEnabled);
- prefs.putInt(PREFS_AUTOCHECK_INTERAVAL, autoCheckInterval);
- prefs.put(PREFS_AUTOCHECK_TIMESTAMP, Utils.toTimeStamp(autoCheckDate));
+ prefs.putInt(PREFS_AUTOCHECK_INTERAVAL, autoCheckInterval.getId());
+ prefs.put(PREFS_AUTOCHECK_TIMESTAMP, Utils.getStringFromDateTime(autoCheckDate));
// saving proxy settings
if (proxy != null && proxy.type() == Proxy.Type.HTTP && proxy.address() instanceof InetSocketAddress) {
@@ -543,7 +610,6 @@ public boolean saveUpdateSettings() {
}
// saving autocheck-related information
- prefs.put(PREFS_UPDATE_HASH, hash);
prefs.put(PREFS_UPDATE_VERSION, version);
prefs.put(PREFS_UPDATE_TIMESTAMP, timestamp);
@@ -590,8 +656,9 @@ public String getValidatedUpdateUrl(String link) throws MalformedURLException, I
* Attempts to download update information and return them as UpdateInfo object.
*
* @return The UpdateInfo object containing update information, or {@code null} if not available.
+ * @throws Exception
*/
- public UpdateInfo loadUpdateInfo() {
+ public UpdateInfo loadUpdateInfo() throws Exception {
for (Iterator iter = getServerList().iterator(); iter.hasNext();) {
try {
URL url = new URL(iter.next());
@@ -609,7 +676,7 @@ public UpdateInfo loadUpdateInfo() {
return info;
}
- } catch (Exception e) {
+ } catch (IOException e) {
// skip update server on error and try next
}
}
diff --git a/src/org/infinity/updater/UpdaterSettings.java b/src/org/infinity/updater/UpdaterSettings.java
index feb7396b3..d08ff39fb 100644
--- a/src/org/infinity/updater/UpdaterSettings.java
+++ b/src/org/infinity/updater/UpdaterSettings.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.updater;
@@ -46,11 +46,10 @@
* Provides a dialog for configuring update-relevant data.
*/
public class UpdaterSettings extends JDialog {
- private final JComboBox cbUpdateInterval = new JComboBox<>(
- new String[] { "Once per session", "Daily", "Once per week", "Once per month" });
+ private final JComboBox cbUpdateInterval = new JComboBox<>(new Updater.Interval[] {
+ Updater.Interval.HOURLY, Updater.Interval.DAILY, Updater.Interval.WEEKLY, Updater.Interval.MONTHLY });
private final JTextField tfProxyAddress = new JTextField(12);
private final JTextField tfProxyPort = new JTextField(6);
- private final JCheckBox cbStableOnly = new JCheckBox("Consider stable releases only");
private final JCheckBox cbAutoUpdate = new JCheckBox("Automatically check for updates");
private final JCheckBox cbProxyEnabled = new JCheckBox("Enable Proxy");
private final JButton bOK = new JButton("OK");
@@ -104,8 +103,6 @@ public void actionPerformed(ActionEvent e) {
JLabel lProxyAddress = new JLabel("Address:");
JLabel lProxyPort = new JLabel("Port:");
cbAutoUpdate.addActionListener(getListeners());
- cbStableOnly.setToolTipText(
- "Stable versions are released much less often and don't include " + "the latest features and bugfixes.");
cbProxyEnabled.addActionListener(getListeners());
bOK.setPreferredSize(bCancel.getPreferredSize());
bOK.addActionListener(getListeners());
@@ -127,9 +124,6 @@ public void actionPerformed(ActionEvent e) {
new Insets(8, 8, 0, 8), 0, 0);
pServer.add(server.getCheckButton(i), gbc);
}
- gbc = ViewerUtil.setGBC(gbc, 0, Updater.getMaxServerCount(), 3, 1, 0.0, 0.0, GridBagConstraints.LINE_START,
- GridBagConstraints.HORIZONTAL, new Insets(8, 4, 4, 8), 0, 0);
- pServer.add(cbStableOnly, gbc);
// configuring proxy server panel
JPanel pProxy = new JPanel(new GridBagLayout());
@@ -212,11 +206,10 @@ private void loadSettings() {
server.getTextField(i).setCaretPosition(0);
server.setServerValidated(i, true);
}
- cbStableOnly.setSelected(Updater.getInstance().isStableOnly());
// getting auto update settings
cbAutoUpdate.setSelected(Updater.getInstance().isAutoUpdateCheckEnabled());
- cbUpdateInterval.setSelectedIndex(Updater.getInstance().getAutoUpdateCheckInterval());
+ cbUpdateInterval.setSelectedItem(Updater.getInstance().getAutoUpdateCheckInterval());
cbUpdateInterval.setEnabled(cbAutoUpdate.isSelected());
// getting proxy settings
@@ -256,16 +249,10 @@ private void saveSettings() {
}
}
}
- if (cbStableOnly.isSelected() != Updater.getInstance().isStableOnly()) {
- // reset cached release info if release type changed
- Updater.getInstance().setStableOnly(cbStableOnly.isSelected());
- Updater.getInstance().setCurrentHash(null);
- Updater.getInstance().setCurrentTimeStamp(null);
- }
// saving auto update settings
Updater.getInstance().setAutoUpdateCheckEnabled(cbAutoUpdate.isSelected());
- Updater.getInstance().setAutoUpdateCheckInterval(cbUpdateInterval.getSelectedIndex());
+ Updater.getInstance().setAutoUpdateCheckInterval((Updater.Interval) cbUpdateInterval.getSelectedItem());
// saving proxy settings
String addr = tfProxyAddress.getText();
diff --git a/src/org/infinity/updater/Utils.java b/src/org/infinity/updater/Utils.java
index 233fdeef8..ba80faf75 100644
--- a/src/org/infinity/updater/Utils.java
+++ b/src/org/infinity/updater/Utils.java
@@ -1,12 +1,9 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.updater;
-import static org.infinity.util.Misc.toNumber;
-
-import java.awt.Desktop;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
@@ -19,7 +16,6 @@
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.Proxy;
-import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
@@ -31,14 +27,15 @@
import java.security.NoSuchAlgorithmException;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
-import java.util.Calendar;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.format.DateTimeParseException;
import java.util.EventListener;
import java.util.EventObject;
import java.util.List;
import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
import java.util.zip.GZIPInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
@@ -47,12 +44,32 @@
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
+import org.infinity.util.LauncherUtils;
import org.infinity.util.io.FileEx;
/**
* Generic collection of updater-related methods.
*/
public class Utils {
+ /**
+ * ISO date-time formatter that formats or parses a date-time with anoffset, such as '2011-12-03T10:15:30+01:00'.
+ *
+ * This returns an immutable formatter capable of formatting and parsing the ISO-8601 extended offset date-time format.
+ * The format consists of:
+ *
+ *
The {@link #ISO_LOCAL_DATE_TIME}
+ *
The {@link ZoneOffset#getId() offset ID}. If the offset has seconds then they will be handled even though
+ * this is not part of the ISO-8601 standard. Parsing is case insensitive.
+ *
+ *
+ */
+ public static final DateTimeFormatter ISO_DATE_TIME =
+ new DateTimeFormatterBuilder()
+ .parseCaseInsensitive()
+ .parseLenient()
+ .append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+ .toFormatter();
+
// System-specific temp folder
private static final String TEMP_FOLDER = System.getProperty("java.io.tmpdir");
@@ -63,6 +80,51 @@ public class Utils {
// The algorithm used for calculating hash strings
private static final String HASH_TYPE = "md5";
+
+ /**
+ * Attempts to parse the given string into a {@link OffsetDateTime} object.
+ *
+ * The parser tries to apply different date/time format definitions.
+ * Throws a {@link DateTimeParseException} if the operation is unsuccessful.
+ *
+ *
+ * @param s String containing date/time information.
+ */
+ public static OffsetDateTime getDateTimeFromString(String s) throws DateTimeParseException {
+ DateTimeParseException exception = null;
+ final DateTimeFormatter[] formatters = {
+ ISO_DATE_TIME,
+ DateTimeFormatter.ISO_OFFSET_DATE_TIME,
+ DateTimeFormatter.ISO_ZONED_DATE_TIME,
+ DateTimeFormatter.ISO_LOCAL_DATE_TIME,
+ DateTimeFormatter.ISO_DATE_TIME,
+ DateTimeFormatter.RFC_1123_DATE_TIME
+ };
+
+ for (final DateTimeFormatter formatter: formatters) {
+ try {
+ return OffsetDateTime.parse(s, formatter);
+ } catch (DateTimeParseException e) {
+ if (exception == null) {
+ exception = e;
+ }
+ }
+ }
+
+ throw exception;
+ }
+
+ /**
+ * Returns a string representation of the given {@link OffsetDateTime} instance.
+ * Returns the current date and time if {@code null} was specified.
+ */
+ public static String getStringFromDateTime(OffsetDateTime ldt) {
+ if (ldt == null) {
+ ldt = OffsetDateTime.now();
+ }
+ return ldt.format(ISO_DATE_TIME);
+ }
+
/** Returns the full path to the system temp folder. */
public static String getTempFolder() {
return TEMP_FOLDER;
@@ -94,139 +156,6 @@ public static String getJarFileName(Class extends Object> classType) {
return "";
}
- /**
- * Converts a Calendar object into a timestamp string in ISO 8601 format.
- */
- public static String toTimeStamp(Calendar cal) {
- if (cal == null) {
- cal = Calendar.getInstance();
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append(String.format("%04d", cal.get(Calendar.YEAR)));
- sb.append('-').append(String.format("%02d", cal.get(Calendar.MONTH) + 1));
- sb.append('-').append(String.format("%02d", cal.get(Calendar.DAY_OF_MONTH)));
- sb.append('T').append(String.format("%02d", cal.get(Calendar.HOUR_OF_DAY)));
- sb.append(':').append(String.format("%02d", cal.get(Calendar.MINUTE)));
- sb.append(':').append(String.format("%02d", cal.get(Calendar.SECOND)));
- int ofs = cal.get(Calendar.ZONE_OFFSET);
- if (ofs != 0) {
- char sign = (ofs < 0) ? '-' : '+';
- ofs = Math.abs(ofs);
- int ofsHour = ofs / 3600000;
- int ofsMin = (ofs / 60000) % 60;
- sb.append(sign).append(String.format("%02d", ofsHour));
- sb.append(':').append(String.format("%02d", ofsMin));
- }
-
- return sb.toString();
- }
-
- /**
- * Converts a timestamp string in ISO 8601 format into a Calendar object.
- */
- public static Calendar toCalendar(String timeStamp) {
- Calendar retVal = null;
- if (timeStamp != null && !timeStamp.isEmpty()) {
- final String regDate = "(\\d{4})-?([0-1][0-9])-?([0-3][0-9])";
- final String regTime = "T([0-2][0-9]):?([0-5][0-9])?:?([0-5][0-9])?";
- final String regZone = "(([-+])([0-2][0-9]):?([0-5][0-9])|(Z))";
- int year = 0, month = -1, day = 0, hour = 0, minute = 0, second = 0, ofsHour = 0, ofsMinute = 0;
- char sign = 0;
- Matcher m;
- try {
- String s = timeStamp;
- // processing date
- m = Pattern.compile(regDate).matcher(s);
- if (m.find()) {
- year = toNumber(m.group(1), 0);
- month = toNumber(m.group(2), 0) - 1;
- day = toNumber(m.group(3), 0);
-
- // processing time
- s = s.substring(m.end());
- m = Pattern.compile(regTime).matcher(s);
- if (m.find()) {
- hour = toNumber(m.group(1), 0);
- if (m.groupCount() >= 2) {
- minute = toNumber(m.group(2), 0);
- if (m.groupCount() >= 3) {
- second = toNumber(m.group(3), 0);
- }
- }
-
- // processing timezone offset
- s = s.substring(m.end());
- m = Pattern.compile(regZone).matcher(s);
- if (m.find()) {
- if (m.group(5) != null) {
- sign = '+';
- } else {
- sign = m.group(2).charAt(0);
- ofsHour = toNumber(m.group(3), 0);
- if (m.groupCount() >= 3) {
- ofsMinute = toNumber(m.group(4), 0);
- }
- }
- }
- }
- }
- } catch (PatternSyntaxException e) {
- e.printStackTrace();
- }
-
- if (year > 0 && month >= 0 && day > 0) {
- retVal = Calendar.getInstance();
- retVal.set(year, month, day, hour, minute, second);
-
- // applying timezone offset (in ms)
- if (sign != 0) {
- int amount = (ofsHour * 60 + ofsMinute) * 60 * 1000;
- switch (sign) {
- case '+':
- retVal.set(Calendar.ZONE_OFFSET, amount);
- break;
- case '-':
- retVal.set(Calendar.ZONE_OFFSET, -amount);
- break;
- }
- }
- }
- }
- return retVal;
- }
-
- /**
- * Returns an number based on the specified timestamp.
- *
- * @param timestamp The timestamp in ISO 8601 format. Either in UTC or using time offset.
- * Syntax: YYYY-MM-DD[Thh:mm[:ss][(±hh[:mm])|Z]]
- * (Example: 2007-11-26T14:53+06:00)
- * @return A comparable numeric value of the timestamp (higher = newer). Returns 0 on error.
- */
- public static long toTimeValue(String timestamp) {
- Calendar cal = toCalendar(timestamp);
- if (cal != null) {
- return cal.getTimeInMillis();
- } else {
- return 0L;
- }
- }
-
- /**
- * Returns a number based on the date and time of the specified Calendar object.
- *
- * @param cal The calendar object or {@code null} to get a number based on the current time.
- * @return A comparable numeric value derived from the calendar object (higher = newer).
- */
- public static long getTimeValue(Calendar cal) {
- if (cal == null) {
- cal = Calendar.getInstance();
- }
-
- return cal.getTimeInMillis();
- }
-
/**
* Calculates the hash value from input stream data using the specified hash type.
*
@@ -462,14 +391,8 @@ public static boolean validateSecureConnection(URL url, Proxy proxy) throws Exce
public static boolean openWebPage(URL url)
throws IOException, URISyntaxException, UnsupportedOperationException, IllegalArgumentException {
if (url != null) {
- URI uri = url.toURI();
- if (uri != null) {
- Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
- if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
- desktop.browse(uri);
- return true;
- }
- }
+ LauncherUtils.browse(url);
+ return true;
}
return false;
}
@@ -489,15 +412,36 @@ public static boolean openWebPage(URL url)
*/
public static String downloadText(URL url, Proxy proxy, String charset)
throws IOException, FileNotFoundException, ProtocolException, UnknownServiceException, ZipException {
+ if (charset == null || charset.isEmpty() || !Charset.isSupported(charset)) {
+ charset = Charset.defaultCharset().name();
+ }
+ return downloadText(url, proxy, Charset.forName(charset));
+ }
+
+ /**
+ * A convenience method for downloading textual data from a URL.
+ *
+ * @param url The URL to download data from.
+ * @param proxy An optional proxy definition. Can be {@code null}.
+ * @param charset The {@link Charset} instance defining the character set of the text content.
+ * @return The text content on success or {@code null} on error.
+ * @throws IOException
+ * @throws FileNotFoundException
+ * @throws ProtocolException
+ * @throws UnknownServiceException
+ * @throws ZipException
+ */
+ public static String downloadText(URL url, Proxy proxy, Charset charset)
+ throws IOException, FileNotFoundException, ProtocolException, UnknownServiceException, ZipException {
String retVal = null;
if (url != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (Utils.downloadFromUrl(url, proxy, baos, UpdateInfo.FileType.ORIGINAL, null)) {
- if (charset == null || charset.isEmpty() || !Charset.isSupported(charset)) {
- charset = Charset.defaultCharset().name();
+ if (charset == null) {
+ charset = Charset.defaultCharset();
}
try {
- retVal = baos.toString(charset);
+ retVal = baos.toString(charset.name());
} catch (UnsupportedEncodingException e) {
}
}
diff --git a/src/org/infinity/updater/update-template.xml b/src/org/infinity/updater/update-template.xml
index 455fec730..34674209e 100644
--- a/src/org/infinity/updater/update-template.xml
+++ b/src/org/infinity/updater/update-template.xml
@@ -1,5 +1,5 @@
-
+
-
+
-
-
+
+
+
+
+
+ https://api.github.com/repos/Argent77/NearInfinity/releases/latest
+ https://api.github.com/repos/Argent77/NearInfinity/releases/tags/v2.3-20230303
+
+
NearInfinity.jar
- https://github.com/Argent77/NearInfinity/releases/download/snapshot-20141203/NearInfinity-20141203.zip
+ https://github.com/Argent77/NearInfinity/releases/download/v2.3-20230303/NearInfinity-20230303.zip
- v1.35-snapshot-20141203
+ v2.3-20230303
- 2014-12-03T13:32-01:00
+ 2023-03-03T19:12+01:00
- 5f5cf4fc416716b6692a0d2adcb7f719
+ 221aec49b1710ae92876e22f0cd3d2d8
- https://github.com/Argent77/NearInfinity/releases/latest
+ https://github.com/Argent77/NearInfinity/releases/tag/v2.3-20230303
@@ -64,37 +72,4 @@ Whitespace around text content will be trimmed automatically.
Fixed missing fields in XYZ V1.0 resources.
-
-
-
-
- NearInfinity-1.3.0.jar
- https://github.com/NearInfinityBrowser/NearInfinity/releases/download/w1.3.0/NearInfinity-1.3.0.jar
- v1.33 w1.3.0
- 2013-06-24T13:31-01:00
- ea59bfa96f83db4d373299a8663b31a8
- https://github.com/NearInfinityBrowser/NearInfinity/releases/tag/w1.3.0
-
-
- From-scratch resource creation
- Improved handling of PRO files
-
-
-
-
-
-
- NI_Updater.jar
- https://github.com/Argent77/NI_Updater/releases/download/v1.0/NI_Updater.jar
- 1.0
- 2015-02-03T16:49-01:00
- ffb9a373d9686d59a3c6e1cd5c8a6049
- https://github.com/Argent77/NI_Updater/releases/latest
-
-
- Initial release.
-
-
diff --git a/src/org/infinity/updater/update_v2.dtd b/src/org/infinity/updater/update_v2.dtd
new file mode 100644
index 000000000..48567e9ef
--- /dev/null
+++ b/src/org/infinity/updater/update_v2.dtd
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/org/infinity/util/ArrayUtil.java b/src/org/infinity/util/ArrayUtil.java
index f5015cec7..08ad9e231 100644
--- a/src/org/infinity/util/ArrayUtil.java
+++ b/src/org/infinity/util/ArrayUtil.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/BOMStringReader.java b/src/org/infinity/util/BOMStringReader.java
index 57f288503..4462115e2 100644
--- a/src/org/infinity/util/BOMStringReader.java
+++ b/src/org/infinity/util/BOMStringReader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/BinPack2D.java b/src/org/infinity/util/BinPack2D.java
index 177a0c9c7..891c64e2b 100644
--- a/src/org/infinity/util/BinPack2D.java
+++ b/src/org/infinity/util/BinPack2D.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/CharsetDetector.java b/src/org/infinity/util/CharsetDetector.java
index 79cf12c51..c7f1f53d4 100644
--- a/src/org/infinity/util/CharsetDetector.java
+++ b/src/org/infinity/util/CharsetDetector.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/CreMapCache.java b/src/org/infinity/util/CreMapCache.java
index bf3f3508b..fed7355ee 100644
--- a/src/org/infinity/util/CreMapCache.java
+++ b/src/org/infinity/util/CreMapCache.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/DataString.java b/src/org/infinity/util/DataString.java
index 47f13411b..e6867fb1b 100644
--- a/src/org/infinity/util/DataString.java
+++ b/src/org/infinity/util/DataString.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/Debugging.java b/src/org/infinity/util/Debugging.java
index 371e45cd3..9d846638d 100644
--- a/src/org/infinity/util/Debugging.java
+++ b/src/org/infinity/util/Debugging.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/DynamicArray.java b/src/org/infinity/util/DynamicArray.java
index 2bc3d6dc8..0b0dab6ea 100644
--- a/src/org/infinity/util/DynamicArray.java
+++ b/src/org/infinity/util/DynamicArray.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/FileDeletionHook.java b/src/org/infinity/util/FileDeletionHook.java
index 976cbf1d7..cc75c6a30 100644
--- a/src/org/infinity/util/FileDeletionHook.java
+++ b/src/org/infinity/util/FileDeletionHook.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/FilteredListModel.java b/src/org/infinity/util/FilteredListModel.java
index 5f9da8cdb..95ab3ce08 100644
--- a/src/org/infinity/util/FilteredListModel.java
+++ b/src/org/infinity/util/FilteredListModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IdsMap.java b/src/org/infinity/util/IdsMap.java
index f6acaba45..179dec5c8 100644
--- a/src/org/infinity/util/IdsMap.java
+++ b/src/org/infinity/util/IdsMap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IdsMapCache.java b/src/org/infinity/util/IdsMapCache.java
index 16098fcd4..0b91c6ebe 100644
--- a/src/org/infinity/util/IdsMapCache.java
+++ b/src/org/infinity/util/IdsMapCache.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IdsMapEntry.java b/src/org/infinity/util/IdsMapEntry.java
index d2341df1d..e55a234d4 100644
--- a/src/org/infinity/util/IdsMapEntry.java
+++ b/src/org/infinity/util/IdsMapEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IniMap.java b/src/org/infinity/util/IniMap.java
index f601a2f79..dda362d4e 100644
--- a/src/org/infinity/util/IniMap.java
+++ b/src/org/infinity/util/IniMap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IniMapCache.java b/src/org/infinity/util/IniMapCache.java
index 161318d49..15d2329fd 100644
--- a/src/org/infinity/util/IniMapCache.java
+++ b/src/org/infinity/util/IniMapCache.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IniMapEntry.java b/src/org/infinity/util/IniMapEntry.java
index 599f1bd45..01be7f56f 100644
--- a/src/org/infinity/util/IniMapEntry.java
+++ b/src/org/infinity/util/IniMapEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IniMapSection.java b/src/org/infinity/util/IniMapSection.java
index 559561e3d..aad2af502 100644
--- a/src/org/infinity/util/IniMapSection.java
+++ b/src/org/infinity/util/IniMapSection.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/IntegerHashMap.java b/src/org/infinity/util/IntegerHashMap.java
index 7a1d0e199..625d0632d 100644
--- a/src/org/infinity/util/IntegerHashMap.java
+++ b/src/org/infinity/util/IntegerHashMap.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/LauncherUtils.java b/src/org/infinity/util/LauncherUtils.java
new file mode 100644
index 000000000..368c52eae
--- /dev/null
+++ b/src/org/infinity/util/LauncherUtils.java
@@ -0,0 +1,149 @@
+// Near Infinity - An Infinity Engine Browser and Editor
+// Copyright (C) 2001 Jon Olav Hauglid
+// See LICENSE.txt for license information
+
+package org.infinity.util;
+
+import java.awt.Desktop;
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Path;
+
+/**
+ * A helper class for launching default applications associated with the specified file or URL arguments.
+ */
+public class LauncherUtils {
+ /**
+ * Launches the default browser to display the specified URI. If the default browser is not able to handle the
+ * specified URI, the application registered for handling URIs of the specified type is invoked. The applicationis
+ * determined from the protocol and path of the URI, asdefined by the URI class.
+ *
+ * @param url the URL, as string, to be displayed in the user's default browser.
+ * @throws URISyntaxException if the specified URL is not formatted strictly according to RFC2396 and cannot be
+ * converted to a URI.
+ * @throws IOException if the user default browser is not found, or it fails to be launched, or the default
+ * handler application failed to be launched.
+ */
+ public static void browse(String url) throws URISyntaxException, IOException {
+ browse(new URI(url));
+ }
+
+ /**
+ * Launches the default browser to display the specified {@link URL}. If the default browser is not able to handle the
+ * specified URI, the application registered for handling URIs of the specified type is invoked. The applicationis
+ * determined from the protocol and path of the URI, asdefined by the URI class.
+ *
+ * @param url the {@link URL} to be displayed in the user's default browser.
+ * @throws URISyntaxException if the specified URL is not formatted strictly according to RFC2396 and cannot be
+ * converted to a URI.
+ * @throws IOException if the user default browser is not found, or it fails to be launched, or the default
+ * handler application failed to be launched.
+ */
+ public static void browse(URL url) throws URISyntaxException, IOException {
+ browse(url.toURI());
+ }
+
+ /**
+ * Launches the default browser to display the specified {@link URI}. If the default browser is not able to handle the
+ * specified URI, the application registered for handling URIs of the specified type is invoked. The applicationis
+ * determined from the protocol and path of the URI, asdefined by the URI class.
+ *
+ * @param url the {@link URI} to be displayed in the user's default browser.
+ * @throws URISyntaxException if the specified URL is not formatted strictly according to RFC2396 and cannot be
+ * converted to a URI.
+ * @throws IOException if the user default browser is not found, or it fails to be launched, or the default
+ * handler application failed to be launched.
+ */
+ public static void browse(URI uri) throws IOException {
+ try {
+ final Desktop desktop = Desktop.getDesktop();
+ desktop.browse(uri);
+ } catch (UnsupportedOperationException uoe) {
+ // fall back to unix-specific method
+ if (!xdgOpen(uri.toString())) {
+ throw new IOException(uoe);
+ }
+ }
+ }
+
+ /**
+ * Launches the associated application to open the specified file.
+ *
+ * If the specified file is a directory, the file manager of the current platform is launched to open it.
+ *
+ * @param file the file path, as string, to be opened with the associated application.
+ * @throws IOException if the specified file has no associated application or the associated application fails to be
+ * launched.
+ */
+ public static void open(String file) throws IOException {
+ open(new File(file));
+ }
+
+ /**
+ * Launches the associated application to open the specified file.
+ *
+ * If the specified file is a directory, the file manager of the current platform is launched to open it.
+ *
+ * @param file the file path, as {@link Path}, to be opened with the associated application.
+ * @throws IOException if the specified file has no associated application or the associated application fails to be
+ * launched.
+ */
+ public static void open(Path file) throws IOException {
+ open(file.toFile());
+ }
+
+ /**
+ * Launches the associated application to open the specified file.
+ *
+ * If the specified file is a directory, the file manager of the current platform is launched to open it.
+ *
+ * @param file the file path, as {@link File}, to be opened with the associated application.
+ * @throws IOException if the specified file has no associated application or the associated application fails to be
+ * launched.
+ */
+ public static void open(File file) throws IOException {
+ try {
+ final Desktop desktop = Desktop.getDesktop();
+ desktop.open(file);
+ } catch (UnsupportedOperationException uoe) {
+ // fall back to unix-specific method
+ if (!xdgOpen(file.getPath())) {
+ throw new IOException(uoe);
+ }
+ }
+ }
+
+ /**
+ * Attempts to execute the unix-specific {@code xdg-open} command open the specified file path or URL string in the
+ * user's preferred application.
+ *
+ * @param arg File path or URL as string.
+ * @return {@code true} if {code xdg-open} was called, {@code false} otherwise.
+ * @throws IOException if the process could not be executed.
+ */
+ private static boolean xdgOpen(String arg) {
+ boolean retVal = false;
+
+ String command = null;
+ if (Platform.IS_UNIX) {
+ command = "xdg-open";
+ } else if (Platform.IS_MACOS) {
+ command = "open";
+ }
+
+ if (command != null) {
+ try {
+ Process p = new ProcessBuilder(command, arg).start();
+ p.waitFor();
+ retVal = true;
+ } catch (IOException | InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return retVal;
+ }
+}
diff --git a/src/org/infinity/util/LuaEntry.java b/src/org/infinity/util/LuaEntry.java
index 3401ae704..a679ad843 100644
--- a/src/org/infinity/util/LuaEntry.java
+++ b/src/org/infinity/util/LuaEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/LuaParser.java b/src/org/infinity/util/LuaParser.java
index b9cb2811b..135b98461 100644
--- a/src/org/infinity/util/LuaParser.java
+++ b/src/org/infinity/util/LuaParser.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/MapEntry.java b/src/org/infinity/util/MapEntry.java
index bfa18f02f..95f34f4e7 100644
--- a/src/org/infinity/util/MapEntry.java
+++ b/src/org/infinity/util/MapEntry.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/MapTree.java b/src/org/infinity/util/MapTree.java
index f799c1ce6..2836f5796 100644
--- a/src/org/infinity/util/MapTree.java
+++ b/src/org/infinity/util/MapTree.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/MassExporter.java b/src/org/infinity/util/MassExporter.java
index d142cb819..bf4397762 100644
--- a/src/org/infinity/util/MassExporter.java
+++ b/src/org/infinity/util/MassExporter.java
@@ -1,10 +1,11 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
import java.awt.BorderLayout;
+import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
@@ -21,12 +22,19 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.List;
import java.util.Locale;
+import java.util.Set;
import java.util.concurrent.ThreadPoolExecutor;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+import java.util.stream.Collectors;
import javax.imageio.ImageIO;
import javax.swing.JButton;
@@ -40,6 +48,9 @@
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ProgressMonitor;
+import javax.swing.UIManager;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
@@ -74,16 +85,15 @@
import org.infinity.util.io.FileManager;
import org.infinity.util.io.StreamUtils;
-public final class MassExporter extends ChildFrame implements ActionListener, ListSelectionListener, Runnable {
+public final class MassExporter extends ChildFrame implements ActionListener, ListSelectionListener, DocumentListener, Runnable {
private static final String FMT_PROGRESS = "Processing resource %d/%d";
- private static final String[] TYPES = { "2DA", "ARE", "BAM", "BCS", "BS", "BIO", "BMP", "CHU", "CHR", "CRE", "DLG",
- "EFF", "FNT", "GAM", "GLSL", "GUI", "IDS", "INI", "ITM", "LUA", "MENU", "MOS", "MVE", "PLT", "PNG", "PRO", "PVRZ",
- "RES", "SPL", "SQL", "SRC", "STO", "TIS", "TOH", "TOT", "TTF", "VEF", "VVC", "WAV", "WBM", "WED", "WFX", "WMP" };
+ private static final Set TYPES_BLACKLIST = new HashSet<>(Arrays.asList(new String[] {"BIK", "LOG", "SAV"}));
private final JButton bExport = new JButton("Export", Icons.ICON_EXPORT_16.getIcon());
private final JButton bCancel = new JButton("Cancel", Icons.ICON_DELETE_16.getIcon());
private final JButton bDirectory = new JButton(Icons.ICON_OPEN_16.getIcon());
+ private final JCheckBox cbPattern = new JCheckBox("Use regular expressions", false);
private final JCheckBox cbIncludeExtraDirs = new JCheckBox("Include extra folders", true);
private final JCheckBox cbDecompile = new JCheckBox("Decompile scripts", true);
private final JCheckBox cbDecrypt = new JCheckBox("Decrypt text files", true);
@@ -101,14 +111,16 @@ public final class MassExporter extends ChildFrame implements ActionListener, Li
private final JCheckBox cbOverwrite = new JCheckBox("Overwrite existing files", false);
private final JFileChooser fc = new JFileChooser(Profile.getGameRoot().toFile());
private final JComboBox cbExtractFramesBAMFormat = new JComboBox<>(new String[] { "PNG", "BMP" });
- private final JList listTypes = new JList<>(TYPES);
- private final JTextField tfDirectory = new JTextField(20);
+ private final JList listTypes = new JList<>(getAvailableResourceTypes());
+ private final JTextField tfDirectory = new JTextField(16);
+ private final JTextField tfPattern = new JTextField(16);
private Path outputPath;
private List selectedTypes;
private ProgressMonitor progress;
private int progressIndex;
private List selectedFiles;
+ private Pattern pattern;
public MassExporter() {
super("Mass Exporter", true);
@@ -118,6 +130,8 @@ public MassExporter() {
bDirectory.addActionListener(this);
bExport.setEnabled(false);
tfDirectory.setEditable(false);
+ tfPattern.getDocument().addDocumentListener(this);
+ updateTextFieldColor(tfPattern);
listTypes.addListSelectionListener(this);
fc.setDialogTitle("Mass export: Select directory");
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
@@ -140,6 +154,12 @@ public MassExporter() {
topRightPanel.add(tfDirectory, BorderLayout.CENTER);
topRightPanel.add(bDirectory, BorderLayout.EAST);
+ JPanel patternPanel = new JPanel(new BorderLayout());
+ JLabel lPattern = new JLabel("Resource name filter:");
+ patternPanel.add(lPattern, BorderLayout.NORTH);
+ patternPanel.add(tfPattern, BorderLayout.CENTER);
+ patternPanel.add(cbPattern, BorderLayout.SOUTH);
+
GridBagConstraints gbc = new GridBagConstraints();
JPanel bottomRightPanel = new JPanel(new GridBagLayout());
@@ -229,7 +249,7 @@ public MassExporter() {
gbc.weightx = 0.0;
gbc.weighty = 1.0;
- gbc.gridheight = 2;
+ gbc.gridheight = 3;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(6, 6, 6, 6);
gbl.setConstraints(leftPanel, gbc);
@@ -242,6 +262,9 @@ public MassExporter() {
gbl.setConstraints(topRightPanel, gbc);
pane.add(topRightPanel);
+ gbl.setConstraints(patternPanel, gbc);
+ pane.add(patternPanel);
+
gbc.weighty = 1.0;
gbl.setConstraints(bottomRightPanel, gbc);
pane.add(bottomRightPanel);
@@ -262,9 +285,34 @@ public MassExporter() {
@Override
public void actionPerformed(ActionEvent event) {
+ if (event.getSource() == tfPattern) {
+ if (tfPattern.getText().isEmpty()) {
+ final Color bg = UIManager.getColor("TextField.background");
+ tfPattern.setBackground(bg.darker());
+ } else {
+ tfPattern.setBackground(UIManager.getColor("TextField.background"));
+ }
+ } else
if (event.getSource() == bExport) {
selectedTypes = listTypes.getSelectedValuesList();
outputPath = FileManager.resolve(tfDirectory.getText());
+ try {
+ pattern = getPattern();
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(this, e.getMessage(), "Pattern syntax error", JOptionPane.ERROR_MESSAGE);
+ if (e instanceof PatternSyntaxException) {
+ final int index = ((PatternSyntaxException)e).getIndex();
+ if (index >= 0) {
+ tfPattern.setCaretPosition(index);
+ } else {
+ tfPattern.setCaretPosition(tfPattern.getText().length());
+ }
+ }
+ tfPattern.requestFocusInWindow();
+ return;
+ }
+
try {
Files.createDirectories(outputPath);
} catch (IOException e) {
@@ -295,6 +343,25 @@ public void valueChanged(ListSelectionEvent event) {
// --------------------- End Interface ListSelectionListener ---------------------
+ // --------------------- Begin Interface DocumentListener ---------------------
+
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ updateTextFieldColor(tfPattern);
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e) {
+ updateTextFieldColor(tfPattern);
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {
+ updateTextFieldColor(tfPattern);
+ }
+
+ // --------------------- End Interface DocumentListener ---------------------
+
// --------------------- Begin Interface Runnable ---------------------
@Override
@@ -317,7 +384,22 @@ public void run() {
selectedFiles = new ArrayList<>(1000);
for (final String newVar : selectedTypes) {
- selectedFiles.addAll(ResourceFactory.getResources(newVar, extraDirs));
+ if (pattern != null) {
+ selectedFiles.addAll(
+ ResourceFactory.getResources(newVar, extraDirs)
+ .stream()
+ .filter(e -> pattern.matcher(e.getResourceRef()).find())
+ .collect(Collectors.toList())
+ );
+ } else {
+ selectedFiles.addAll(ResourceFactory.getResources(newVar, extraDirs));
+ }
+ }
+
+ if (selectedFiles.isEmpty()) {
+ JOptionPane.showMessageDialog(NearInfinity.getInstance(), "No files to export.", "Info",
+ JOptionPane.INFORMATION_MESSAGE);
+ return;
}
// executing multithreaded search
@@ -359,10 +441,11 @@ public void run() {
}
if (isCancelled) {
- JOptionPane.showMessageDialog(NearInfinity.getInstance(), "Mass export aborted", "Info",
+ JOptionPane.showMessageDialog(NearInfinity.getInstance(), "Mass export aborted.", "Info",
JOptionPane.INFORMATION_MESSAGE);
} else {
- JOptionPane.showMessageDialog(NearInfinity.getInstance(), "Mass export completed", "Info",
+ JOptionPane.showMessageDialog(NearInfinity.getInstance(),
+ String.format("Mass export completed.\n%d file(s) exported.", selectedFiles.size()), "Info",
JOptionPane.INFORMATION_MESSAGE);
}
} finally {
@@ -377,10 +460,53 @@ public void run() {
// --------------------- End Interface Runnable ---------------------
+ /**
+ * Returns an array with all resource types available for the current game.
+ */
+ private static String[] getAvailableResourceTypes() {
+ List types = Arrays.asList(Profile.getAvailableResourceTypes())
+ .stream()
+ .filter(s -> !TYPES_BLACKLIST.contains(s))
+ .collect(Collectors.toList());
+ return types.toArray(new String[types.size()]);
+ }
+
private int getResourceCount() {
return (selectedFiles != null) ? selectedFiles.size() : 0;
}
+ /** Returns {@link Pattern} object from the current regular expression pattern. */
+ private Pattern getPattern() throws IllegalArgumentException {
+ if (!tfPattern.getText().isEmpty()) {
+ final String pattern = cbPattern.isSelected() ? tfPattern.getText() : Pattern.quote(tfPattern.getText());
+ return Pattern.compile(pattern, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
+ }
+ return null;
+ }
+
+ /**
+ * Updates the background color of the specified {@link JTextField} component based on whether it has content.
+ *
+ * @param tf {@link JTextField} component to update.
+ */
+ private void updateTextFieldColor(JTextField tf) {
+ if (tf != null) {
+ Color bg = UIManager.getColor("TextField.background");
+ if (tf.getText().isEmpty()) {
+ // shaded background if text field is empty
+ int lo = 240;
+ int hi = 256;
+ int bright = (bg.getRed() + bg.getGreen() + bg.getBlue()) / 3;
+ if (bright >= 64) {
+ bg = new Color(bg.getRed() * lo / hi, bg.getGreen() * lo / hi, bg.getBlue() * lo / hi);
+ } else {
+ bg = new Color(bg.getRed() * hi / lo, bg.getGreen() * hi / lo, bg.getBlue() * hi / lo);
+ }
+ }
+ tfPattern.setBackground(bg);
+ }
+ }
+
private synchronized void advanceProgress(boolean finished) {
if (progress != null) {
if (finished) {
@@ -669,7 +795,8 @@ private ByteBuffer decompileScript(ResourceEntry entry, ByteBuffer inBuffer) thr
final Decompiler decompiler = new Decompiler(StreamUtils.readString(inBuffer, inBuffer.limit()), false);
decompiler.setGenerateComments(BrowserMenuBar.getInstance().autogenBCSComments());
String script = decompiler.getSource().replaceAll("\r?\n", Misc.LINE_SEPARATOR);
- return ByteBuffer.wrap(script.getBytes(Misc.CHARSET_DEFAULT));
+ final Charset cs = Misc.getCharsetFrom(BrowserMenuBar.getInstance().getSelectedCharset());
+ return ByteBuffer.wrap(script.getBytes(cs));
}
return inBuffer;
}
diff --git a/src/org/infinity/util/Misc.java b/src/org/infinity/util/Misc.java
index e2840d078..1c99c82b8 100644
--- a/src/org/infinity/util/Misc.java
+++ b/src/org/infinity/util/Misc.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
@@ -18,6 +18,7 @@
import javax.swing.JComponent;
import org.infinity.NearInfinity;
+import org.infinity.resource.Profile;
/**
* A general-purpose class containing useful function not fitting elsewhere.
@@ -61,6 +62,41 @@ public boolean equals(Object obj) {
};
}
+ /**
+ * Returns a default charset depending on the current game type.
+ *
+ * @return {@link #CHARSET_UTF8} for Enhanced Edition games, {@link #CHARSET_DEFAULT} otherwise.
+ */
+ public static Charset getDefaultCharset() {
+ return Profile.isEnhancedEdition() ? CHARSET_UTF8 : CHARSET_DEFAULT;
+ }
+
+ /**
+ * A convenience method that attempts to return the charset specified by the given name or the next best match
+ * depending on the current game type.
+ *
+ * @param charsetName Name of the desired charset as {@code String}.
+ * @return The desired charset if successful, a game-specific default charset otherwise.
+ */
+ public static Charset getCharsetFrom(String charsetName) {
+ return getCharsetFrom(charsetName, getDefaultCharset());
+ }
+
+ /**
+ * A convenience method that attempts to return the charset specified by the given name.
+ *
+ * @param charsetName Name of the desired charset as {@code String}.
+ * @param defaultCharset Fallback solution if the desired charset doesn't exist.
+ * @return the desired charset if successful, {@code defaultCharset} otherwise.
+ */
+ public static Charset getCharsetFrom(String charsetName, Charset defaultCharset) {
+ try {
+ return Charset.forName(charsetName);
+ } catch (Exception e) {
+ return defaultCharset;
+ }
+ }
+
/**
* Attempts to detect the character set of the text data in the specified byte buffer.
*
diff --git a/src/org/infinity/util/Platform.java b/src/org/infinity/util/Platform.java
index ca49a836f..693e65e57 100644
--- a/src/org/infinity/util/Platform.java
+++ b/src/org/infinity/util/Platform.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/ResourceStructure.java b/src/org/infinity/util/ResourceStructure.java
index 19d57aa27..ed5719af5 100644
--- a/src/org/infinity/util/ResourceStructure.java
+++ b/src/org/infinity/util/ResourceStructure.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/SimpleListModel.java b/src/org/infinity/util/SimpleListModel.java
index ff32399bc..02bffde93 100644
--- a/src/org/infinity/util/SimpleListModel.java
+++ b/src/org/infinity/util/SimpleListModel.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/StaticSimpleXorDecryptor.java b/src/org/infinity/util/StaticSimpleXorDecryptor.java
index f2215ec68..3fdac2f5b 100644
--- a/src/org/infinity/util/StaticSimpleXorDecryptor.java
+++ b/src/org/infinity/util/StaticSimpleXorDecryptor.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/StringBufferStream.java b/src/org/infinity/util/StringBufferStream.java
index 0674edd59..d56427b7a 100644
--- a/src/org/infinity/util/StringBufferStream.java
+++ b/src/org/infinity/util/StringBufferStream.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/StringTable.java b/src/org/infinity/util/StringTable.java
index dd8db3c83..e313af5e5 100644
--- a/src/org/infinity/util/StringTable.java
+++ b/src/org/infinity/util/StringTable.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/StructClipboard.java b/src/org/infinity/util/StructClipboard.java
index ecc1759b8..dd7b23487 100644
--- a/src/org/infinity/util/StructClipboard.java
+++ b/src/org/infinity/util/StructClipboard.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/Table2da.java b/src/org/infinity/util/Table2da.java
index bf901bb77..2c6cce285 100644
--- a/src/org/infinity/util/Table2da.java
+++ b/src/org/infinity/util/Table2da.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/Table2daCache.java b/src/org/infinity/util/Table2daCache.java
index 40125719e..fdad68077 100644
--- a/src/org/infinity/util/Table2daCache.java
+++ b/src/org/infinity/util/Table2daCache.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/Variables.java b/src/org/infinity/util/Variables.java
index 5dfa841cb..74b5d7058 100644
--- a/src/org/infinity/util/Variables.java
+++ b/src/org/infinity/util/Variables.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
diff --git a/src/org/infinity/util/io/ByteBufferInputStream.java b/src/org/infinity/util/io/ByteBufferInputStream.java
index 449ddd875..cfb5af86a 100644
--- a/src/org/infinity/util/io/ByteBufferInputStream.java
+++ b/src/org/infinity/util/io/ByteBufferInputStream.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io;
diff --git a/src/org/infinity/util/io/ByteBufferOutputStream.java b/src/org/infinity/util/io/ByteBufferOutputStream.java
index 046df39ee..4000137bd 100644
--- a/src/org/infinity/util/io/ByteBufferOutputStream.java
+++ b/src/org/infinity/util/io/ByteBufferOutputStream.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io;
diff --git a/src/org/infinity/util/io/DlcManager.java b/src/org/infinity/util/io/DlcManager.java
index fadc38314..407136aa8 100644
--- a/src/org/infinity/util/io/DlcManager.java
+++ b/src/org/infinity/util/io/DlcManager.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io;
diff --git a/src/org/infinity/util/io/FileEx.java b/src/org/infinity/util/io/FileEx.java
index 51f5a7f26..4cdbfc7d6 100644
--- a/src/org/infinity/util/io/FileEx.java
+++ b/src/org/infinity/util/io/FileEx.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io;
diff --git a/src/org/infinity/util/io/FileManager.java b/src/org/infinity/util/io/FileManager.java
index 218c24e74..54957267c 100644
--- a/src/org/infinity/util/io/FileManager.java
+++ b/src/org/infinity/util/io/FileManager.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io;
diff --git a/src/org/infinity/util/io/FileWatcher.java b/src/org/infinity/util/io/FileWatcher.java
index 468bd2602..3cd405097 100644
--- a/src/org/infinity/util/io/FileWatcher.java
+++ b/src/org/infinity/util/io/FileWatcher.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io;
diff --git a/src/org/infinity/util/io/StreamUtils.java b/src/org/infinity/util/io/StreamUtils.java
index 70eacbee8..b771501cb 100644
--- a/src/org/infinity/util/io/StreamUtils.java
+++ b/src/org/infinity/util/io/StreamUtils.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io;
diff --git a/src/org/infinity/util/io/zip/DlcDirectoryStream.java b/src/org/infinity/util/io/zip/DlcDirectoryStream.java
index dc70179e5..187762a89 100644
--- a/src/org/infinity/util/io/zip/DlcDirectoryStream.java
+++ b/src/org/infinity/util/io/zip/DlcDirectoryStream.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/DlcError.java b/src/org/infinity/util/io/zip/DlcError.java
index 451d5cfdb..ee43a1b2d 100644
--- a/src/org/infinity/util/io/zip/DlcError.java
+++ b/src/org/infinity/util/io/zip/DlcError.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/DlcFileAttributeView.java b/src/org/infinity/util/io/zip/DlcFileAttributeView.java
index 93d5afb30..1e6d347f5 100644
--- a/src/org/infinity/util/io/zip/DlcFileAttributeView.java
+++ b/src/org/infinity/util/io/zip/DlcFileAttributeView.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/DlcFileAttributes.java b/src/org/infinity/util/io/zip/DlcFileAttributes.java
index 486d19d1e..daa15ecd1 100644
--- a/src/org/infinity/util/io/zip/DlcFileAttributes.java
+++ b/src/org/infinity/util/io/zip/DlcFileAttributes.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io.zip;
diff --git a/src/org/infinity/util/io/zip/DlcFileStore.java b/src/org/infinity/util/io/zip/DlcFileStore.java
index 7e8b4ef29..d539ae896 100644
--- a/src/org/infinity/util/io/zip/DlcFileStore.java
+++ b/src/org/infinity/util/io/zip/DlcFileStore.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/DlcFileSystem.java b/src/org/infinity/util/io/zip/DlcFileSystem.java
index cf690939d..aea034c58 100644
--- a/src/org/infinity/util/io/zip/DlcFileSystem.java
+++ b/src/org/infinity/util/io/zip/DlcFileSystem.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io.zip;
diff --git a/src/org/infinity/util/io/zip/DlcFileSystemProvider.java b/src/org/infinity/util/io/zip/DlcFileSystemProvider.java
index d3854c7e7..364ed1419 100644
--- a/src/org/infinity/util/io/zip/DlcFileSystemProvider.java
+++ b/src/org/infinity/util/io/zip/DlcFileSystemProvider.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/DlcPath.java b/src/org/infinity/util/io/zip/DlcPath.java
index 9b70aa8df..e9edb7e95 100644
--- a/src/org/infinity/util/io/zip/DlcPath.java
+++ b/src/org/infinity/util/io/zip/DlcPath.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/ZipBaseHeader.java b/src/org/infinity/util/io/zip/ZipBaseHeader.java
index ae0ef0ef4..b4580313f 100644
--- a/src/org/infinity/util/io/zip/ZipBaseHeader.java
+++ b/src/org/infinity/util/io/zip/ZipBaseHeader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io.zip;
diff --git a/src/org/infinity/util/io/zip/ZipCentralEndHeader.java b/src/org/infinity/util/io/zip/ZipCentralEndHeader.java
index 7cc3fb6fd..1e6321884 100644
--- a/src/org/infinity/util/io/zip/ZipCentralEndHeader.java
+++ b/src/org/infinity/util/io/zip/ZipCentralEndHeader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io.zip;
diff --git a/src/org/infinity/util/io/zip/ZipCentralHeader.java b/src/org/infinity/util/io/zip/ZipCentralHeader.java
index bd92785ae..3dc146caf 100644
--- a/src/org/infinity/util/io/zip/ZipCentralHeader.java
+++ b/src/org/infinity/util/io/zip/ZipCentralHeader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io.zip;
diff --git a/src/org/infinity/util/io/zip/ZipCoder.java b/src/org/infinity/util/io/zip/ZipCoder.java
index fc238624e..67d944d09 100644
--- a/src/org/infinity/util/io/zip/ZipCoder.java
+++ b/src/org/infinity/util/io/zip/ZipCoder.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/ZipConstants.java b/src/org/infinity/util/io/zip/ZipConstants.java
index 6abf283d7..041971c11 100644
--- a/src/org/infinity/util/io/zip/ZipConstants.java
+++ b/src/org/infinity/util/io/zip/ZipConstants.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/io/zip/ZipLocalHeader.java b/src/org/infinity/util/io/zip/ZipLocalHeader.java
index 2ce8a8871..72a031ccb 100644
--- a/src/org/infinity/util/io/zip/ZipLocalHeader.java
+++ b/src/org/infinity/util/io/zip/ZipLocalHeader.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io.zip;
diff --git a/src/org/infinity/util/io/zip/ZipNode.java b/src/org/infinity/util/io/zip/ZipNode.java
index 977a32a5c..aed832cd1 100644
--- a/src/org/infinity/util/io/zip/ZipNode.java
+++ b/src/org/infinity/util/io/zip/ZipNode.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.io.zip;
diff --git a/src/org/infinity/util/io/zip/ZipUtils.java b/src/org/infinity/util/io/zip/ZipUtils.java
index 1445bc20b..0716971dc 100644
--- a/src/org/infinity/util/io/zip/ZipUtils.java
+++ b/src/org/infinity/util/io/zip/ZipUtils.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
//
// ----------------------------------------------------------------------------
diff --git a/src/org/infinity/util/tuples/Couple.java b/src/org/infinity/util/tuples/Couple.java
index ce5d4a4cb..b206d6822 100644
--- a/src/org/infinity/util/tuples/Couple.java
+++ b/src/org/infinity/util/tuples/Couple.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/Monuple.java b/src/org/infinity/util/tuples/Monuple.java
index 00dae7fb4..1548976fb 100644
--- a/src/org/infinity/util/tuples/Monuple.java
+++ b/src/org/infinity/util/tuples/Monuple.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/Quadruple.java b/src/org/infinity/util/tuples/Quadruple.java
index 4aab54922..48671d3da 100644
--- a/src/org/infinity/util/tuples/Quadruple.java
+++ b/src/org/infinity/util/tuples/Quadruple.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/Quintuple.java b/src/org/infinity/util/tuples/Quintuple.java
index 64deae41f..8322ca23f 100644
--- a/src/org/infinity/util/tuples/Quintuple.java
+++ b/src/org/infinity/util/tuples/Quintuple.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/Sextuple.java b/src/org/infinity/util/tuples/Sextuple.java
index b44ec4047..a675fb438 100644
--- a/src/org/infinity/util/tuples/Sextuple.java
+++ b/src/org/infinity/util/tuples/Sextuple.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/Triple.java b/src/org/infinity/util/tuples/Triple.java
index 60302cc07..81e15f3c7 100644
--- a/src/org/infinity/util/tuples/Triple.java
+++ b/src/org/infinity/util/tuples/Triple.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/Tuple.java b/src/org/infinity/util/tuples/Tuple.java
index 0ad4e8ea9..9e8dd2db3 100644
--- a/src/org/infinity/util/tuples/Tuple.java
+++ b/src/org/infinity/util/tuples/Tuple.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/TupleValue0.java b/src/org/infinity/util/tuples/TupleValue0.java
index 5b8c8909e..063f881c6 100644
--- a/src/org/infinity/util/tuples/TupleValue0.java
+++ b/src/org/infinity/util/tuples/TupleValue0.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/TupleValue1.java b/src/org/infinity/util/tuples/TupleValue1.java
index b3094cde3..454198cdb 100644
--- a/src/org/infinity/util/tuples/TupleValue1.java
+++ b/src/org/infinity/util/tuples/TupleValue1.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/TupleValue2.java b/src/org/infinity/util/tuples/TupleValue2.java
index b1a4c9154..9fe8b43c1 100644
--- a/src/org/infinity/util/tuples/TupleValue2.java
+++ b/src/org/infinity/util/tuples/TupleValue2.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/TupleValue3.java b/src/org/infinity/util/tuples/TupleValue3.java
index 94eedce2d..d554788e9 100644
--- a/src/org/infinity/util/tuples/TupleValue3.java
+++ b/src/org/infinity/util/tuples/TupleValue3.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/TupleValue4.java b/src/org/infinity/util/tuples/TupleValue4.java
index 7b6037a27..b6a0f6656 100644
--- a/src/org/infinity/util/tuples/TupleValue4.java
+++ b/src/org/infinity/util/tuples/TupleValue4.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;
diff --git a/src/org/infinity/util/tuples/TupleValue5.java b/src/org/infinity/util/tuples/TupleValue5.java
index cd1f52694..cf7ce48dc 100644
--- a/src/org/infinity/util/tuples/TupleValue5.java
+++ b/src/org/infinity/util/tuples/TupleValue5.java
@@ -1,5 +1,5 @@
// Near Infinity - An Infinity Engine Browser and Editor
-// Copyright (C) 2001 - 2022 Jon Olav Hauglid
+// Copyright (C) 2001 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util.tuples;