Update #41 - Fix swords unable to break blocks in survival

This commit is contained in:
lax1dude
2024-11-08 22:13:23 -08:00
parent 79eae996fd
commit 6d8df8128f
19 changed files with 302 additions and 99 deletions

View File

@ -268,51 +268,53 @@ public class PlatformRuntime {
glfwSwapInterval(0);
KHRDebug.glDebugMessageCallbackKHR(new GLDebugMessageKHRCallbackI() {
@Override
public void invoke(int source, int type, int id, int severity, int length, long message, long userParam) {
StringBuilder b = new StringBuilder();
b.append("[KHR DEBUG #"); b.append(id); b.append("] ");
switch(source) {
case KHRDebug.GL_DEBUG_SOURCE_API_KHR: b.append("[API - "); break;
case KHRDebug.GL_DEBUG_SOURCE_APPLICATION_KHR: b.append("[APPLICATION - "); break;
case KHRDebug.GL_DEBUG_SOURCE_SHADER_COMPILER_KHR: b.append("[SHADER COMPILER - "); break;
case KHRDebug.GL_DEBUG_SOURCE_THIRD_PARTY_KHR: b.append("[THIRD PARTY - "); break;
case KHRDebug.GL_DEBUG_SOURCE_OTHER_KHR: default: b.append("[OTHER - "); break;
if(!requestedDisableKHRDebug) {
KHRDebug.glDebugMessageCallbackKHR(new GLDebugMessageKHRCallbackI() {
@Override
public void invoke(int source, int type, int id, int severity, int length, long message, long userParam) {
StringBuilder b = new StringBuilder();
b.append("[KHR DEBUG #"); b.append(id); b.append("] ");
switch(source) {
case KHRDebug.GL_DEBUG_SOURCE_API_KHR: b.append("[API - "); break;
case KHRDebug.GL_DEBUG_SOURCE_APPLICATION_KHR: b.append("[APPLICATION - "); break;
case KHRDebug.GL_DEBUG_SOURCE_SHADER_COMPILER_KHR: b.append("[SHADER COMPILER - "); break;
case KHRDebug.GL_DEBUG_SOURCE_THIRD_PARTY_KHR: b.append("[THIRD PARTY - "); break;
case KHRDebug.GL_DEBUG_SOURCE_OTHER_KHR: default: b.append("[OTHER - "); break;
}
switch(type) {
case KHRDebug.GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR: b.append("DEPRECATED BEHAVIOR] "); break;
case KHRDebug.GL_DEBUG_TYPE_ERROR_KHR: b.append("ERROR] "); break;
default:
case KHRDebug.GL_DEBUG_TYPE_OTHER_KHR: b.append("OTHER] "); break;
case KHRDebug.GL_DEBUG_TYPE_PERFORMANCE_KHR: b.append("PERFORMANCE] "); break;
case KHRDebug.GL_DEBUG_TYPE_PORTABILITY_KHR: b.append("PORTABILITY] "); break;
case KHRDebug.GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR: b.append("UNDEFINED BEHAVIOR] "); break;
}
switch(severity) {
default:
case KHRDebug.GL_DEBUG_SEVERITY_LOW_KHR: b.append("[LOW Severity] "); break;
case KHRDebug.GL_DEBUG_SEVERITY_MEDIUM_KHR: b.append("[MEDIUM Severity] "); break;
case KHRDebug.GL_DEBUG_SEVERITY_HIGH_KHR: b.append("[SEVERE] "); break;
}
String message2 = GLDebugMessageKHRCallback.getMessage(length, message);
if(message2.contains("GPU stall due to ReadPixels")) return;
b.append(message2);
logger.error(b.toString());
StackTraceElement[] ex = new RuntimeException().getStackTrace();
for(int i = 0; i < ex.length; ++i) {
logger.error(" at {}", ex[i]);
}
}
switch(type) {
case KHRDebug.GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR: b.append("DEPRECATED BEHAVIOR] "); break;
case KHRDebug.GL_DEBUG_TYPE_ERROR_KHR: b.append("ERROR] "); break;
default:
case KHRDebug.GL_DEBUG_TYPE_OTHER_KHR: b.append("OTHER] "); break;
case KHRDebug.GL_DEBUG_TYPE_PERFORMANCE_KHR: b.append("PERFORMANCE] "); break;
case KHRDebug.GL_DEBUG_TYPE_PORTABILITY_KHR: b.append("PORTABILITY] "); break;
case KHRDebug.GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR: b.append("UNDEFINED BEHAVIOR] "); break;
}
switch(severity) {
default:
case KHRDebug.GL_DEBUG_SEVERITY_LOW_KHR: b.append("[LOW Severity] "); break;
case KHRDebug.GL_DEBUG_SEVERITY_MEDIUM_KHR: b.append("[MEDIUM Severity] "); break;
case KHRDebug.GL_DEBUG_SEVERITY_HIGH_KHR: b.append("[SEVERE] "); break;
}
String message2 = GLDebugMessageKHRCallback.getMessage(length, message);
if(message2.contains("GPU stall due to ReadPixels")) return;
b.append(message2);
logger.error(b.toString());
StackTraceElement[] ex = new RuntimeException().getStackTrace();
for(int i = 0; i < ex.length; ++i) {
logger.error(" at {}", ex[i]);
}
}
}, 0l);
GLES30.glEnable(KHRDebug.GL_DEBUG_OUTPUT_KHR);
GLES30.glEnable(KHRDebug.GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR);
}, 0l);
GLES30.glEnable(KHRDebug.GL_DEBUG_OUTPUT_KHR);
GLES30.glEnable(KHRDebug.GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR);
}
logger.info("Initializing Audio...");
PlatformAudio.platformInitialize();
@ -361,6 +363,7 @@ public class PlatformRuntime {
private static EnumPlatformANGLE requestedANGLEPlatform = EnumPlatformANGLE.DEFAULT;
private static int requestedGLVersion = 300;
private static boolean requestedDisableKHRDebug = false;
public static void requestANGLE(EnumPlatformANGLE plaf) {
requestedANGLEPlatform = plaf;
@ -370,6 +373,10 @@ public class PlatformRuntime {
requestedGLVersion = i;
}
public static void requestDisableKHRDebug(boolean dis) {
requestedDisableKHRDebug = dis;
}
public static EnumPlatformANGLE getPlatformANGLE() {
return rendererANGLEPlatform;
}

View File

@ -3,7 +3,6 @@ package net.lax1dude.eaglercraft.v1_8.internal;
import dev.onvoid.webrtc.*;
import dev.onvoid.webrtc.internal.NativeLoader;
import net.lax1dude.eaglercraft.v1_8.EagRuntime;
import net.lax1dude.eaglercraft.v1_8.EagUtils;
import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
import net.lax1dude.eaglercraft.v1_8.sp.lan.LANPeerEvent;
@ -257,14 +256,19 @@ public class PlatformWebRTC {
@Override
public void onStateChange() {
if (dataChannel != null && dataChannel.getState() == RTCDataChannelState.OPEN) {
scheduleTask(-1l, () -> {
while (true) {
final Runnable[] retry = new Runnable[1];
final int[] loopCount = new int[1];
scheduleTask(-1l, retry[0] = () -> {
f: {
synchronized (lock1) {
if (iceCandidates.isEmpty()) {
break;
break f;
}
}
EagUtils.sleep(1);
if(++loopCount[0] < 5) {
scheduleTask(1000l, retry[0]);
}
return;
}
synchronized (lock2) {
clientDataChannelClosed = false;
@ -562,14 +566,20 @@ public class PlatformWebRTC {
@Override
public void onDataChannel(RTCDataChannel dataChannel) {
scheduleTask(-1l, () -> {
while (true) {
final Runnable[] retry = new Runnable[1];
final int[] loopCount = new int[1];
scheduleTask(-1l, retry[0] = () -> {
int i = 0;
f: {
synchronized (lock3) {
if (iceCandidates.isEmpty()) {
break;
break f;
}
}
EagUtils.sleep(1);
if(++loopCount[0] < 5) {
scheduleTask(1000l, retry[0]);
}
return;
}
if (dataChannel == null) return;
synchronized (fuckTeaVM) {

View File

@ -87,6 +87,8 @@ public class LWJGLEntryPoint {
PlatformRuntime.requestGL(300);
}else if(args[i].equalsIgnoreCase("gles=310")) {
PlatformRuntime.requestGL(310);
}else if(args[i].equalsIgnoreCase("disableKHRDebug")) {
PlatformRuntime.requestDisableKHRDebug(true);
}else {
EnumPlatformANGLE angle = EnumPlatformANGLE.fromId(args[i]);
if(angle != EnumPlatformANGLE.DEFAULT) {