From 045138d2a0be7989b3c2451f2e0ce1893141469a Mon Sep 17 00:00:00 2001
From: UnKabaraQuiDev <66266372+UnKabaraQuiDev@users.noreply.github.com>
Date: Sun, 5 Apr 2026 15:24:59 +0200
Subject: [PATCH] Added public SteamInterface and renamed old SteamInterface to
SteamInterfaceImpl; Updated .gitignore for eclipse ide
---
.gitignore | 6 +-
.../codedisaster/steamworks/SteamApps.java | 3 +-
.../steamworks/SteamController.java | 2 +-
.../codedisaster/steamworks/SteamFriends.java | 2 +-
.../codedisaster/steamworks/SteamHTTP.java | 2 +-
.../steamworks/SteamInterface.java | 56 ++-----------
.../steamworks/SteamInterfaceImpl.java | 81 +++++++++++++++++++
.../steamworks/SteamMatchmaking.java | 2 +-
.../SteamMatchmakingPingResponse.java | 2 +-
.../SteamMatchmakingPlayersResponse.java | 2 +-
.../SteamMatchmakingRulesResponse.java | 2 +-
.../SteamMatchmakingServerListResponse.java | 2 +-
.../steamworks/SteamMatchmakingServers.java | 2 +-
.../steamworks/SteamNetworking.java | 2 +-
.../steamworks/SteamRemoteStorage.java | 2 +-
.../steamworks/SteamScreenshots.java | 2 +-
.../com/codedisaster/steamworks/SteamUGC.java | 2 +-
.../codedisaster/steamworks/SteamUser.java | 2 +-
.../steamworks/SteamUserStats.java | 2 +-
.../codedisaster/steamworks/SteamUtils.java | 2 +-
.../steamworks/SteamEncryptedAppTicket.java | 2 +-
.../steamworks/SteamGameServer.java | 2 +-
.../steamworks/SteamGameServerHTTP.java | 1 -
.../steamworks/SteamGameServerStats.java | 2 +-
24 files changed, 112 insertions(+), 73 deletions(-)
create mode 100644 java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterfaceImpl.java
diff --git a/.gitignore b/.gitignore
index e60f2018..b08b54a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,7 @@ server/src/main/native/com_codedisaster_steamworks_*
build/
obj/
target/
+bin/
Makefile
*.exp
*.lib
@@ -22,6 +23,9 @@ Makefile
# IDE files
.idea/
*.iml
+.project
+.classpath
+.settings/
# build tools
build-natives/.vs/
@@ -30,4 +34,4 @@ premake5*
# test resources
steam_appid.txt
-encryptedappticket.key
\ No newline at end of file
+encryptedappticket.key
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java
index adb10407..27dbd513 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java
@@ -1,7 +1,6 @@
package com.codedisaster.steamworks;
-@SuppressWarnings("unused")
-public class SteamApps extends SteamInterface {
+public class SteamApps extends SteamInterfaceImpl {
public SteamApps() {
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java
index f20fbba3..aae7febe 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java
@@ -1,7 +1,7 @@
package com.codedisaster.steamworks;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamController extends SteamInterface {
+public class SteamController extends SteamInterfaceImpl {
public enum Pad {
Left,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java
index f78117e1..dab0775c 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java
@@ -3,7 +3,7 @@
import java.util.Collection;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamFriends extends SteamInterface {
+public class SteamFriends extends SteamInterfaceImpl {
public enum FriendRelationship {
None,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java
index 17e2bd44..69f55873 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamHTTP extends SteamInterface {
+public class SteamHTTP extends SteamInterfaceImpl {
public enum HTTPMethod {
Invalid,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java
index 79b01381..d3882b97 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java
@@ -1,55 +1,11 @@
package com.codedisaster.steamworks;
-import java.nio.Buffer;
+/**
+ * Public interface for any native steam interfaces, implemented by
+ * {@link SteamInterfaceImpl}, which is package-private.
+ */
+public interface SteamInterface {
-abstract class SteamInterface {
-
- protected long callback;
-
- SteamInterface() {
- this(0L);
- }
-
- SteamInterface(long callback) {
- this.callback = callback;
- }
-
- void setCallback(long callback) {
- this.callback = callback;
- }
-
- public void dispose() {
- deleteCallback(callback);
- }
-
- void checkBuffer(Buffer buffer) throws SteamException {
- if (!buffer.isDirect()) {
- throw new SteamException("Direct buffer required.");
- }
- }
-
- void checkArray(byte[] array, int length) throws SteamException {
- if (array.length < length) {
- throw new SteamException("Array too small, " + array.length + " found but " + length + " expected.");
- }
- }
-
- /*
- The native API allows passing NULL char pointers in some places, but
- the wrapper code generated by jnigen doesn't check for null Strings.
- So we silently convert to an empty string here, and check again before
- calling the native function.
- */
- static String maybeNull(String argument) {
- return (argument != null) ? argument : "";
- }
-
- /*JNI
- #include "SteamCallbackAdapter.h"
- */
-
- protected static native void deleteCallback(long callback); /*
- delete (SteamCallbackAdapter*) callback;
- */
+ void dispose();
}
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterfaceImpl.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterfaceImpl.java
new file mode 100644
index 00000000..894e456e
--- /dev/null
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterfaceImpl.java
@@ -0,0 +1,81 @@
+package com.codedisaster.steamworks;
+
+import java.nio.Buffer;
+
+/**
+ *
+ * - {@link SteamApps}
+ * - {@link SteamController}
+ * - {@link SteamEncryptedAppTicket}
+ * - {@link SteamFriends}
+ * - {@link SteamGameServer}
+ * - {@link SteamGameServerStats}
+ * - {@link SteamHTTP} → {@link SteamGameServerHTTP}
+ * - {@link SteamMatchmaking}
+ * - {@link SteamMatchmakingPingResponse}
+ * - {@link SteamMatchmakingPlayerResponse}
+ * - {@link SteamMatchmakingRulesResponse}
+ * - {@link SteamMatchmakingServerListResponse}
+ * - {@link SteamMatchmakingServers}
+ * - {@link SteamNetworking} → {@link SteamGameServerNetworking}
+ * - {@link SteamRemoteStorage}
+ * - {@link SteamScreenshots}
+ * - {@link SteamUGC}
+ * - {@link SteamUser}
+ * - {@link SteamUserStats}
+ * - {@link SteamUtils}
+ *
+ */
+abstract class SteamInterfaceImpl implements SteamInterface {
+
+ protected long callback;
+
+ SteamInterfaceImpl() {
+ this(0L);
+ }
+
+ SteamInterfaceImpl(long callback) {
+ this.callback = callback;
+ }
+
+ void setCallback(long callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void dispose() {
+ deleteCallback(callback);
+ }
+
+ static void checkBuffer(Buffer buffer) throws SteamException {
+ if (!buffer.isDirect()) {
+ throw new SteamException("Direct buffer required.");
+ }
+ }
+
+ static void checkArray(byte[] array, int length) throws SteamException {
+ if (array.length < length) {
+ throw new SteamException("Array too small, " + array.length + " found but " + length + " expected.");
+ }
+ }
+
+ /*
+ * The native API allows passing NULL char pointers in some places, but the
+ * wrapper code generated by jnigen doesn't check for null Strings. So we
+ * silently convert to an empty string here, and check again before calling the
+ * native function.
+ */
+ static String maybeNull(String argument) {
+ return (argument != null) ? argument : "";
+ }
+
+ /*
+ * JNI #include "SteamCallbackAdapter.h"
+ */
+
+ protected static native void deleteCallback(long callback);
+ /*
+ * delete (SteamCallbackAdapter*) callback;
+ */
+
+}
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java
index bc4abfaa..7e4196b5 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamMatchmaking extends SteamInterface {
+public class SteamMatchmaking extends SteamInterfaceImpl {
public enum LobbyType {
Private,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java
index d4097901..48327ec3 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java
@@ -1,6 +1,6 @@
package com.codedisaster.steamworks;
-public abstract class SteamMatchmakingPingResponse extends SteamInterface {
+public abstract class SteamMatchmakingPingResponse extends SteamInterfaceImpl {
protected SteamMatchmakingPingResponse() {
super(~0L);
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java
index ddebeb5d..f76b8cda 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java
@@ -1,6 +1,6 @@
package com.codedisaster.steamworks;
-public abstract class SteamMatchmakingPlayersResponse extends SteamInterface {
+public abstract class SteamMatchmakingPlayersResponse extends SteamInterfaceImpl {
protected SteamMatchmakingPlayersResponse() {
super(~0L);
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java
index 01121e58..9c3a80d1 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java
@@ -1,6 +1,6 @@
package com.codedisaster.steamworks;
-public abstract class SteamMatchmakingRulesResponse extends SteamInterface {
+public abstract class SteamMatchmakingRulesResponse extends SteamInterfaceImpl {
protected SteamMatchmakingRulesResponse() {
super(~0L);
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java
index 3852a75e..1949090f 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java
@@ -1,6 +1,6 @@
package com.codedisaster.steamworks;
-public abstract class SteamMatchmakingServerListResponse extends SteamInterface {
+public abstract class SteamMatchmakingServerListResponse extends SteamInterfaceImpl {
public enum Response {
ServerResponded,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java
index df652e2f..c0540683 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java
@@ -1,7 +1,7 @@
package com.codedisaster.steamworks;
@SuppressWarnings("unused")
-public class SteamMatchmakingServers extends SteamInterface {
+public class SteamMatchmakingServers extends SteamInterfaceImpl {
public SteamMatchmakingServers() {
super(-1);
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java
index 933e876d..32345e11 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamNetworking extends SteamInterface {
+public class SteamNetworking extends SteamInterfaceImpl {
public enum P2PSend {
Unreliable,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java
index a9ae88dd..2cee0302 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamRemoteStorage extends SteamInterface {
+public class SteamRemoteStorage extends SteamInterfaceImpl {
public enum RemoteStoragePlatform {
None(0),
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java
index 3247705f..86cc7b26 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings("unused")
-public class SteamScreenshots extends SteamInterface {
+public class SteamScreenshots extends SteamInterfaceImpl {
public SteamScreenshots(SteamScreenshotsCallback callback) {
super(SteamScreenshotsNative.createCallback(new SteamScreenshotsCallbackAdapter(callback)));
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java
index 9cfc945c..9c02a00d 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java
@@ -4,7 +4,7 @@
import java.util.EnumSet;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamUGC extends SteamInterface {
+public class SteamUGC extends SteamInterfaceImpl {
public enum UserUGCList {
Published,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java
index 8b0f43c3..52aa3c28 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamUser extends SteamInterface {
+public class SteamUser extends SteamInterfaceImpl {
public enum VoiceResult {
OK,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java
index 96e4b590..d03eca99 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java
@@ -1,7 +1,7 @@
package com.codedisaster.steamworks;
@SuppressWarnings({ "unused", "UnusedReturnValue" })
-public class SteamUserStats extends SteamInterface {
+public class SteamUserStats extends SteamInterfaceImpl {
public enum LeaderboardDataRequest {
Global,
diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java
index 89a99505..cbd1e872 100644
--- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java
+++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings("unused")
-public class SteamUtils extends SteamInterface {
+public class SteamUtils extends SteamInterfaceImpl {
public enum SteamAPICallFailure {
None(-1),
diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java b/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java
index 9d021f2e..9efe6a0a 100644
--- a/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java
+++ b/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java
@@ -2,7 +2,7 @@
import java.nio.ByteBuffer;
-public class SteamEncryptedAppTicket extends SteamInterface {
+public class SteamEncryptedAppTicket extends SteamInterfaceImpl {
public static final int SymmetricKeyLen = 32;
diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java b/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java
index a5dfad3c..606d5c47 100644
--- a/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java
+++ b/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java
@@ -3,7 +3,7 @@
import java.nio.ByteBuffer;
@SuppressWarnings("unused")
-public class SteamGameServer extends SteamInterface {
+public class SteamGameServer extends SteamInterfaceImpl {
public enum DenyReason {
Invalid,
diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java
index 9d79cff8..79bea435 100644
--- a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java
+++ b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java
@@ -1,6 +1,5 @@
package com.codedisaster.steamworks;
-@SuppressWarnings("unused")
public class SteamGameServerHTTP extends SteamHTTP {
public SteamGameServerHTTP(SteamHTTPCallback callback) {
diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java
index 2b43f594..f365c427 100644
--- a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java
+++ b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java
@@ -1,7 +1,7 @@
package com.codedisaster.steamworks;
@SuppressWarnings("unused")
-public class SteamGameServerStats extends SteamInterface {
+public class SteamGameServerStats extends SteamInterfaceImpl {
public SteamGameServerStats(SteamGameServerStatsCallback callback) {
super(SteamGameServerStatsNative.createCallback(new SteamGameServerStatsCallbackAdapter(callback)));