Skip to content

Commit ca8bf8e

Browse files
Switch to official LWJGL 3.3.5
1 parent f9b5813 commit ca8bf8e

File tree

377 files changed

+144
-42881
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

377 files changed

+144
-42881
lines changed

build.gradle

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,8 @@ project(':cleanroom') {
245245
// Do not change the order unless it is required so
246246
lwjglLibraries = [
247247
[
248-
'lwjgl3-glfw', 'lwjgl3-jemalloc', 'lwjgl3-openal',
249-
'lwjgl3-opengl', 'lwjgl3-stb', 'lwjgl3-tinyfd', 'lwjgl3'
248+
'lwjgl-glfw', 'lwjgl-jemalloc', 'lwjgl-openal',
249+
'lwjgl-opengl', 'lwjgl-stb', 'lwjgl-tinyfd', 'lwjgl'
250250
],
251251

252252
[
@@ -290,7 +290,7 @@ project(':cleanroom') {
290290
environment 'FORGE_GROUP', project.group
291291
environment 'FORGE_VERSION', props.last_forge_version
292292

293-
jvmArgs jvm_arguments + '-Dmixin.debug.export=true' + '-Dmixin.checks.interfaces=true' + '-Djava.system.class.loader=net.minecraft.launchwrapper.LaunchClassLoader'
293+
jvmArgs jvm_arguments + '-Dmixin.debug.export=true' + '-Dmixin.checks.interfaces=true'
294294
//jvmArgs jvm_arguments
295295

296296
// Lazily supply the Mappings target, createSrg2Mcp.getMappings() doesn't get populated until later
@@ -416,12 +416,14 @@ project(':cleanroom') {
416416
}
417417

418418
dependencies {
419+
compileOnly "com.cleanroommc:lwjglx:1.0.0"
420+
installer "com.cleanroommc:lwjglxx:1.0.0"
419421
lwjglLibraries[0].each {
420-
installer "org.lwjgl3:$it:$props.lwjgl_version"
421-
runtimeOnly "org.lwjgl3:$it::$lwjglArch"
422+
installer "org.lwjgl:$it:$props.lwjgl_version"
423+
runtimeOnly "org.lwjgl:$it::$lwjglArch"
422424

423425
lwjglLibraries[1].each { arch ->
424-
lwjglNatives "org.lwjgl3:$it:$props.lwjgl_version:$arch"
426+
lwjglNatives "org.lwjgl:$it:$props.lwjgl_version:$arch"
425427
}
426428
}
427429

@@ -435,7 +437,7 @@ project(':cleanroom') {
435437
installer "org.ow2.asm:asm-deprecated:$props.asm_deprecated"
436438

437439
//installer "com.cleanroommc:bouncepad:$props.bouncepad_version"
438-
installer "top.outlands:foundation:0.14.1"
440+
installer "top.outlands:foundation:0.14.2"
439441
installer 'org.burningwave:jvm-driver:8.16.1'
440442
installer 'io.github.toolfactory:jvm-driver:9.7.1'
441443
installer 'io.github.toolfactory:narcissus:1.0.7'

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ installer_tools_version = 1.4.1
1919
asm_version = 9.7.1
2020
asm_deprecated = 7.1
2121
netty_version = 4.1.114.Final
22-
lwjgl_version = 3.3.4-27-CLEANROOM
22+
lwjgl_version = 3.3.5
2323

2424
# Sets default memory used for Gradle commands. Can be overridden by user or command line properties.
2525
# This is required to provide enough memory for the Minecraft decompilation process.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--- before/net/minecraft/client/gui/GuiTextField.java
2+
+++ after/net/minecraft/client/gui/GuiTextField.java
3+
@@ -1,5 +1,6 @@
4+
package net.minecraft.client.gui;
5+
6+
+import com.cleanroommc.client.IMEHandler;
7+
import com.google.common.base.Predicate;
8+
import com.google.common.base.Predicates;
9+
import net.minecraft.client.Minecraft;
10+
@@ -631,6 +632,7 @@
11+
}
12+
13+
this.field_146213_o = p_146195_1_;
14+
+ IMEHandler.setIME(this.field_146213_o);
15+
16+
if (Minecraft.func_71410_x().field_71462_r != null)
17+
{
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.cleanroommc.client;
2+
3+
public class IMEHandler {
4+
public static void setIME(boolean active) {
5+
6+
}
7+
}

src/main/java/net/minecraftforge/client/ForgeClientHandler.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@
1919

2020
package net.minecraftforge.client;
2121

22+
import com.cleanroommc.client.IMEHandler;
23+
import net.minecraft.client.gui.GuiChat;
24+
import net.minecraft.client.gui.GuiScreenBook;
25+
import net.minecraft.client.gui.inventory.GuiEditSign;
2226
import net.minecraftforge.client.event.ColorHandlerEvent;
27+
import net.minecraftforge.client.event.GuiOpenEvent;
2328
import net.minecraftforge.client.event.ModelRegistryEvent;
2429
import net.minecraftforge.client.model.ModelLoader;
2530
import net.minecraftforge.common.ForgeModContainer;
@@ -46,4 +51,24 @@ public static void registerItemHandlers(ColorHandlerEvent.Item event)
4651
event.getItemColors().registerItemColorHandler(new FluidContainerColorer(), ForgeModContainer.getInstance().universalBucket);
4752
}
4853
}
54+
55+
@SubscribeEvent
56+
public static void didChangeGui(GuiOpenEvent event) {
57+
boolean canInput;
58+
if (event.getGui() == null) {
59+
// Ignore null GuiScreens
60+
canInput = false;
61+
} else if (event.getGui() instanceof GuiChat) {
62+
// Skip, this should be handled by Focus
63+
return;
64+
} else {
65+
// Vanilla GuiScreens
66+
canInput = event.getGui() instanceof GuiScreenBook
67+
|| event.getGui() instanceof GuiEditSign;
68+
69+
// TODO: Force enable map
70+
}
71+
72+
IMEHandler.setIME(canInput);
73+
}
4974
}

src/main/java/net/minecraftforge/client/ForgeHooksClient.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
package net.minecraftforge.client;
2121

2222
import static net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType.BOSSINFO;
23-
import static net.minecraftforge.common.ForgeVersion.Status.BETA;
24-
import static net.minecraftforge.common.ForgeVersion.Status.BETA_OUTDATED;
2523

2624
import java.awt.image.BufferedImage;
2725
import java.io.File;
@@ -81,7 +79,6 @@
8179
import net.minecraft.client.renderer.vertex.VertexFormatElement.EnumUsage;
8280
import net.minecraft.client.resources.FoliageColorReloadListener;
8381
import net.minecraft.client.resources.GrassColorReloadListener;
84-
import net.minecraft.client.resources.I18n;
8582
import net.minecraft.client.resources.IResourceManagerReloadListener;
8683
import net.minecraft.client.resources.LanguageManager;
8784
import net.minecraft.client.settings.GameSettings;
@@ -103,7 +100,6 @@
103100
import net.minecraft.util.math.MathHelper;
104101
import net.minecraft.util.math.RayTraceResult;
105102
import net.minecraft.util.registry.IRegistry;
106-
import net.minecraft.util.text.TextFormatting;
107103
import net.minecraft.world.IBlockAccess;
108104
import net.minecraft.world.World;
109105
import net.minecraft.world.biome.Biome;
@@ -130,8 +126,6 @@
130126
import net.minecraftforge.client.resource.VanillaResourceType;
131127
import net.minecraftforge.client.model.pipeline.QuadGatheringTransformer;
132128
import net.minecraftforge.common.ForgeModContainer;
133-
import net.minecraftforge.common.ForgeVersion;
134-
import net.minecraftforge.common.ForgeVersion.Status;
135129
import net.minecraftforge.common.MinecraftForge;
136130
import net.minecraftforge.common.model.IModelPart;
137131
import net.minecraftforge.common.model.ITransformation;

src/main/java/net/minecraftforge/client/model/ModelLoader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
import com.google.common.collect.Multimap;
109109
import com.google.common.collect.Multimaps;
110110
import com.google.common.collect.Sets;
111+
import org.lwjgl.util.vector.Vector3f;
111112

112113
import javax.annotation.Nonnull;
113114
import javax.annotation.Nullable;
@@ -466,7 +467,7 @@ private IBakedModel bakeNormal(ModelBlock model, IModelState perState, final IMo
466467
{
467468
transformation = transformation.compose(newTransforms.get(i));
468469
BlockPartRotation rot = part.partRotation;
469-
if(rot == null) rot = new BlockPartRotation(new org.lwjgl.util.vector.Vector3f(), EnumFacing.Axis.Y, 0, false);
470+
if(rot == null) rot = new BlockPartRotation(new Vector3f(), EnumFacing.Axis.Y, 0, false);
470471
part = new BlockPart(part.positionFrom, part.positionTo, part.mapFaces, rot, part.shade);
471472
}
472473
for(Map.Entry<EnumFacing, BlockPartFace> e : part.mapFaces.entrySet())

src/main/java/net/minecraftforge/fml/common/asm/transformers/JavaxTransformer.java

Lines changed: 0 additions & 67 deletions
This file was deleted.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package net.minecraftforge.fml.common.asm.transformers;
2+
3+
import net.minecraft.launchwrapper.IClassTransformer;
4+
import net.minecraft.launchwrapper.Launch;
5+
import org.objectweb.asm.ClassReader;
6+
import org.objectweb.asm.ClassVisitor;
7+
import org.objectweb.asm.ClassWriter;
8+
import org.objectweb.asm.commons.ClassRemapper;
9+
import org.objectweb.asm.commons.Remapper;
10+
import org.objectweb.asm.tree.ClassNode;
11+
12+
import java.io.IOException;
13+
import java.util.Set;
14+
import java.util.stream.Collectors;
15+
16+
public class LWJGLTransformer implements IClassTransformer {
17+
private static final LWJGLXRemapper INSTANCE = new LWJGLXRemapper();
18+
@Override
19+
public byte[] transform(String s, String s1, byte[] bytes) {
20+
if (!s1.startsWith("org.lwjgl.")) {
21+
return bytes;
22+
}
23+
String lwjglxName = s.replace("org.lwjgl.", "org.lwjglx.");
24+
byte[] lwjglxBytes;
25+
try {
26+
lwjglxBytes = Launch.classLoader.testGetClassBytes(lwjglxName);
27+
} catch (IOException e) {
28+
return bytes;
29+
}
30+
if (lwjglxBytes == null) {
31+
return bytes;
32+
}
33+
ClassReader lwjglxReader = new ClassReader(lwjglxBytes);
34+
ClassWriter writer = new ClassWriter(0);
35+
ClassVisitor classVisitor = new ClassRemapper(writer, INSTANCE);
36+
lwjglxReader.accept(classVisitor, 0);
37+
lwjglxBytes = writer.toByteArray();
38+
if (bytes == null) {
39+
return lwjglxBytes;
40+
}
41+
42+
ClassNode lwjglNode = new ClassNode();
43+
ClassReader lwjglReader = new ClassReader(bytes);
44+
lwjglReader.accept(lwjglNode, 0);
45+
46+
lwjglxReader = new ClassReader(lwjglxBytes);
47+
ClassNode lwjglxNode = new ClassNode();
48+
lwjglxReader.accept(lwjglxNode, 0);
49+
Set<String> methods = lwjglNode.methods.stream().map(m -> m.name + m.desc).collect(Collectors.toSet());
50+
lwjglxNode.methods.forEach(m -> {
51+
if (!methods.contains(m.name + m.desc)) {
52+
lwjglNode.methods.add(m);
53+
}
54+
});
55+
Set<String> fields = lwjglNode.fields.stream().map(f -> f.name + f.desc).collect(Collectors.toSet());
56+
lwjglxNode.fields.forEach(f -> {
57+
if (!fields.contains(f.name + f.desc)) {
58+
lwjglNode.fields.add(f);
59+
}
60+
});
61+
ClassWriter out = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
62+
lwjglNode.accept(out);
63+
return out.toByteArray();
64+
}
65+
66+
static class LWJGLXRemapper extends Remapper {
67+
68+
@Override
69+
public String map(String typeName) {
70+
if (typeName == null) {
71+
return null;
72+
}
73+
if (typeName.startsWith("org/lwjgl3/") || typeName.startsWith("org/lwjglx/")) {
74+
return "org/lwjgl/" + typeName.substring(11);
75+
}
76+
77+
return typeName;
78+
}
79+
80+
}
81+
82+
}

src/main/java/net/minecraftforge/fml/relauncher/FMLCorePlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public String[] getASMTransformerClass()
3333
"net.minecraftforge.fml.common.asm.transformers.EventSubscriptionTransformer",
3434
"net.minecraftforge.fml.common.asm.transformers.EventSubscriberTransformer",
3535
"net.minecraftforge.fml.common.asm.transformers.SoundEngineFixTransformer",
36-
//"net.minecraftforge.fml.common.asm.transformers.JavaxTransformer",
36+
"net.minecraftforge.fml.common.asm.transformers.LWJGLTransformer",
3737
};
3838
}
3939

0 commit comments

Comments
 (0)