diff --git a/dependencies.gradle b/dependencies.gradle
index de94e4439..fd17d6b1b 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -61,7 +61,7 @@ dependencies {
// Iris Shaders
compileOnly('org.jetbrains:annotations:24.0.1')
- api("com.github.GTNewHorizons:GTNHLib:0.3.2:dev")
+ api("com.github.GTNewHorizons:GTNHLib:0.4.0:dev")
shadowImplementation("org.anarres:jcpp:1.4.14") // Apache 2.0
implementation("io.github.douira:glsl-transformer:1.0.0")
shadowImplementation("io.github.douira:glsl-transformer:1.0.0") { // glsl-transformer Noncommercial License 1.0.0
@@ -78,7 +78,7 @@ dependencies {
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Baubles:1.0.4:dev")
compileOnly("com.github.GTNewHorizons:twilightforest:2.5.16:dev") { transitive = false }
compileOnly(rfg.deobf('curse.maven:witchery-69673:2234410'))
- compileOnly("com.github.GTNewHorizons:TinkersConstruct:1.12.0-GTNH:dev")
+ compileOnly("com.github.GTNewHorizons:TinkersConstruct:1.12.0-GTNH:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:Natura:2.6.1:dev")
compileOnly("com.github.GTNewHorizons:ThaumicHorizons:1.6.1:dev")
diff --git a/gradle.properties b/gradle.properties
index 628e56681..6d58c1eda 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -85,6 +85,11 @@ accessTransformersFile = angelica_at.cfg notfine_at.cfg archaicfix_at.cfg mcpatc
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = true
+# Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main.
+# This can speed up compile times thanks to not running the mixin annotation processor on all input sources.
+# Mixin classes will have access to "main" classes, but not the other way around.
+separateMixinSourceSet = mixin
+
# Adds some debug arguments like verbose output and class export.
usesMixinDebug = false
diff --git a/settings.gradle b/settings.gradle
index 91274fa5b..30468bce7 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -16,5 +16,5 @@ pluginManagement {
}
plugins {
- id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.24'
+ id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.26'
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java b/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java
index 2bbd6e824..074b186de 100644
--- a/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java
+++ b/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java
@@ -15,7 +15,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
name = "Angelica",
version = Tags.VERSION,
dependencies = " before:lwjgl3ify@[1.5.3,);" + " after:hodgepodge@[2.4.4,);" + " after:CodeChickenCore@[1.2.0,);"
- + " after:archaicfix@[0.7.0,);" + " required-after:gtnhlib@[0.3.2,);",
+ + " after:archaicfix@[0.7.0,);" + " required-after:gtnhlib@[0.4.0,);",
acceptedMinecraftVersions = "[1.7.10]",
acceptableRemoteVersions = "*",
guiFactory = "com.gtnewhorizons.angelica.config.AngelicaGuiConfigFactory")
diff --git a/src/main/java/com/gtnewhorizons/angelica/TODO.md b/src/main/java/com/gtnewhorizons/angelica/TODO.md
deleted file mode 100644
index 3c9dd3529..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/TODO.md
+++ /dev/null
@@ -1,10 +0,0 @@
-- [x] Frustum (Seems related to Frustrum)
-- [X] NativeImage
-- [ ] PoseStack
-- [ ] RenderType
-- [ ] MultiBufferSource.BufferSource
-- [ ] VertexBuffer
-- [ ] VertexConsumer
-- [ ] VertextFormat
-- [ ] TextureAtlas (Seems related to TextureManager) - PBR related
-- [ ] GUI
diff --git a/src/main/java/com/gtnewhorizons/angelica/api/BlockPos.java b/src/main/java/com/gtnewhorizons/angelica/api/BlockPos.java
deleted file mode 100644
index 580284e30..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/api/BlockPos.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.gtnewhorizons.angelica.api;
-
-import com.gtnewhorizon.gtnhlib.util.CoordinatePacker;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
-import net.minecraftforge.common.util.ForgeDirection;
-
-public interface BlockPos {
- int getX();
- int getY();
- int getZ();
- BlockPosImpl offset(ForgeDirection d);
- BlockPosImpl down();
- BlockPosImpl up();
- long asLong();
-
- static long asLong(int x, int y, int z) {
- return CoordinatePacker.pack(x, y, z);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/api/ModelLoader.java b/src/main/java/com/gtnewhorizons/angelica/api/ModelLoader.java
deleted file mode 100644
index 7e3171fc7..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/api/ModelLoader.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.gtnewhorizons.angelica.api;
-
-import com.google.common.annotations.Beta;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.gtnewhorizons.angelica.loading.AngelicaTweaker;
-import com.gtnewhorizons.angelica.models.json.JsonModel;
-import com.gtnewhorizons.angelica.utils.Callback;
-import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
-import it.unimi.dsi.fastutil.objects.ObjectArrayList;
-import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
-import net.minecraft.util.ResourceLocation;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Model loading is as follows:
- * - Models to load are registered in PREINIT or INIT. See {@link #registerModels(Callback, Collection)}.
- * - A resource rebuild is triggered, then registered models and their parents are recursively loaded in POSTINIT.
- *
- * - Models registered for baking are baked on the first client tick.
- *
- * As for icons, register them in {@link Block#registerBlockIcons}. Whatever gets them in the block texture atlas.
- */
-@Beta
-public class ModelLoader {
-
- private static final Gson GSON = new GsonBuilder()
- .registerTypeAdapter(JsonModel.class, new JsonModel.Deserializer()).create();
- private static final List unloadedModels = new ObjectArrayList<>();
- private static final Map loadedModels = new Object2ObjectOpenHashMap<>();
- private static final Map modelsToBake = new Object2ObjectOpenHashMap<>();
- private static final List postBakeCallbacks = new ObjectArrayList<>();
-
- /**
- * Convenience method to register a baker callback, which will be run after JSON models are baked. Useful if
- * you implemented your own non-JSON model that still needs baking.
- */
- public static void registerBaker(Callback baker) {
-
- postBakeCallbacks.add(baker);
- }
-
- /**
- * Convenience method to register multiple variants. See {@link #registerModels(Callback, Collection)}.
- */
- public static void registerModels(Callback loader, Variant... variants) {
-
- registerModels(loader, Arrays.asList(variants));
- }
-
- /**
- * Pass the variant(s) you want to load, and if needed a callback which puts the models in a useful place, e.g.
- * saving them to a static field after baking.
- */
- public static void registerModels(Callback loader, Collection variants) {
-
- for (Variant v : variants) {
-
- unloadedModels.add(v.getModel());
- modelsToBake.put(v, null);
- }
-
- postBakeCallbacks.add(loader);
- }
-
- public static void loadModels() {
-
- for (ResourceLocation l : unloadedModels) {
-
- if (l == null) continue;
- if (loadedModels.containsKey(l)) continue;
-
- final JsonModel model = loadJson(l, JsonModel.class);
- unloadedModels.addAll(model.getParents());
- loadedModels.put(l, model);
- }
- }
-
- private static T loadJson(ResourceLocation path, Class clazz) {
- try {
-
- final InputStream is = Minecraft.getMinecraft().getResourceManager().getResource(path).getInputStream();
- return GSON.fromJson(new InputStreamReader(is), clazz);
- } catch (IOException e) {
-
- AngelicaTweaker.LOGGER.fatal("Could not find " + path.getResourceDomain() + " " + path.getResourcePath());
- throw new RuntimeException(e);
- }
- }
-
- public static void bakeModels() {
-
- for (Map.Entry l : modelsToBake.entrySet()) {
-
- final JsonModel dough = new JsonModel(loadedModels.get(l.getKey().getModel()));
-
- // Resolve the parent chain
- //noinspection SuspiciousMethodCalls
- dough.resolveParents(loadedModels::get);
-
- // Bake
- dough.bake(l.getKey());
-
- l.setValue(dough);
- }
-
- for (Callback c : postBakeCallbacks)
- c.run();
- }
-
- public static QuadProvider getModel(Variant loc) {
- return modelsToBake.get(loc);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/api/MutableBlockPos.java b/src/main/java/com/gtnewhorizons/angelica/api/MutableBlockPos.java
deleted file mode 100644
index 4f0be4291..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/api/MutableBlockPos.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.gtnewhorizons.angelica.api;
-
-public interface MutableBlockPos extends BlockPos {
-
- MutableBlockPos set(int x, int y, int z);
-
- MutableBlockPos set(long packedPos);
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/api/QuadBuilder.java b/src/main/java/com/gtnewhorizons/angelica/api/QuadBuilder.java
deleted file mode 100644
index b30af3e17..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/api/QuadBuilder.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package com.gtnewhorizons.angelica.api;
-
-import com.gtnewhorizons.angelica.models.NdQuadBuilder;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadView;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadViewMutable;
-import net.minecraft.util.IIcon;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.jetbrains.annotations.Nullable;
-import org.joml.Matrix4f;
-import org.joml.Vector3f;
-
-public interface QuadBuilder {
-
- /**
- * Causes texture to appear with no rotation.
- * Pass in bakeFlags parameter to {@link #spriteBake(IIcon, int)}.
- */
- int BAKE_ROTATE_NONE = 0;
-
- /**
- * Causes texture to appear rotated 90 deg. clockwise relative to nominal face.
- * Pass in bakeFlags parameter to {@link #spriteBake(IIcon, int)}.
- */
- int BAKE_ROTATE_90 = 1;
-
- /**
- * Causes texture to appear rotated 180 deg. relative to nominal face.
- * Pass in bakeFlags parameter to {@link #spriteBake(IIcon, int)}.
- */
- int BAKE_ROTATE_180 = 2;
-
- /**
- * Causes texture to appear rotated 270 deg. clockwise relative to nominal face.
- * Pass in bakeFlags parameter to {@link #spriteBake(IIcon, int)}.
- */
- int BAKE_ROTATE_270 = 3;
-
- /**
- * When enabled, texture coordinate are assigned based on vertex position.
- * Any existing UV coordinates will be replaced.
- * Pass in bakeFlags parameter to {@link #spriteBake(IIcon, int)}.
- *
- * UV lock always derives texture coordinates based on nominal face, even
- * when the quad is not co-planar with that face, and the result is
- * the same as if the quad were projected onto the nominal face, which
- * is usually the desired result.
- */
- int BAKE_LOCK_UV = 4;
-
- /**
- * When set, U texture coordinates for the given sprite are
- * flipped as part of baking. Can be useful for some randomization
- * and texture mapping scenarios. Results are different from what
- * can be obtained via rotation and both can be applied.
- * Pass in bakeFlags parameter to {@link #spriteBake(IIcon, int)}.
- */
- int BAKE_FLIP_U = 8;
-
- /**
- * Same as {@link #BAKE_FLIP_U} but for V coordinate.
- */
- int BAKE_FLIP_V = 16;
-
- /**
- * UV coordinates by default are assumed to be 0-16 scale for consistency
- * with conventional Minecraft model format. This is scaled to 0-1 during
- * baking before interpolation. Model loaders that already have 0-1 coordinates
- * can avoid wasteful multiplication/division by passing 0-1 coordinates directly.
- * Pass in bakeFlags parameter to {@link #spriteBake(IIcon, int)}.
- */
- int BAKE_NORMALIZED = 32;
-
- /**
- * Tolerance for determining if the depth parameter to {@link #square(ForgeDirection, float, float, float, float, float)}
- * is effectively zero - meaning the face is a cull face.
- */
- float CULL_FACE_EPSILON = 0.00001f;
-
- static QuadBuilder getBuilder() {
- return new NdQuadBuilder();
- }
-
- /**
- * Copies data to out, returns it, and resets builder for further use.
- */
- QuadView build(QuadView out);
-
- /**
- * See {@link #build(QuadView)}. This also rotates the output by the given matrix.
- */
- QuadView build(QuadView out, Matrix4f rotMat);
-
- /**
- * Tries to automatically set the culling and nominal face from the quad's geometry.
- */
- void setCullFace();
-
- /**
- * Provides a hint to renderer about the facing of this quad. Not required,
- * but if provided can shortcut some geometric analysis if the quad is parallel to a block face.
- * Should be the expected value of {@link ModelQuadView#getLightFace()}. Value will be confirmed
- * and if invalid the correct light face will be calculated.
- *
- *
Null by default, and set automatically by {@link ModelQuadViewMutable#setCullFace(ForgeDirection)}.
- *
- *
Models may also find this useful as the face for texture UV locking and rotation semantics.
- *
- *
Note: This value is not persisted independently when the quad is encoded.
- * When reading encoded quads, this value will always be the same as {@link ModelQuadView#getLightFace()}.
- */
- void nominalFace(@Nullable ForgeDirection face);
-
- /**
- * See {@link #nominalFace(ForgeDirection)}
- */
- ForgeDirection nominalFace();
-
- /**
- * Sets the geometric vertex position for the given vertex,
- * relative to block origin, (0,0,0). Minecraft rendering is designed
- * for models that fit within a single block space and is recommended
- * that coordinates remain in the 0-1 range, with multi-block meshes
- * split into multiple per-block models.
- */
- void pos(int vertexIndex, float x, float y, float z);
-
- /**
- * Convenience: set pos with a vector. See {@link #pos(int, float, float, float)}.
- */
- void pos(int vertexIndex, Vector3f vec);
-
- /**
- * Gets the vertex position as a vector. This allocates a new vector, do not use in dynamic rendering!
- */
- Vector3f pos(int vertexIndex);
-
- /**
- * Convenience: access x, y, z by index 0-2.
- */
- float posByIndex(int vertexIndex, int coordinateIndex);
-
- /**
- * Convienence, gets the icon from the block atlas. See {@link #spriteBake(IIcon, int)}
- */
- void spriteBake(String spriteName, int bakeFlags);
-
- /**
- * Assigns sprite atlas u,v coordinates to this quad for the given sprite.
- * Can handle UV locking, rotation, interpolation, etc. Control this behavior
- * by passing additive combinations of the BAKE_ flags defined in this interface.
- */
- void spriteBake(IIcon sprite, int bakeFlags);
-
- /**
- * Helper method to assign vertex coordinates for a square aligned with the given face.
- * Ensures that vertex order is consistent with vanilla convention. (Incorrect order can
- * lead to bad AO lighting unless enhanced lighting logic is available/enabled.)
- *
- *
Square will be parallel to the given face and coplanar with the face (and culled if the
- * face is occluded) if the depth parameter is approximately zero. See {@link #CULL_FACE_EPSILON}.
- *
- *
All coordinates should be normalized (0-1).
- *
- *
The directions for the faces assume you're looking at them. For top and bottom, they assume you're looking north.
- */
- void square(ForgeDirection nominalFace, float left, float bottom, float right, float top, float depth);
-
- int tag();
-
- /**
- * Encodes an integer tag with this quad that can later be retrieved via
- * {@link #tag()}. Useful for models that want to perform conditional
- * transformation or filtering on static meshes.
- */
- void tag(int tag);
-
- /**
- * Set texture coordinates.
- */
- void uv(int vertexIndex, float u, float v);
-
- /**
- * Modern Minecraft uses magic arrays to do this without breaking AO. This is the same thing, but without arrays.
- */
- static Vector3f mapSideToVertex(Vector3f from, Vector3f to, int index, ForgeDirection side) {
-
- return switch (side) {
- case DOWN -> switch (index) {
- case 0 -> new Vector3f(from.x, from.y, to.z);
- case 1 -> new Vector3f(from.x, from.y, from.z);
- case 2 -> new Vector3f(to.x, from.y, from.z);
- case 3 -> new Vector3f(to.x, from.y, to.z);
- default -> throw new RuntimeException("Too many indices!");
- };
- case UP -> switch (index) {
- case 0 -> new Vector3f(from.x, to.y, from.z);
- case 1 -> new Vector3f(from.x, to.y, to.z);
- case 2 -> new Vector3f(to.x, to.y, to.z);
- case 3 -> new Vector3f(to.x, to.y, from.z);
- default -> throw new RuntimeException("Too many indices!");
- };
- case NORTH -> switch (index) {
- case 0 -> new Vector3f(to.x, to.y, from.z);
- case 1 -> new Vector3f(to.x, from.y, from.z);
- case 2 -> new Vector3f(from.x, from.y, from.z);
- case 3 -> new Vector3f(from.x, to.y, from.z);
- default -> throw new RuntimeException("Too many indices!");
- };
- case SOUTH -> switch (index) {
- case 0 -> new Vector3f(from.x, to.y, to.z);
- case 1 -> new Vector3f(from.x, from.y, to.z);
- case 2 -> new Vector3f(to.x, from.y, to.z);
- case 3 -> new Vector3f(to.x, to.y, to.z);
- default -> throw new RuntimeException("Too many indices!");
- };
- case WEST -> switch (index) {
- case 0 -> new Vector3f(from.x, to.y, from.z);
- case 1 -> new Vector3f(from.x, from.y, from.z);
- case 2 -> new Vector3f(from.x, from.y, to.z);
- case 3 -> new Vector3f(from.x, to.y, to.z);
- default -> throw new RuntimeException("Too many indices!");
- };
- case EAST -> switch (index) {
- case 0 -> new Vector3f(to.x, to.y, to.z);
- case 1 -> new Vector3f(to.x, from.y, to.z);
- case 2 -> new Vector3f(to.x, from.y, from.z);
- case 3 -> new Vector3f(to.x, to.y, from.z);
- default -> throw new RuntimeException("Too many indices!");
- };
- case UNKNOWN -> null;
- };
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/api/QuadProvider.java b/src/main/java/com/gtnewhorizons/angelica/api/QuadProvider.java
deleted file mode 100644
index 4e9d60fd2..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/api/QuadProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.gtnewhorizons.angelica.api;
-
-import net.minecraft.block.Block;
-import net.minecraft.world.IBlockAccess;
-import net.minecraftforge.common.util.ForgeDirection;
-
-import java.util.List;
-import java.util.Random;
-import java.util.function.Supplier;
-
-public interface QuadProvider {
-
- int R_MASK = 0xFF << 16;
- int G_MASK = 0xFF << 8;
- int B_MASK = 0xFF;
-
- /**
- * Called once per block and returns the color packed as ABGR. If you want to vary colors within a block, just
- * ignore the color passed into {@link #getQuads} and use your own function, don't override this. But if you only
- * want to change color once per block, like vanilla leaves, override this. The default vanilla adapter is
- * {@link #getDefaultColor}
- */
- default int getColor(IBlockAccess world, BlockPos pos, Block block, int meta, Random random) {
-
- return -1;
- }
-
- static int getDefaultColor(IBlockAccess world, BlockPos pos, Block block) {
-
- final int cin = block.colorMultiplier(world, pos.getX(), pos.getY(), pos.getZ());
- return (0xFF << 24) | ((cin & B_MASK) << 16) | (cin & G_MASK) | ((cin & R_MASK) >>> 16);
- }
-
- /**
- * If you need to allocate new quads, set this to true. If true, the quads returned by {@link #getQuads} are
- * recycled, and you should not keep a reference to them. Example: stone can return a static list every time, but a
- * modded block which adds or removes quads based on location would need dynamic quads.
- */
- default boolean isDynamic() {
- return false;
- }
-
- /**
- * Provide quads to render. If you need new quads, they should be obtained with the passed supplier and
- * {@link #isDynamic} overridden to return true. If so, all quads in the list are recycled and references to them
- * should not be kept.
- */
- List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool);
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/api/QuadView.java b/src/main/java/com/gtnewhorizons/angelica/api/QuadView.java
deleted file mode 100644
index dcc17866f..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/api/QuadView.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.gtnewhorizons.angelica.api;
-
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadViewMutable;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import me.jellysquid.mods.sodium.client.render.pipeline.BlockRenderer;
-import net.minecraftforge.common.util.ForgeDirection;
-
-public interface QuadView extends ModelQuadViewMutable {
-
- /**
- * Allocates a new quad - use sparingly, and not at all in render paths if you can help it. We don't need another
- * Malice Doors.
- */
- static QuadView allocate() {
- return new Quad();
- }
-
- boolean isShade();
- boolean isDeleted();
- ForgeDirection getFace();
- QuadView copyFrom(QuadView src);
- int[] getRawData();
-
- /**
- * Present for compatibility with the Tesselator, not recommended for general use.
- */
- void setState(int[] rawBuffer, int offset, BlockRenderer.Flags flags, int drawMode, float offsetX, float offsetY, float offsetZ);
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/api/Variant.java b/src/main/java/com/gtnewhorizons/angelica/api/Variant.java
deleted file mode 100644
index c732d0ceb..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/api/Variant.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.gtnewhorizons.angelica.api;
-
-import com.google.common.annotations.Beta;
-import lombok.Getter;
-import net.minecraft.util.ResourceLocation;
-import org.joml.Matrix4f;
-
-import static java.lang.Math.toRadians;
-
-@Beta
-public class Variant {
-
- @Getter
- private final ResourceLocation model;
- private final float x;
- private final float y;
- private final boolean uvLock;
-
- public Variant(ResourceLocation model, int x, int y, boolean uvLock) {
- this.model = model;
- this.x = (float) toRadians(x);
- this.y = (float) toRadians(y);
- this.uvLock = uvLock;
- }
-
- public Matrix4f getAffineMatrix() {
-
- return new Matrix4f()
- .translation(-.5f, -.5f, -.5f)
- .rotateLocalY(x)
- .rotateLocalX(y)
- .translateLocal(.5f, .5f, .5f);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/client/font/BatchingFontRenderer.java b/src/main/java/com/gtnewhorizons/angelica/client/font/BatchingFontRenderer.java
index 6b459767a..05bbe94f0 100644
--- a/src/main/java/com/gtnewhorizons/angelica/client/font/BatchingFontRenderer.java
+++ b/src/main/java/com/gtnewhorizons/angelica/client/font/BatchingFontRenderer.java
@@ -20,8 +20,6 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
-import static org.lwjgl.opengl.GL11.*;
-
/**
* A batching replacement for {@code FontRenderer}
*
@@ -255,15 +253,15 @@ public class BatchingFontRenderer {
GLStateManager.enableTexture();
GLStateManager.enableAlphaTest();
GLStateManager.enableBlend();
- GLStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO);
- GLStateManager.glShadeModel(GL_FLAT);
+ GLStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
+ GLStateManager.glShadeModel(GL11.GL_FLAT);
- glTexCoordPointer(2, 0, batchVtxTexCoords);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glColorPointer(4, GL_UNSIGNED_BYTE, 0, batchVtxColors);
- glEnableClientState(GL_COLOR_ARRAY);
- glVertexPointer(2, 0, batchVtxPositions);
- glEnableClientState(GL_VERTEX_ARRAY);
+ GL11.glTexCoordPointer(2, 0, batchVtxTexCoords);
+ GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
+ GL11.glColorPointer(4, GL11.GL_UNSIGNED_BYTE, 0, batchVtxColors);
+ GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
+ GL11.glVertexPointer(2, 0, batchVtxPositions);
+ GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
GLStateManager.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
// Use plain for loop to avoid allocations
@@ -285,12 +283,12 @@ public class BatchingFontRenderer {
}
batchIndices.limit(cmd.startVtx + cmd.idxCount);
batchIndices.position(cmd.startVtx);
- glDrawElements(GL_TRIANGLES, batchIndices);
+ GL11.glDrawElements(GL11.GL_TRIANGLES, batchIndices);
}
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisableClientState(GL_COLOR_ARRAY);
- glDisableClientState(GL_VERTEX_ARRAY);
+ GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
+ GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
+ GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
if (isTextureEnabledBefore) {
GLStateManager.glEnable(GL11.GL_TEXTURE_2D);
diff --git a/src/main/java/com/gtnewhorizons/angelica/client/renderer/CapturingTessellator.java b/src/main/java/com/gtnewhorizons/angelica/client/renderer/CapturingTessellator.java
deleted file mode 100644
index ca6700ecf..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/client/renderer/CapturingTessellator.java
+++ /dev/null
@@ -1,247 +0,0 @@
-package com.gtnewhorizons.angelica.client.renderer;
-
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import com.gtnewhorizons.angelica.glsm.stacks.Vector3dStack;
-import com.gtnewhorizons.angelica.mixins.interfaces.ITessellatorInstance;
-import com.gtnewhorizons.angelica.utils.ObjectPooler;
-import cpw.mods.fml.relauncher.ReflectionHelper;
-import it.unimi.dsi.fastutil.objects.ObjectArrayList;
-import me.jellysquid.mods.sodium.client.render.pipeline.BlockRenderer;
-import net.minecraft.client.renderer.Tessellator;
-import org.lwjgl.BufferUtils;
-import org.lwjgl.opengl.GL11;
-
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.reflect.Field;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Arrays;
-import java.util.List;
-
-import static net.minecraft.util.MathHelper.clamp_int;
-
-/*
- * To be used in conjunction with the TessellatorManager
- *
- * Used to capture the quads generated by the Tessellator across multiple draw calls and make the quad
- * list available for usage.
- *
- * NOTE: This will _not_ (currently) capture, integrate, or stop any GL calls made around the tessellator draw calls.
- *
- */
-@SuppressWarnings("unused")
-public class CapturingTessellator extends Tessellator implements ITessellatorInstance {
-
- // Access Transformers don't work on Forge Fields :rage:
- private static final MethodHandle sRawBufferSize;
- private static final MethodHandle gRawBufferSize;
- private final BlockRenderer.Flags FLAGS = new BlockRenderer.Flags(true, true, true, true);
- private final ObjectPooler quadBuf = new ObjectPooler<>(Quad::new);
- private final List collectedQuads = new ObjectArrayList<>();
-
- // Any offset we need to the Tesselator's offset!
- private final BlockPosImpl offset = new BlockPosImpl();
-
- private final Vector3dStack storedTranslation = new Vector3dStack();
-
- public void setOffset(BlockPosImpl pos) {
- this.offset.set(pos);
- }
- public void resetOffset() {
- this.offset.zero();
- }
-
-
- static {
- final Field rbs = ReflectionHelper.findField(Tessellator.class, "rawBufferSize");
- rbs.setAccessible(true);
- try {
- sRawBufferSize = MethodHandles.lookup().unreflectSetter(rbs);
- gRawBufferSize = MethodHandles.lookup().unreflectGetter(rbs);
- } catch (IllegalAccessException e) {
- throw new RuntimeException(e);
- }
- }
-
- public void setRawBufferSize(int size) {
- try {
- sRawBufferSize.invokeExact((Tessellator)this, size);
- } catch (Throwable throwable) {
- throw new RuntimeException(throwable);
- }
- }
- public int getRawBufferSize() {
- try {
- return (int) gRawBufferSize.invokeExact((Tessellator)this);
- } catch (Throwable throwable) {
- throw new RuntimeException(throwable);
- }
- }
-
- @Override
- public int draw() {
- // Adapted from Neodymium
-
- FLAGS.hasBrightness = this.hasBrightness;
- FLAGS.hasColor = this.hasColor;
- FLAGS.hasNormals = this.hasNormals;
-
- final int verticesPerPrimitive = this.drawMode == GL11.GL_QUADS ? 4 : 3;
-
-
- for(int quadI = 0; quadI < this.vertexCount / verticesPerPrimitive; quadI++) {
- final QuadView quad = quadBuf.getInstance();
- quad.setState(this.rawBuffer, quadI * (verticesPerPrimitive * 8), FLAGS, this.drawMode, -offset.x, -offset.y, -offset.z);
-
- if(quad.isDeleted()) {
- quadBuf.releaseInstance(quad);
- } else {
- this.collectedQuads.add(quad);
- }
- }
-
- final int i = this.rawBufferIndex * 4;
- this.discard();
- return i;
- }
-
- @Override
- public void discard() {
- isDrawing = false;
- reset();
- }
-
-
- public List getQuads() {
- return collectedQuads;
- }
-
- public void clearQuads() {
- //noinspection ForLoopReplaceableByForEach
- for(int i = 0; i < this.collectedQuads.size(); i++) {
- this.quadBuf.releaseInstance(this.collectedQuads.get(i));
- }
- this.collectedQuads.clear();
- }
-
- public static ByteBuffer quadsToBuffer(List quads, VertexFormat format) {
- if(!format.canWriteQuads()) {
- throw new IllegalStateException("Vertex format has no quad writer: " + format);
- }
- final ByteBuffer byteBuffer = BufferUtils.createByteBuffer(format.getVertexSize() * quads.size() * 4);
- // noinspection ForLoopReplaceableByForEach
- for (int i = 0, quadsSize = quads.size(); i < quadsSize; i++) {
- format.writeQuad(quads.get(i), byteBuffer);
- }
- byteBuffer.rewind();
- return byteBuffer;
- }
-
- public void storeTranslation() {
- storedTranslation.push();
-
- this.storedTranslation.set(xOffset, yOffset, zOffset);
- }
-
- public void restoreTranslation() {
-
- xOffset = storedTranslation.x;
- yOffset = storedTranslation.y;
- zOffset = storedTranslation.z;
- storedTranslation.pop();
- }
-
- public static int createBrightness(int sky, int block) {
- return sky << 20 | block << 4;
- }
-
- // API from newer MC
- public CapturingTessellator pos(double x, double y, double z) {
- ensureBuffer();
-
- this.rawBuffer[this.rawBufferIndex + 0] = Float.floatToRawIntBits((float)(x + this.xOffset));
- this.rawBuffer[this.rawBufferIndex + 1] = Float.floatToRawIntBits((float)(y + this.yOffset));
- this.rawBuffer[this.rawBufferIndex + 2] = Float.floatToRawIntBits((float)(z + this.zOffset));
-
- return this;
- }
- public CapturingTessellator tex(double u, double v) {
- this.rawBuffer[this.rawBufferIndex + 3] = Float.floatToRawIntBits((float)u);
- this.rawBuffer[this.rawBufferIndex + 4] = Float.floatToRawIntBits((float)v);
- this.hasTexture = true;
-
- return this;
- }
-
- public CapturingTessellator color(float red, float green, float blue, float alpha) {
- return this.color((int)(red * 255.0F), (int)(green * 255.0F), (int)(blue * 255.0F), (int)(alpha * 255.0F));
- }
-
- public CapturingTessellator color(int red, int green, int blue, int alpha) {
- if(this.isColorDisabled) return this;
- red = clamp_int(red, 0, 255);
- green = clamp_int(green, 0, 255);
- blue = clamp_int(blue, 0, 255);
- alpha = clamp_int(alpha, 0, 255);
-
- final int color;
- if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
- color = alpha << 24 | blue << 16 | green << 8 | red;
- } else {
- color = red << 24 | green << 16 | blue << 8 | alpha;
- }
- this.rawBuffer[this.rawBufferIndex + 5] = color;
- this.hasColor = true;
-
- return this;
-
- }
-
- public CapturingTessellator normal(float x, float y, float z) {
- final byte b0 = (byte)((int)(x * 127.0F));
- final byte b1 = (byte)((int)(y * 127.0F));
- final byte b2 = (byte)((int)(z * 127.0F));
-
- this.rawBuffer[this.rawBufferIndex + 6] = b0 & 255 | (b1 & 255) << 8 | (b2 & 255) << 16;
- this.hasNormals = true;
- return this;
- }
-
- public CapturingTessellator lightmap(int skyLight, int blockLight) {
- return brightness(createBrightness(skyLight, blockLight));
- }
-
- public CapturingTessellator brightness(int brightness) {
- this.rawBuffer[this.rawBufferIndex + 7] = brightness;
- this.hasBrightness = true;
-
- return this;
- }
-
- public CapturingTessellator endVertex() {
- this.rawBufferIndex += 8;
- ++this.vertexCount;
-
- return this;
- }
-
- public void ensureBuffer() {
- int rawBufferSize = getRawBufferSize();
- if (rawBufferIndex >= rawBufferSize - 32) {
- if (rawBufferSize == 0) {
- rawBufferSize = 0x10000;
- setRawBufferSize(rawBufferSize);
- rawBuffer = new int[rawBufferSize];
- } else {
- rawBufferSize *= 2;
- setRawBufferSize(rawBufferSize);
- rawBuffer = Arrays.copyOf(rawBuffer, rawBufferSize);
- }
- }
- }
-
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/common/BlockTest.java b/src/main/java/com/gtnewhorizons/angelica/common/BlockTest.java
index f9b7293ed..c6e95d0cf 100644
--- a/src/main/java/com/gtnewhorizons/angelica/common/BlockTest.java
+++ b/src/main/java/com/gtnewhorizons/angelica/common/BlockTest.java
@@ -1,11 +1,11 @@
package com.gtnewhorizons.angelica.common;
-import com.gtnewhorizons.angelica.api.QuadProvider;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadProvider;
+import com.gtnewhorizon.gtnhlib.client.renderer.util.DirectionUtil;
import com.gtnewhorizons.angelica.mixins.interfaces.ModeledBlock;
import com.gtnewhorizons.angelica.utils.AssetLoader;
import lombok.Getter;
import lombok.Setter;
-import me.jellysquid.mods.sodium.common.util.DirectionUtil;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/ExtendedBlockStorageExt.java b/src/main/java/com/gtnewhorizons/angelica/compat/ExtendedBlockStorageExt.java
index 0d87de288..d4dac1828 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/ExtendedBlockStorageExt.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/ExtendedBlockStorageExt.java
@@ -1,7 +1,7 @@
package com.gtnewhorizons.angelica.compat;
import com.falsepattern.chunk.api.DataRegistry;
-import com.gtnewhorizons.angelica.mixins.early.sodium.MixinExtendedBlockStorage;
+import com.gtnewhorizons.angelica.mixins.interfaces.ExtendedBlockStorageAccessor;
import com.gtnewhorizons.angelica.mixins.interfaces.ExtendedNibbleArray;
import com.gtnewhorizons.neid.mixins.interfaces.IExtendedBlockStorageMixin;
@@ -19,7 +19,7 @@ public class ExtendedBlockStorageExt extends ExtendedBlockStorage {
}
public ExtendedBlockStorageExt(Chunk chunk, ExtendedBlockStorage storage) {
- super(((MixinExtendedBlockStorage) storage).getYBase(), storage.getSkylightArray() != null);
+ super(((ExtendedBlockStorageAccessor) storage).getYBase(), storage.getSkylightArray() != null);
if (ModStatus.isChunkAPILoaded) {
if (storage.getSkylightArray() != null) {
@@ -68,7 +68,7 @@ public class ExtendedBlockStorageExt extends ExtendedBlockStorage {
copyNibbleArray((ExtendedNibbleArray) storage.getSkylightArray(), (ExtendedNibbleArray) this.getSkylightArray());
}
}
- ((MixinExtendedBlockStorage) this).setBlockRefCount(((MixinExtendedBlockStorage) storage).getBlockRefCount());
+ ((ExtendedBlockStorageAccessor) this).setBlockRefCount(((ExtendedBlockStorageAccessor) storage).getBlockRefCount());
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/Axis.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/Axis.java
deleted file mode 100644
index 8deecd512..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/Axis.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.gtnewhorizons.angelica.compat.mojang;
-
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
-import net.minecraftforge.common.util.ForgeDirection;
-
-public enum Axis {
- X,
- Y,
- Z;
-
- public static Axis fromDirection(ModelQuadFacing dir) {
- return switch (dir) {
- case DOWN, UP -> Y;
- case NORTH, SOUTH -> Z;
- case WEST, EAST -> X;
- case UNASSIGNED -> null;
- };
- }
-
- public static Axis fromDirection(ForgeDirection dir) {
- return switch (dir) {
- case DOWN, UP -> Y;
- case NORTH, SOUTH -> Z;
- case WEST, EAST -> X;
- case UNKNOWN -> null;
- };
- }
-
- public static Axis fromName(String dir) {
- return switch (dir) {
- case "y" -> Y;
- case "z" -> Z;
- case "x" -> X;
- default -> null;
- };
-
- }
-
- public enum Direction {
- POSITIVE,
- NEGATIVE;
-
- public static Direction fromDirection(ForgeDirection dir) {
- return switch (dir) {
- case DOWN, NORTH, WEST -> NEGATIVE;
- case UP, SOUTH, EAST -> POSITIVE;
- case UNKNOWN -> null;
- };
- }
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/BlockPosImpl.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/BlockPosImpl.java
deleted file mode 100644
index 61eb1b96e..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/BlockPosImpl.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.gtnewhorizons.angelica.compat.mojang;
-
-import com.gtnewhorizon.gtnhlib.util.CoordinatePacker;
-import com.gtnewhorizons.angelica.api.MutableBlockPos;
-import net.minecraft.world.ChunkPosition;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.joml.Vector3i;
-
-
-// Should we keep this?
-public class BlockPosImpl extends Vector3i implements MutableBlockPos {
-
- public BlockPosImpl() {
- super();
- }
- public BlockPosImpl(int x, int y, int z) {
- super(x, y, z);
- }
-
- public BlockPosImpl(ChunkPosition chunkPosition) {
- super(chunkPosition.chunkPosX, chunkPosition.chunkPosY, chunkPosition.chunkPosZ);
- }
-
- @Override
- public int getX() {
- return this.x;
- }
- @Override
- public int getY() {
- return this.y;
- }
- @Override
- public int getZ() {
- return this.z;
- }
-
- @Override
- public BlockPosImpl offset(ForgeDirection d) {
- return new BlockPosImpl(this.x + d.offsetX, this.y + d.offsetY, this.z + d.offsetZ);
- }
-
- @Override
- public BlockPosImpl down() {
- return offset(ForgeDirection.DOWN);
- }
-
- @Override
- public BlockPosImpl up() {
- return offset(ForgeDirection.UP);
- }
-
- @Override
- public long asLong() {
- return CoordinatePacker.pack(this.x, this.y, this.z);
- }
-
- @Override
- public BlockPosImpl set(int x, int y, int z) {
- super.set(x, y, z);
- return this;
- }
-
- @Override
- public BlockPosImpl set(long packedPos) {
- CoordinatePacker.unpack(packedPos, this);
- return this;
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/Camera.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/Camera.java
index 6d5004c4a..1a628b220 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/Camera.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/Camera.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.compat.mojang;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import com.gtnewhorizons.angelica.rendering.RenderingState;
import lombok.Getter;
import net.minecraft.client.Minecraft;
@@ -13,7 +14,7 @@ import org.joml.Vector4f;
@Getter
public class Camera {
final Vector3d pos = new Vector3d();
- final BlockPosImpl blockPos = new BlockPosImpl();
+ final BlockPos blockPos = new BlockPos();
float pitch;
float yaw;
EntityLivingBase entity;
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkOcclusionDataBuilder.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkOcclusionDataBuilder.java
index c7b7da276..ffd3d1603 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkOcclusionDataBuilder.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkOcclusionDataBuilder.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.compat.mojang;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import it.unimi.dsi.fastutil.ints.IntArrayFIFOQueue;
import it.unimi.dsi.fastutil.ints.IntPriorityQueue;
import net.minecraftforge.common.util.ForgeDirection;
@@ -35,12 +36,12 @@ public class ChunkOcclusionDataBuilder {
}
private int openCount = 4096;
- public void markClosed(BlockPosImpl pos) {
+ public void markClosed(BlockPos pos) {
this.closed.set(pack(pos), true);
--this.openCount;
}
- private static int pack(BlockPosImpl pos) {
+ private static int pack(BlockPos pos) {
return pack(pos.getX() & 15, pos.getY() & 15, pos.getZ() & 15);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkPos.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkPos.java
index 9558e261f..2a8be2ca5 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkPos.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkPos.java
@@ -1,5 +1,7 @@
package com.gtnewhorizons.angelica.compat.mojang;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+
// See if we can merge/mixin/extend ChunkCoordIntPair?
public class ChunkPos {
public static long INT_MASK = (1L << Integer.SIZE) - 1;
@@ -12,7 +14,7 @@ public class ChunkPos {
this.z = z;
}
- public ChunkPos(BlockPosImpl pos) {
+ public ChunkPos(BlockPos pos) {
this.x = pos.getX() >> 4;
this.z = pos.getZ() >> 4;
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkSectionPos.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkSectionPos.java
index d17742b8b..943313a32 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkSectionPos.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/ChunkSectionPos.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.compat.mojang;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import org.joml.Vector3i;
// See if we can merge/mixin/extend ChunkPosition maybe?
@@ -19,7 +20,7 @@ public class ChunkSectionPos extends Vector3i {
return new ChunkSectionPos(x, y, z);
}
- public static ChunkSectionPos from(BlockPosImpl pos) {
+ public static ChunkSectionPos from(BlockPos pos) {
return new ChunkSectionPos(getSectionCoord(pos.getX()), getSectionCoord(pos.getY()), getSectionCoord(pos.getZ()));
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/DefaultVertexFormat.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/DefaultVertexFormat.java
deleted file mode 100644
index f5b463ee3..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/DefaultVertexFormat.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.gtnewhorizons.angelica.compat.mojang;
-
-import com.google.common.collect.ImmutableList;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormatElement.Type;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormatElement.Usage;
-import com.gtnewhorizons.angelica.compat.nd.writers.ItemVBOQuadWriter;
-import com.gtnewhorizons.angelica.compat.nd.writers.PositionColorTextureQuadWriter;
-import com.gtnewhorizons.angelica.compat.nd.writers.PositionQuadWriter;
-import com.gtnewhorizons.angelica.compat.nd.writers.PositionTextureColorQuadWriter;
-import com.gtnewhorizons.angelica.compat.nd.writers.PositionTextureQuadWriter;
-
-public class DefaultVertexFormat {
-
- public static final VertexFormatElement POSITION_ELEMENT = new VertexFormatElement(0, Type.FLOAT, Usage.POSITION, 3);
- public static final VertexFormatElement COLOR_ELEMENT = new VertexFormatElement(0, Type.UBYTE, Usage.COLOR, 4);
- public static final VertexFormatElement TEXTURE_ELEMENT = new VertexFormatElement(0, Type.FLOAT, Usage.UV, 2);
- public static final VertexFormatElement LIGHT_ELEMENT = new VertexFormatElement(1, Type.SHORT, Usage.UV, 2);
- // TODO: The overlay element index is wrong, need to find a 1.7.10 equivalent
- public static final VertexFormatElement OVERLAY_ELEMENT = new VertexFormatElement(1, Type.SHORT, Usage.UV, 2);
- public static final VertexFormatElement NORMAL_ELEMENT = new VertexFormatElement(0, Type.BYTE, Usage.NORMAL, 3);
- public static final VertexFormatElement PADDING_ELEMENT = new VertexFormatElement(0, Type.BYTE, Usage.PADDING, 1);
- public static final VertexFormat POSITION_TEXTURE_NORMAL = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(TEXTURE_ELEMENT).add(NORMAL_ELEMENT).add(PADDING_ELEMENT).build(), new ItemVBOQuadWriter());
- public static final VertexFormat POSITION_COLOR_TEXTURE_LIGHT_NORMAL = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(COLOR_ELEMENT).add(TEXTURE_ELEMENT).add(LIGHT_ELEMENT).add(NORMAL_ELEMENT).add(PADDING_ELEMENT).build());
- public static final VertexFormat POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(COLOR_ELEMENT).add(TEXTURE_ELEMENT).add(OVERLAY_ELEMENT).add(LIGHT_ELEMENT).add(NORMAL_ELEMENT).add(PADDING_ELEMENT).build());
- public static final VertexFormat POSITION_TEXTURE_COLOR_LIGHT = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(TEXTURE_ELEMENT).add(COLOR_ELEMENT).add(LIGHT_ELEMENT).build());
- public static final VertexFormat POSITION = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).build(), new PositionQuadWriter());
- public static final VertexFormat POSITION_COLOR = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(COLOR_ELEMENT).build());
- public static final VertexFormat POSITION_COLOR_LIGHT = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(COLOR_ELEMENT).add(LIGHT_ELEMENT).build());
- public static final VertexFormat POSITION_TEXTURE = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(TEXTURE_ELEMENT).build(), new PositionTextureQuadWriter());
- public static final VertexFormat POSITION_COLOR_TEXTURE = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(COLOR_ELEMENT).add(TEXTURE_ELEMENT).build(), new PositionColorTextureQuadWriter());
- public static final VertexFormat POSITION_TEXTURE_COLOR = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(TEXTURE_ELEMENT).add(COLOR_ELEMENT).build(), new PositionTextureColorQuadWriter());
- public static final VertexFormat POSITION_COLOR_TEX_LIGHTMAP = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(COLOR_ELEMENT).add(TEXTURE_ELEMENT).add(LIGHT_ELEMENT).build());
- public static final VertexFormat POSITION_TEXTURE_LIGHT_COLOR = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(TEXTURE_ELEMENT).add(LIGHT_ELEMENT).add(COLOR_ELEMENT).build());
- public static final VertexFormat POSITION_TEXTURE_COLOR_NORMAL = new VertexFormat(new ImmutableList.Builder().add(POSITION_ELEMENT).add(TEXTURE_ELEMENT).add(COLOR_ELEMENT).add(NORMAL_ELEMENT).add(PADDING_ELEMENT).build());
-
-
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexBuffer.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexBuffer.java
deleted file mode 100644
index 578fa5729..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexBuffer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.gtnewhorizons.angelica.compat.mojang;
-
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL15;
-
-import java.nio.ByteBuffer;
-import java.nio.FloatBuffer;
-
-
-public class VertexBuffer implements AutoCloseable {
- private int id;
- private int vertexCount;
- private VertexFormat format;
- private int drawMode;
-
- public VertexBuffer() {
- this.id = GL15.glGenBuffers();
- }
-
- public VertexBuffer(VertexFormat format, int drawMode) {
- this();
- this.format = format;
- this.drawMode = drawMode;
- }
-
- public void bind() {
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, this.id);
- }
-
- public void unbind() {
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
- }
-
- public void upload(ByteBuffer buffer, int vertexCount) {
- if (this.id == -1) return;
- this.vertexCount = vertexCount;
- this.bind();
- GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, GL15.GL_STATIC_DRAW);
- this.unbind();
- }
-
- public VertexBuffer upload(ByteBuffer buffer) {
- if(format == null) throw new IllegalStateException("No format specified for VBO upload");
- upload(buffer, buffer.remaining() / format.getVertexSize());
- return this;
- }
-
- public void close() {
- if (this.id >= 0) {
- GL15.glDeleteBuffers(this.id);
- this.id = -1;
- }
- }
-
- public void draw(FloatBuffer floatBuffer) {
- GL11.glPushMatrix();
- GL11.glLoadIdentity();
- GL11.glMultMatrix(floatBuffer);
- draw();
- GL11.glPopMatrix();
- }
-
- public void draw() {
- GL11.glDrawArrays(drawMode, 0, this.vertexCount);
- }
-
- public void setupState() {
- if(format == null) throw new IllegalStateException("No format specified for VBO setup");
- bind();
- format.setupBufferState(0L);
- }
-
- public void cleanupState() {
- format.clearBufferState();
- unbind();
- }
- public void render() {
- setupState();
- draw();
- cleanupState();
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexFormat.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexFormat.java
deleted file mode 100644
index 732202e74..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexFormat.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.gtnewhorizons.angelica.compat.mojang;
-
-import com.google.common.collect.ImmutableList;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.compat.nd.IWriteQuads;
-import it.unimi.dsi.fastutil.ints.IntArrayList;
-import it.unimi.dsi.fastutil.ints.IntList;
-import lombok.Getter;
-import net.coderbot.iris.block_rendering.BlockRenderingSettings;
-import net.coderbot.iris.vertices.ImmediateState;
-import net.coderbot.iris.vertices.IrisVertexFormats;
-
-import java.nio.ByteBuffer;
-import java.util.List;
-
-public class VertexFormat {
- @Getter
- protected final ImmutableList elements;
- protected final IntList offsets = new IntArrayList();
- @Getter
- protected final int vertexSize;
-
- protected IWriteQuads quadWriter;
-
- public VertexFormat(ImmutableList elements) {
- this(elements, null);
- }
-
- public VertexFormat(ImmutableList elements, IWriteQuads quadWriter) {
- this.elements = elements;
- int i = 0;
- for (VertexFormatElement element : elements) {
- offsets.add(i);
- i += element.getByteSize();
- }
- vertexSize = i;
- this.quadWriter = quadWriter;
- }
-
- public void setupBufferState(long l) {
- if (BlockRenderingSettings.INSTANCE.shouldUseExtendedVertexFormat() && ImmediateState.renderWithExtendedVertexFormat) {
- if (this == DefaultVertexFormat.POSITION_COLOR_TEXTURE_LIGHT_NORMAL || this == DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP) {
- IrisVertexFormats.TERRAIN.setupBufferState(l);
- return;
- } else if (this == DefaultVertexFormat.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL) {
- IrisVertexFormats.ENTITY.setupBufferState(l);
- return;
- }
- }
-
- final int i = this.getVertexSize();
- final List list = this.getElements();
- final int listSize = list.size();
-
- for(int j = 0; j < listSize; ++j) {
- list.get(j).setupBufferState(l + this.offsets.getInt(j), i);
- }
- }
-
- public void clearBufferState() {
- if (BlockRenderingSettings.INSTANCE.shouldUseExtendedVertexFormat() && ImmediateState.renderWithExtendedVertexFormat) {
- if (this == DefaultVertexFormat.POSITION_COLOR_TEXTURE_LIGHT_NORMAL || this == DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP) {
- IrisVertexFormats.TERRAIN.clearBufferState();
- return;
- } else if ( this == DefaultVertexFormat.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL) {
- IrisVertexFormats.ENTITY.clearBufferState();
- return;
- }
- }
- final List list = this.getElements();
- final int listSize = list.size();
-
- for(int i = 0 ; i < listSize; ++i) {
- list.get(i).clearBufferState();
- }
- }
-
- public boolean canWriteQuads() {
- return quadWriter != null;
- }
-
- public void writeQuad(QuadView quad, ByteBuffer byteBuffer) {
- if(quadWriter == null) {
- throw new IllegalStateException("No quad writer set");
- }
- quadWriter.writeQuad(quad, byteBuffer);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexFormatElement.java b/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexFormatElement.java
deleted file mode 100644
index 8259cc760..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/compat/mojang/VertexFormatElement.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.gtnewhorizons.angelica.compat.mojang;
-
-import lombok.Getter;
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL13;
-import org.lwjgl.opengl.GL20;
-
-import java.util.function.IntConsumer;
-
-
-@Getter
-public class VertexFormatElement {
- protected final Type type;
- protected final Usage usage;
- protected final int index;
- protected final int count;
- protected final int byteSize;
-
- public VertexFormatElement(int index, Type type, Usage usage, int count) {
- this.index = index;
- this.type = type;
- this.usage = usage;
- this.count = count;
- this.byteSize = type.getSize() * count;
- }
-
- public void setupBufferState(long offset, int stride) {
- this.usage.setupBufferState(this.count, this.type.getGlType(), stride, offset, this.index);
- }
-
- public void clearBufferState() {
- this.usage.clearBufferState(this.index);
- }
-
- public enum Usage {
- POSITION("Position", (size, type, stride, pointer, index) -> {
- GL11.glVertexPointer(size, type, stride, pointer);
- GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
- }, index -> GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY)),
- NORMAL("Normal", (size, type, stride, pointer, index) -> {
- GL11.glNormalPointer(type, stride, pointer);
- GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY);
- }, index -> GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY)),
- COLOR("Vertex Color", (size, type, stride, pointer, index) -> {
- GL11.glColorPointer(size, type, stride, pointer);
- GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
- }, index -> GL11.glDisableClientState(GL11.GL_COLOR_ARRAY)),
- UV("UV", (size, type, stride, pointer, index) -> {
- GL13.glClientActiveTexture(GL13.GL_TEXTURE0 + index);
- GL11.glTexCoordPointer(size, type, stride, pointer);
- GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- GL13.glClientActiveTexture(GL13.GL_TEXTURE0);
- }, index -> {
- GL13.glClientActiveTexture(GL13.GL_TEXTURE0 + index);
- GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- GL13.glClientActiveTexture(GL13.GL_TEXTURE0);
- }),
- PADDING("Padding", (size, type, stride, pointer, index) -> {}, index-> {}),
- GENERIC("Generic", (size, type, stride, pointer, index) -> {
- GL20.glEnableVertexAttribArray(index);
- GL20.glVertexAttribPointer(index, size, type, false, stride, pointer);
- }, GL20::glDisableVertexAttribArray);
-
- @Getter private final String name;
- private final SetupState setupState;
- private final IntConsumer clearState;
-
- Usage(String name, SetupState setupState, IntConsumer clearState) {
- this.name = name;
- this.setupState = setupState;
- this.clearState = clearState;
- }
-
- private void setupBufferState(int size, int type, int stride, long pointer, int index) {
- this.setupState.setupBufferState(size, type, stride, pointer, index);
- }
-
- public void clearBufferState(int index) {
- this.clearState.accept(index);
- }
-
- interface SetupState {
- void setupBufferState(int size, int type, int stride, long pointer, int index);
- }
- }
-
- @Getter
- public enum Type {
- FLOAT(4, "Float", GL11.GL_FLOAT),
- UBYTE(1, "Unsigned Byte", GL11.GL_UNSIGNED_BYTE),
- BYTE(1, "Byte", GL11.GL_BYTE),
- USHORT(2, "Unsigned Short", GL11.GL_UNSIGNED_SHORT),
- SHORT(2, "Short", GL11.GL_SHORT),
- UINT(4, "Unsigned Int", GL11.GL_UNSIGNED_INT),
- INT(4, "Int", GL11.GL_INT);
-
- private final int size;
- private final String name;
- private final int glType;
-
- Type(int size, String name, int glType) {
- this.size = size;
- this.name = name;
- this.glType = glType;
- }
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/nd/IWriteQuads.java b/src/main/java/com/gtnewhorizons/angelica/compat/nd/IWriteQuads.java
deleted file mode 100644
index 2a3bde9fb..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/compat/nd/IWriteQuads.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.gtnewhorizons.angelica.compat.nd;
-
-import com.gtnewhorizons.angelica.api.QuadView;
-
-import java.nio.ByteBuffer;
-
-public interface IWriteQuads {
- void writeQuad(QuadView quad, ByteBuffer buf);
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/ItemVBOQuadWriter.java b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/ItemVBOQuadWriter.java
index 880b0d211..7faeb0ae3 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/ItemVBOQuadWriter.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/ItemVBOQuadWriter.java
@@ -1,7 +1,7 @@
package com.gtnewhorizons.angelica.compat.nd.writers;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.compat.nd.IWriteQuads;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.writers.IWriteQuads;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionColorTextureQuadWriter.java b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionColorTextureQuadWriter.java
index 31d653af5..c3a022b9a 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionColorTextureQuadWriter.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionColorTextureQuadWriter.java
@@ -1,7 +1,7 @@
package com.gtnewhorizons.angelica.compat.nd.writers;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.compat.nd.IWriteQuads;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.writers.IWriteQuads;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionQuadWriter.java b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionQuadWriter.java
index bb85baef1..719231055 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionQuadWriter.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionQuadWriter.java
@@ -1,7 +1,7 @@
package com.gtnewhorizons.angelica.compat.nd.writers;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.compat.nd.IWriteQuads;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.writers.IWriteQuads;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureColorQuadWriter.java b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureColorQuadWriter.java
index cb13e663e..6add6309b 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureColorQuadWriter.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureColorQuadWriter.java
@@ -1,7 +1,8 @@
package com.gtnewhorizons.angelica.compat.nd.writers;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.compat.nd.IWriteQuads;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.writers.IWriteQuads;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureQuadWriter.java b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureQuadWriter.java
index d15c888f0..fa9858c69 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureQuadWriter.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/nd/writers/PositionTextureQuadWriter.java
@@ -1,7 +1,7 @@
package com.gtnewhorizons.angelica.compat.nd.writers;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.compat.nd.IWriteQuads;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.writers.IWriteQuads;
import java.nio.ByteBuffer;
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderLayer.java b/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderLayer.java
index 821051cd4..ee775cb45 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderLayer.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderLayer.java
@@ -1,8 +1,10 @@
package com.gtnewhorizons.angelica.compat.toremove;
import com.google.common.collect.ImmutableList;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import it.unimi.dsi.fastutil.Hash;
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet;
import lombok.Getter;
@@ -58,7 +60,7 @@ public abstract class RenderLayer extends RenderPhase { // Aka: RenderType (Iris
}
public static RenderLayer getOutline(ResourceLocation texture, RenderPhase.Cull cull) {
- return of("outline", DefaultVertexFormat.POSITION_COLOR_TEXTURE, 7, 256, RenderLayer.MultiPhaseParameters.builder().texture(new RenderPhase.Texture(texture, false, false)).cull(cull).depthTest(ALWAYS_DEPTH_TEST).alpha(ONE_TENTH_ALPHA).texturing(OUTLINE_TEXTURING).fog(NO_FOG).target(OUTLINE_TARGET).build(RenderLayer.OutlineMode.IS_OUTLINE));
+ return of("outline", DefaultVertexFormat.POSITION_COLOR_TEXTURE, 7, 256, RenderLayer.MultiPhaseParameters.builder().texture(new RenderPhase.Texture(texture, false, false)).cull(cull).depthTest(ALWAYS_DEPTH_TEST).alpha(ONE_TENTH_ALPHA).fog(NO_FOG).target(OUTLINE_TARGET).build(RenderLayer.OutlineMode.IS_OUTLINE));
}
public int mode() {
@@ -145,11 +147,10 @@ public abstract class RenderLayer extends RenderPhase { // Aka: RenderType (Iris
private final RenderPhase.Target target;
private final RenderPhase.Texturing texturing;
private final RenderPhase.WriteMaskState writeMaskState;
- private final RenderPhase.LineWidth lineWidth;
private final OutlineMode outlineMode;
private final ImmutableList phases;
- private MultiPhaseParameters(RenderPhase.Texture texture, RenderPhase.Transparency transparency, RenderPhase.DiffuseLighting diffuseLighting, RenderPhase.ShadeModel shadeModel, RenderPhase.Alpha alpha, RenderPhase.DepthTest depthTest, RenderPhase.Cull cull, RenderPhase.Lightmap lightmap, RenderPhase.Fog fog, RenderPhase.Layering layering, RenderPhase.Target target, RenderPhase.Texturing texturing, RenderPhase.WriteMaskState writeMaskState, RenderPhase.LineWidth lineWidth, OutlineMode outlineMode) {
+ private MultiPhaseParameters(RenderPhase.Texture texture, RenderPhase.Transparency transparency, RenderPhase.DiffuseLighting diffuseLighting, RenderPhase.ShadeModel shadeModel, RenderPhase.Alpha alpha, RenderPhase.DepthTest depthTest, RenderPhase.Cull cull, RenderPhase.Lightmap lightmap, RenderPhase.Fog fog, RenderPhase.Layering layering, RenderPhase.Target target, RenderPhase.Texturing texturing, RenderPhase.WriteMaskState writeMaskState, OutlineMode outlineMode) {
this.texture = texture;
this.transparency = transparency;
this.diffuseLighting = diffuseLighting;
@@ -163,9 +164,8 @@ public abstract class RenderLayer extends RenderPhase { // Aka: RenderType (Iris
this.target = target;
this.texturing = texturing;
this.writeMaskState = writeMaskState;
- this.lineWidth = lineWidth;
this.outlineMode = outlineMode;
- this.phases = ImmutableList.of(this.texture, this.transparency, this.diffuseLighting, this.shadeModel, this.alpha, this.depthTest, this.cull, this.lightmap, this.fog, this.layering, this.target, this.texturing, this.writeMaskState, this.lineWidth);
+ this.phases = ImmutableList.of(this.texture, this.transparency, this.diffuseLighting, this.shadeModel, this.alpha, this.depthTest, this.cull, this.lightmap, this.fog, this.layering, this.target, this.texturing, this.writeMaskState);
}
public boolean equals(Object object) {
@@ -205,7 +205,6 @@ public abstract class RenderLayer extends RenderPhase { // Aka: RenderType (Iris
private RenderPhase.Target target;
private RenderPhase.Texturing texturing;
private RenderPhase.WriteMaskState writeMaskState;
- private RenderPhase.LineWidth lineWidth;
private Builder() {
this.texture = RenderPhase.NO_TEXTURE ;
@@ -221,7 +220,6 @@ public abstract class RenderLayer extends RenderPhase { // Aka: RenderType (Iris
this.target = RenderPhase.MAIN_TARGET;
this.texturing = RenderPhase.DEFAULT_TEXTURING;
this.writeMaskState = RenderPhase.ALL_MASK;
- this.lineWidth = RenderPhase.FULL_LINE_WIDTH;
}
public Builder texture(RenderPhase.Texture texture) {
@@ -279,7 +277,7 @@ public abstract class RenderLayer extends RenderPhase { // Aka: RenderType (Iris
}
public MultiPhaseParameters build(OutlineMode outlineMode) {
- return new MultiPhaseParameters(this.texture, this.transparency, this.diffuseLighting, this.shadeModel, this.alpha, this.depthTest, this.cull, this.lightmap, this.fog, this.layering, this.target, this.texturing, this.writeMaskState, this.lineWidth, outlineMode);
+ return new MultiPhaseParameters(this.texture, this.transparency, this.diffuseLighting, this.shadeModel, this.alpha, this.depthTest, this.cull, this.lightmap, this.fog, this.layering, this.target, this.texturing, this.writeMaskState, outlineMode);
}
}
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderPhase.java b/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderPhase.java
index 46d9d363a..f043d9f16 100644
--- a/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderPhase.java
+++ b/src/main/java/com/gtnewhorizons/angelica/compat/toremove/RenderPhase.java
@@ -64,9 +64,6 @@ public abstract class RenderPhase {
protected static final Texture BLOCK_ATLAS_TEXTURE;
protected static final Texture NO_TEXTURE;
protected static final Texturing DEFAULT_TEXTURING;
- protected static final Texturing OUTLINE_TEXTURING;
- protected static final Texturing GLINT_TEXTURING;
- protected static final Texturing ENTITY_GLINT_TEXTURING;
protected static final Lightmap ENABLE_LIGHTMAP;
protected static final Lightmap DISABLE_LIGHTMAP;
protected static final DiffuseLighting ENABLE_DIFFUSE_LIGHTING;
@@ -80,19 +77,12 @@ public abstract class RenderPhase {
protected static final WriteMaskState COLOR_MASK;
protected static final WriteMaskState DEPTH_MASK;
protected static final Layering NO_LAYERING;
- protected static final Layering POLYGON_OFFSET_LAYERING;
- protected static final Layering VIEW_OFFSET_Z_LAYERING;
protected static final Fog NO_FOG;
protected static final Fog FOG;
protected static final Fog BLACK_FOG;
protected static final Target MAIN_TARGET;
protected static final Target OUTLINE_TARGET;
protected static final Target TRANSLUCENT_TARGET;
- protected static final Target PARTICLES_TARGET;
- protected static final Target WEATHER_TARGET;
- protected static final Target CLOUDS_TARGET;
- protected static final Target ITEM_TARGET;
- protected static final LineWidth FULL_LINE_WIDTH;
public RenderPhase(String name, Runnable beginAction, Runnable endAction) {
this.name = name;
@@ -127,20 +117,6 @@ public abstract class RenderPhase {
return this.name;
}
- private static void setupGlintTexturing(float scale) {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.matrixMode(5890);
-// RenderSystem.pushMatrix();
-// RenderSystem.loadIdentity();
-// long l = Util.getMeasuringTimeMs() * 8L;
-// float g = (float)(l % 110000L) / 110000.0F;
-// float h = (float)(l % 30000L) / 30000.0F;
-// RenderSystem.translatef(-g, h, 0.0F);
-// RenderSystem.rotatef(10.0F, 0.0F, 0.0F, 1.0F);
-// RenderSystem.scalef(scale, scale, scale);
-// RenderSystem.matrixMode(5888);
- }
-
private static ResourceLocation ATLAS = TextureMap.locationBlocksTexture;
static {
// TODO: Sodium - SpriteAtlasTexture
@@ -149,29 +125,6 @@ public abstract class RenderPhase {
NO_TEXTURE = new Texture();
DEFAULT_TEXTURING = new Texturing("default_texturing", () -> {
}, () -> {
- });
- OUTLINE_TEXTURING = new Texturing("outline_texturing", () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.setupOutline();
- }, () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.teardownOutline();
- });
- GLINT_TEXTURING = new Texturing("glint_texturing", () -> {
- setupGlintTexturing(8.0F);
- }, () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.matrixMode(5890);
-// RenderSystem.popMatrix();
-// RenderSystem.matrixMode(5888);
- });
- ENTITY_GLINT_TEXTURING = new Texturing("entity_glint_texturing", () -> {
- setupGlintTexturing(0.16F);
- }, () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.matrixMode(5890);
-// RenderSystem.popMatrix();
-// RenderSystem.matrixMode(5888);
});
ENABLE_LIGHTMAP = new Lightmap(true);
DISABLE_LIGHTMAP = new Lightmap(false);
@@ -185,26 +138,7 @@ public abstract class RenderPhase {
ALL_MASK = new WriteMaskState(true, true);
COLOR_MASK = new WriteMaskState(true, false);
DEPTH_MASK = new WriteMaskState(false, true);
- NO_LAYERING = new Layering("no_layering", () -> {
- }, () -> {
- });
- POLYGON_OFFSET_LAYERING = new Layering("polygon_offset_layering", () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.polygonOffset(-1.0F, -10.0F);
-// RenderSystem.enablePolygonOffset();
- }, () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.polygonOffset(0.0F, 0.0F);
-// RenderSystem.disablePolygonOffset();
- });
- VIEW_OFFSET_Z_LAYERING = new Layering("view_offset_z_layering", () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.pushMatrix();
-// RenderSystem.scalef(0.99975586F, 0.99975586F, 0.99975586F);
- }, () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem::popMatrix();
- });
+ NO_LAYERING = new Layering("no_layering", () -> {}, () -> {});
NO_FOG = new Fog("no_fog", () -> {
}, () -> {
});
@@ -246,103 +180,6 @@ public abstract class RenderPhase {
}
});
- PARTICLES_TARGET = new Target("particles_target", () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- throw new RuntimeException("Not Implemented Yet");
-// MinecraftClient.getInstance().worldRenderer.getParticlesFramebuffer().beginWrite(false);
- }
-
- }, () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
- }
-
- });
- WEATHER_TARGET = new Target("weather_target", () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- throw new RuntimeException("Not Implemented Yet");
-// MinecraftClient.getInstance().worldRenderer.getWeatherFramebuffer().beginWrite(false);
- }
-
- }, () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
- }
-
- });
- CLOUDS_TARGET = new Target("clouds_target", () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- throw new RuntimeException("Not Implemented Yet");
-// MinecraftClient.getInstance().worldRenderer.getCloudsFramebuffer().beginWrite(false);
- }
-
- }, () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
- }
-
- });
- ITEM_TARGET = new Target("item_entity_target", () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- throw new RuntimeException("Not Implemented Yet");
-// MinecraftClient.getInstance().worldRenderer.getEntityFramebuffer().beginWrite(false);
- }
-
- }, () -> {
- if (Minecraft.isFancyGraphicsEnabled()) {
- Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
- }
-
- });
- FULL_LINE_WIDTH = new LineWidth(OptionalDouble.of(1.0));
- }
-
-
- public static class LineWidth extends RenderPhase {
- private final OptionalDouble width;
-
- public LineWidth(OptionalDouble optionalDouble) {
- super("line_width", () -> {
- if (!Objects.equals(optionalDouble, OptionalDouble.of(1.0))) {
- if (optionalDouble.isPresent()) {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.lineWidth((float)optionalDouble.getAsDouble());
- } else {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.lineWidth(Math.max(2.5F, (float)MinecraftClient.getInstance().getWindow().getFramebufferWidth() / 1920.0F * 2.5F));
- }
- }
-
- }, () -> {
- if (!Objects.equals(optionalDouble, OptionalDouble.of(1.0))) {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.lineWidth(1.0F);
- }
-
- });
- this.width = optionalDouble;
- }
-
- @Override
- public boolean equals(@Nullable Object object) {
- if (this == object) {
- return true;
- } else if (object != null && this.getClass() == object.getClass()) {
- return !super.equals(object) ? false : Objects.equals(this.width, ((LineWidth)object).width);
- } else {
- return false;
- }
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(super.hashCode(), this.width);
- }
-
- @Override
- public String toString() {
- return this.name + '[' + (this.width.isPresent() ? this.width.getAsDouble() : "window_scale") + ']';
- }
}
@@ -557,93 +394,6 @@ public abstract class RenderPhase {
}
- public static final class PortalTexturing extends Texturing {
- private final int layer;
-
- public PortalTexturing(int layer) {
- super("portal_texturing", () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.matrixMode(5890);
-// RenderSystem.pushMatrix();
-// RenderSystem.loadIdentity();
-// RenderSystem.translatef(0.5F, 0.5F, 0.0F);
-// RenderSystem.scalef(0.5F, 0.5F, 1.0F);
-// RenderSystem.translatef(17.0F / (float)layer, (2.0F + (float)layer / 1.5F) * ((float)(Util.getMeasuringTimeMs() % 800000L) / 800000.0F), 0.0F);
-// RenderSystem.rotatef(((float)(layer * layer) * 4321.0F + (float)layer * 9.0F) * 2.0F, 0.0F, 0.0F, 1.0F);
-// RenderSystem.scalef(4.5F - (float)layer / 4.0F, 4.5F - (float)layer / 4.0F, 1.0F);
-// RenderSystem.mulTextureByProjModelView();
-// RenderSystem.matrixMode(5888);
-// RenderSystem.setupEndPortalTexGen();
- }, () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.matrixMode(5890);
-// RenderSystem.popMatrix();
-// RenderSystem.matrixMode(5888);
-// RenderSystem.clearTexGen();
- });
- this.layer = layer;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- } else if (object != null && this.getClass() == object.getClass()) {
- PortalTexturing lv = (PortalTexturing)object;
- return this.layer == lv.layer;
- } else {
- return false;
- }
- }
-
- @Override
- public int hashCode() {
- return Integer.hashCode(this.layer);
- }
- }
-
-
- public static final class OffsetTexturing extends Texturing {
- private final float x;
- private final float y;
-
- public OffsetTexturing(float x, float y) {
- super("offset_texturing", () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.matrixMode(5890);
-// RenderSystem.pushMatrix();
-// RenderSystem.loadIdentity();
-// RenderSystem.translatef(x, y, 0.0F);
-// RenderSystem.matrixMode(5888);
- }, () -> {
- throw new RuntimeException("Not Implemented Yet");
-// RenderSystem.matrixMode(5890);
-// RenderSystem.popMatrix();
-// RenderSystem.matrixMode(5888);
- });
- this.x = x;
- this.y = y;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- } else if (object != null && this.getClass() == object.getClass()) {
- OffsetTexturing lv = (OffsetTexturing)object;
- return Float.compare(lv.x, this.x) == 0 && Float.compare(lv.y, this.y) == 0;
- } else {
- return false;
- }
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(this.x, this.y);
- }
- }
-
-
public static class Texturing extends RenderPhase {
public Texturing(String string, Runnable runnable, Runnable runnable2) {
super(string, runnable, runnable2);
diff --git a/src/main/java/com/gtnewhorizons/angelica/dynamiclights/DynamicLights.java b/src/main/java/com/gtnewhorizons/angelica/dynamiclights/DynamicLights.java
index 34b2fb1e4..0b96bbdd2 100644
--- a/src/main/java/com/gtnewhorizons/angelica/dynamiclights/DynamicLights.java
+++ b/src/main/java/com/gtnewhorizons/angelica/dynamiclights/DynamicLights.java
@@ -1,8 +1,9 @@
package com.gtnewhorizons.angelica.dynamiclights;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.blockpos.IBlockPos;
import com.gtnewhorizon.gtnhlib.util.CoordinatePacker;
import com.gtnewhorizons.angelica.compat.ModStatus;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
@@ -25,7 +26,6 @@ import net.minecraft.util.MathHelper;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xonin.backhand.api.core.BackhandUtils;
-import xonin.backhand.api.core.IBackhandPlayer;
import java.util.Set;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -195,7 +195,7 @@ public class DynamicLights {
return MathHelper.clamp_double(result, 0, 15);
}
- public double getDynamicLightLevel(@NotNull BlockPosImpl pos) {
+ public double getDynamicLightLevel(@NotNull BlockPos pos) {
return this.getDynamicLightLevel(pos.getX(), pos.getY(), pos.getZ());
}
@@ -229,7 +229,7 @@ public class DynamicLights {
* @param currentLightLevel the current surrounding dynamic light level
* @return the dynamic light level at the specified position
*/
- public static double maxDynamicLightLevel(@NotNull BlockPosImpl pos, @NotNull IDynamicLightSource lightSource, double currentLightLevel) {
+ public static double maxDynamicLightLevel(@NotNull BlockPos pos, @NotNull IDynamicLightSource lightSource, double currentLightLevel) {
return maxDynamicLightLevel(pos.getX(), pos.getY(), pos.getZ(), lightSource, currentLightLevel);
}
@@ -267,7 +267,7 @@ public class DynamicLights {
* @param renderer the renderer
* @param chunkPos the chunk position
*/
- public static void scheduleChunkRebuild(@NotNull SodiumWorldRenderer renderer, @NotNull BlockPosImpl chunkPos) {
+ public static void scheduleChunkRebuild(@NotNull SodiumWorldRenderer renderer, @NotNull IBlockPos chunkPos) {
scheduleChunkRebuild(renderer, chunkPos.getX(), chunkPos.getY(), chunkPos.getZ());
}
@@ -292,7 +292,7 @@ public class DynamicLights {
* @param old the set of old chunk coordinates to remove this chunk from it
* @param newPos the set of new chunk coordinates to add this chunk to it
*/
- public static void updateTrackedChunks(@NotNull BlockPosImpl chunkPos, @Nullable LongOpenHashSet old, @Nullable LongOpenHashSet newPos) {
+ public static void updateTrackedChunks(@NotNull IBlockPos chunkPos, @Nullable LongOpenHashSet old, @Nullable LongOpenHashSet newPos) {
if (old != null || newPos != null) {
final long pos = chunkPos.asLong();
if (old != null)
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/Feature.java b/src/main/java/com/gtnewhorizons/angelica/glsm/Feature.java
index 3d85969e3..f4bb5ae06 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/Feature.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/Feature.java
@@ -1,7 +1,7 @@
package com.gtnewhorizons.angelica.glsm;
import com.google.common.collect.ImmutableSet;
-import com.gtnewhorizons.angelica.glsm.stacks.IStateStack;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import org.lwjgl.opengl.GL11;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/GLStateManager.java b/src/main/java/com/gtnewhorizons/angelica/glsm/GLStateManager.java
index 292a18455..9e9d82fbb 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/GLStateManager.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/GLStateManager.java
@@ -1,5 +1,7 @@
package com.gtnewhorizons.angelica.glsm;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VBOManager;
import com.gtnewhorizons.angelica.AngelicaMod;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import com.gtnewhorizons.angelica.glsm.stacks.AlphaStateStack;
@@ -9,7 +11,6 @@ import com.gtnewhorizons.angelica.glsm.stacks.Color4Stack;
import com.gtnewhorizons.angelica.glsm.stacks.ColorMaskStack;
import com.gtnewhorizons.angelica.glsm.stacks.DepthStateStack;
import com.gtnewhorizons.angelica.glsm.stacks.FogStateStack;
-import com.gtnewhorizons.angelica.glsm.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.stacks.IntegerStateStack;
import com.gtnewhorizons.angelica.glsm.stacks.LightModelStateStack;
import com.gtnewhorizons.angelica.glsm.stacks.LightStateStack;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/TessellatorManager.java b/src/main/java/com/gtnewhorizons/angelica/glsm/TessellatorManager.java
deleted file mode 100644
index 472b8fe5e..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/TessellatorManager.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.gtnewhorizons.angelica.glsm;
-
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.client.renderer.CapturingTessellator;
-import com.gtnewhorizons.angelica.compat.mojang.VertexBuffer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
-import net.minecraft.client.renderer.Tessellator;
-import org.lwjgl.opengl.GL11;
-
-import java.nio.ByteBuffer;
-import java.util.List;
-
-@SuppressWarnings("unused")
-public class TessellatorManager {
- private static final ThreadLocal capturingTessellator = ThreadLocal.withInitial(CapturingTessellator::new);
-
- private static final ThreadLocal currentlyCapturing = ThreadLocal.withInitial(() -> Boolean.FALSE);
- private static final Thread mainThread = Thread.currentThread();
-
- public static Tessellator get() {
- if(currentlyCapturing.get()) {
- return capturingTessellator.get();
- } else if(isOnMainThread()) {
- return Tessellator.instance;
- } else {
- // TODO: Verify this works correctly and nothing unexpected is grabbing a tessellator off the main thread
- // when not capturing
- throw new IllegalStateException("Tried to get the Tessellator off the main thread when not capturing!");
- }
- }
-
- public static boolean isOnMainThread() {
- return Thread.currentThread() == mainThread;
- }
-
- public static boolean isMainInstance(Object instance) {
- return instance == Tessellator.instance || isOnMainThread();
- }
-
- public static void startCapturing() {
- if(currentlyCapturing.get()) throw new IllegalStateException("Tried to start capturing when already capturing!");
- final CapturingTessellator tess = capturingTessellator.get();
- if(tess.getQuads().size() > 0) throw new IllegalStateException("Tried to start capturing with existing collected Quads!");
- tess.storeTranslation();
-
- currentlyCapturing.set(true);
- }
-
- /*
- * Stop the CapturingTessellator and return the pooled quads. The quads are valid until clearQuads() is
- * called on the CapturingTesselator, which must be done before starting capturing again.
- */
- public static List stopCapturingToPooledQuads() {
- if(!currentlyCapturing.get()) throw new IllegalStateException("Tried to stop capturing when not capturing!");
- currentlyCapturing.set(false);
- final CapturingTessellator tess = capturingTessellator.get();
-
- // Be sure we got all the quads
- if(tess.isDrawing) tess.draw();
-
- final List quads = tess.getQuads();
- tess.discard();
- tess.restoreTranslation();
-
- return quads;
- }
-
- /*
- * Stops the CapturingTessellator, stores the quads in a buffer (based on the VertexFormat provided),
- * and clears the quads.
- */
- public static ByteBuffer stopCapturingToBuffer(VertexFormat format) {
- final ByteBuffer buf = CapturingTessellator.quadsToBuffer(stopCapturingToPooledQuads(), format);
- capturingTessellator.get().clearQuads();
- return buf;
- }
-
- /*
- * Stops the CapturingTessellator, stores the quads in a buffer (based on the VertexFormat provided),
- * uploads the buffer to a new VertexBuffer, and clears the quads.
- */
- public static VertexBuffer stopCapturingToVBO(VertexFormat format) {
- return new VertexBuffer(format, GL11.GL_QUADS).upload(stopCapturingToBuffer(format));
- }
-
- static {
- System.out.println("[TessellatorManager] Initialized on thread " + mainThread.getName());
- }
-
- public static void cleanup() {
- // Ensure we've cleaned everything up
- final CapturingTessellator tessellator = capturingTessellator.get();
-
- currentlyCapturing.set(false);
- tessellator.discard();
- tessellator.clearQuads();
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/VBOManager.java b/src/main/java/com/gtnewhorizons/angelica/glsm/VBOManager.java
deleted file mode 100644
index 382eb512d..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/VBOManager.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.gtnewhorizons.angelica.glsm;
-
-import com.gtnewhorizons.angelica.compat.mojang.VertexBuffer;
-import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
-import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-
-public class VBOManager {
- // Not thread safe, only expected to be called from the main thread
-
- private static int nextDisplayList = Integer.MIN_VALUE;
-
- private static int getNextDisplayList() {
- return nextDisplayList++;
- }
-
- private static Int2ObjectMap vertexBuffers = new Int2ObjectOpenHashMap<>();
-
- /*
- * Allocate a (range) of "display list IDs" that will refer to a VBO in the arraylist of vertex buffers.
- */
- public static int generateDisplayLists(int range) {
- if(range < 1) throw new IllegalArgumentException("Range must be at least 1!");
-
- final int id = getNextDisplayList();
- for (int i = 1; i < range; i++) {
- // Reserve, but don't use, the rest in the range
- getNextDisplayList();
- }
- // Return the first in the range
- return id;
- }
-
- public static VertexBuffer registerVBO(int displayList, VertexBuffer vertexBuffer) {
- if(displayList > 0) throw new IllegalArgumentException("Display list must be negative!");
- displayList -= Integer.MIN_VALUE;
-
- vertexBuffers.put(displayList, vertexBuffer);
- return vertexBuffer;
- }
-
- public static VertexBuffer get(int list) {
- list -= Integer.MIN_VALUE;
- return vertexBuffers.getOrDefault(list, null);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/AlphaStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/AlphaStateStack.java
index 30e77b0e8..f062233b0 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/AlphaStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/AlphaStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.AlphaState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BlendStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BlendStateStack.java
index e5ab113c0..2f1e6e116 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BlendStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BlendStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.BlendState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BooleanStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BooleanStateStack.java
index 4d4eaa9e5..72478ef6f 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BooleanStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/BooleanStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.BooleanState;
import org.lwjgl.opengl.GL11;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/Color4Stack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/Color4Stack.java
index 3010e394e..2a92e7a13 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/Color4Stack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/Color4Stack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.Color4;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ColorMaskStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ColorMaskStack.java
index 2be9f9abf..16455e632 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ColorMaskStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ColorMaskStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.ColorMask;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/DepthStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/DepthStateStack.java
index 8494e08cb..5c3e77ad3 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/DepthStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/DepthStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.DepthState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/FogStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/FogStateStack.java
index 50e824bf7..cdf618e37 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/FogStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/FogStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.FogState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/IStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/IStateStack.java
deleted file mode 100644
index 82cd1003a..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/IStateStack.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.gtnewhorizons.angelica.glsm.stacks;
-
-public interface IStateStack{
-
- T push();
-
- T pop();
-
- boolean isEmpty();
-
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/IntegerStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/IntegerStateStack.java
index 42889120b..241c7f2da 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/IntegerStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/IntegerStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.IntegerState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightModelStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightModelStateStack.java
index 441366f4c..3ce390369 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightModelStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightModelStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.LightModelState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightStateStack.java
index f7a05694e..30ef77eed 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/LightStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.LightState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MaterialStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MaterialStateStack.java
index 12750d7af..25e8e2dc9 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MaterialStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MaterialStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.MaterialState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MatrixModeStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MatrixModeStack.java
index e59cbb751..cb5bd421a 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MatrixModeStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/MatrixModeStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.MatrixMode;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/TextureBindingStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/TextureBindingStack.java
index e5b2c2465..7d027e8f6 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/TextureBindingStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/TextureBindingStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.TextureBinding;
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/Vector3dStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/Vector3dStack.java
deleted file mode 100644
index 3b60ae5d6..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/Vector3dStack.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.gtnewhorizons.angelica.glsm.stacks;
-
-import com.gtnewhorizons.angelica.glsm.GLStateManager;
-import org.joml.Vector3d;
-
-public class Vector3dStack extends Vector3d implements IStateStack {
- protected final Vector3d[] stack;
-
- protected int pointer;
-
- public Vector3dStack() {
- stack = new Vector3d[GLStateManager.MAX_ATTRIB_STACK_DEPTH];
- for (int i = 0; i < GLStateManager.MAX_ATTRIB_STACK_DEPTH; i++) {
- stack[i] = new Vector3d();
- }
- }
-
- @Override
- public Vector3dStack push() {
- if(pointer == stack.length) {
- throw new IllegalStateException("Stack overflow size " + (pointer + 1) + " reached");
- }
- stack[pointer++].set(this);
- return this;
- }
-
- @Override
- public Vector3dStack pop() {
- if(pointer == 0) {
- throw new IllegalStateException("Stack underflow");
- }
- set(stack[--pointer]);
- return this;
- }
-
- public boolean isEmpty() {
- return pointer == 0;
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ViewPortStateStack.java b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ViewPortStateStack.java
index 94ebba5dd..7eba221b5 100644
--- a/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ViewPortStateStack.java
+++ b/src/main/java/com/gtnewhorizons/angelica/glsm/stacks/ViewPortStateStack.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.glsm.stacks;
+import com.gtnewhorizon.gtnhlib.client.renderer.stacks.IStateStack;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.states.ViewportState;
diff --git a/src/main/java/com/gtnewhorizons/angelica/hudcaching/HUDCaching.java b/src/main/java/com/gtnewhorizons/angelica/hudcaching/HUDCaching.java
index 7b7c3fce8..c675dfaaf 100644
--- a/src/main/java/com/gtnewhorizons/angelica/hudcaching/HUDCaching.java
+++ b/src/main/java/com/gtnewhorizons/angelica/hudcaching/HUDCaching.java
@@ -3,9 +3,12 @@ package com.gtnewhorizons.angelica.hudcaching;
import java.util.ArrayList;
import java.util.List;
+import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
import com.gtnewhorizons.angelica.compat.ModStatus;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
-import com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching.RenderGameOverlayEventAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.GuiIngameAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.GuiIngameForgeAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.RenderGameOverlayEventAccessor;
import com.kentington.thaumichorizons.common.ThaumicHorizons;
import cpw.mods.fml.common.eventhandler.EventPriority;
import net.dries007.holoInventory.client.Renderer;
@@ -15,9 +18,6 @@ import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL30;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
-import com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching.GuiIngameAccessor;
-import com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching.GuiIngameForgeAccessor;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
diff --git a/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java b/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java
index af0c54e93..0dbcbbc68 100644
--- a/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java
+++ b/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java
@@ -107,9 +107,6 @@ public class AngelicaTweaker implements IFMLLoadingPlugin, IEarlyMixinLoader {
@Override
public List getMixins(Set loadedCoreMods) {
- // TODO: Sodium
-// mixins.addAll(getNotFineMixins(loadedCoreMods));
-// mixins.addAll(getArchaicMixins(loadedCoreMods));
return Mixins.getEarlyMixins(loadedCoreMods);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java b/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java
index f573c38b9..4932eedad 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java
@@ -122,7 +122,6 @@ public enum Mixins {
,"sodium.MixinRenderBlocks"
,"sodium.MixinRenderGlobal"
,"sodium.MixinWorldClient"
- ,"sodium.MixinTessellator"
,"sodium.MixinTileEntity"
,"sodium.MixinEffectRenderer"
,"sodium.MixinTileEntityRendererDispatcher"
@@ -157,12 +156,12 @@ public enum Mixins {
IRIS_ACCESSORS(new Builder("Iris Accessors").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT)
.setPhase(Phase.EARLY).setApplyIf(() -> AngelicaConfig.enableIris).addMixinClasses(
- "shaders.accessors.MinecraftAccessor"
- ,"shaders.accessors.EntityRendererAccessor"
- ,"shaders.accessors.SimpleTextureAccessor"
- ,"shaders.accessors.TextureAtlasSpriteAccessor"
- ,"shaders.accessors.TextureMapAccessor"
- ,"shaders.accessors.AnimationMetadataSectionAccessor"
+ "shaders.accessors.MixinMinecraft"
+ ,"shaders.accessors.MixinEntityRenderer"
+ ,"shaders.accessors.MixinSimpleTexture"
+ ,"shaders.accessors.MixinTextureAtlasSprite"
+ ,"shaders.accessors.MixinTextureMap"
+ ,"shaders.accessors.MixinAnimationMetadataSection"
)
),
@@ -175,9 +174,9 @@ public enum Mixins {
HUD_CACHING(new Builder("Renders the HUD elements 20 times per second maximum to improve performance")
.addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT).setPhase(Phase.EARLY)
.setApplyIf(() -> AngelicaConfig.enableHudCaching).addMixinClasses(
- "angelica.hudcaching.GuiIngameAccessor",
- "angelica.hudcaching.GuiIngameForgeAccessor",
- "angelica.hudcaching.RenderGameOverlayEventAccessor",
+ "angelica.hudcaching.MixinGuiIngame",
+ "angelica.hudcaching.MixinGuiIngameForge",
+ "angelica.hudcaching.MixinRenderGameOverlayEvent",
"angelica.hudcaching.MixinEntityRenderer_HUDCaching",
"angelica.hudcaching.MixinFramebuffer_HUDCaching",
"angelica.hudcaching.MixinGuiIngame_HUDCaching",
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/GuiIngameAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/GuiIngameAccessor.java
deleted file mode 100644
index 959e9b132..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/GuiIngameAccessor.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-import net.minecraft.client.gui.GuiIngame;
-
-@Mixin(GuiIngame.class)
-public interface GuiIngameAccessor {
- @Invoker
- void callRenderVignette(float brightness, int width, int height);
-
- @Invoker
- void callRenderPumpkinBlur(int width, int height);
-
- @Invoker("func_130015_b")
- void callRenderPortal(float partialTicks, int width, int height);
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinWavefrontObject.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinWavefrontObject.java
deleted file mode 100644
index 8fadf7633..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinWavefrontObject.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.gtnewhorizons.angelica.mixins.early.angelica.vbo;
-
-import com.gtnewhorizons.angelica.client.renderer.CapturingTessellator;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexBuffer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
-import com.gtnewhorizons.angelica.mixins.interfaces.IModelCustomExt;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraftforge.client.model.obj.GroupObject;
-import net.minecraftforge.client.model.obj.WavefrontObject;
-import org.lwjgl.opengl.GL11;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Overwrite;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.Unique;
-
-@Mixin(value = WavefrontObject.class, remap = false)
-public abstract class MixinWavefrontObject implements IModelCustomExt {
- @Unique private VertexBuffer vertexBuffer;
-
- @Shadow private GroupObject currentGroupObject;
-
- @Shadow public abstract void tessellateAll(Tessellator tessellator);
-
- @Unique VertexFormat format = DefaultVertexFormat.POSITION_TEXTURE_NORMAL;
-
- @Override
- public void rebuildVBO() {
- if(currentGroupObject == null) {
- throw new RuntimeException("No group object selected");
- }
- if (this.vertexBuffer != null) {
- this.vertexBuffer.close();
- }
- TessellatorManager.startCapturing();
- final CapturingTessellator tess = (CapturingTessellator) TessellatorManager.get();
- tess.startDrawing(currentGroupObject.glDrawingMode);
- tessellateAll(tess);
-
- this.vertexBuffer = TessellatorManager.stopCapturingToVBO(format);
- }
-
- @Override
- public void renderAllVBO() {
- if(vertexBuffer == null) {
- rebuildVBO();
- }
- vertexBuffer.render();
- }
-
- /**
- * @author mitchej123
- * @reason Force all models to use VBOs
- */
- @SideOnly(Side.CLIENT)
- @Overwrite
- public void renderAll() {
- renderAllVBO();
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTessellator.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTessellator.java
deleted file mode 100644
index d5efd1f5c..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTessellator.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.gtnewhorizons.angelica.mixins.early.sodium;
-
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
-import com.gtnewhorizons.angelica.mixins.interfaces.ITessellatorInstance;
-import net.minecraft.client.renderer.Tessellator;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.Redirect;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-import java.nio.Buffer;
-import java.nio.ByteBuffer;
-
-@Mixin(Tessellator.class)
-public abstract class MixinTessellator implements ITessellatorInstance {
- @Shadow public int vertexCount;
- @Shadow public boolean isDrawing;
- public float angelica$normalX;
- public float angelica$normalY;
- public float angelica$normalZ;
- public float angelica$midTextureU;
- public float angelica$midTextureV;
-
- @Shadow public abstract void reset();
-
- /**
- * @reason Allow using multiple tessellator instances concurrently by removing static field access in alternate instances.
- **/
- @Redirect(method = "reset", at = @At(value = "INVOKE", target = "Ljava/nio/ByteBuffer;clear()Ljava/nio/Buffer;"))
- private Buffer removeStaticBufferResetOutsideSingleton(ByteBuffer buffer) {
- if(TessellatorManager.isMainInstance(this)) {
- return buffer.clear();
- }
- return buffer;
- }
-
- @Inject(method="draw", at=@At("HEAD"))
- private void preventOffMainThreadDrawing(CallbackInfoReturnable cir) {
- if(!TessellatorManager.isMainInstance(this)) {
- throw new RuntimeException("Tried to draw on a tessellator that isn't on the main thread!");
- }
- }
-
- @Inject(method = "setNormal(FFF)V", at = @At("HEAD"))
- private void angelica$captureNormalComponents(float x, float y, float z, CallbackInfo ci) {
- this.angelica$normalX = x;
- this.angelica$normalY = y;
- this.angelica$normalZ = z;
- }
-
-
- // New methods from ITesselatorInstance
- @Override
- public void discard() {
- isDrawing = false;
- reset();
- }
-
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/AnimationMetadataSectionAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/AnimationMetadataSectionAccessor.java
new file mode 100644
index 000000000..cd9372809
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/AnimationMetadataSectionAccessor.java
@@ -0,0 +1,14 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import org.spongepowered.asm.mixin.Mutable;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+public interface AnimationMetadataSectionAccessor {
+ int getFrameWidth();
+
+ void setFrameWidth(int frameWidth);
+
+ int getFrameHeight();
+
+ void setFrameHeight(int frameHeight);
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/EntityRendererAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/EntityRendererAccessor.java
new file mode 100644
index 000000000..f5b8cac3e
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/EntityRendererAccessor.java
@@ -0,0 +1,7 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import net.minecraft.entity.player.EntityPlayer;
+
+public interface EntityRendererAccessor {
+ float invokeGetNightVisionBrightness(EntityPlayer entityPlayer, float partialTicks);
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ExtendedBlockStorageAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ExtendedBlockStorageAccessor.java
new file mode 100644
index 000000000..080ac2567
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ExtendedBlockStorageAccessor.java
@@ -0,0 +1,9 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+public interface ExtendedBlockStorageAccessor {
+ int getYBase();
+ int getBlockRefCount();
+ void setBlockRefCount(int blockRefCount);
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/GuiIngameAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/GuiIngameAccessor.java
new file mode 100644
index 000000000..733d930ed
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/GuiIngameAccessor.java
@@ -0,0 +1,9 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+public interface GuiIngameAccessor {
+ void callRenderVignette(float brightness, int width, int height);
+
+ void callRenderPumpkinBlur(int width, int height);
+
+ void callRenderPortal(float partialTicks, int width, int height);
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/GuiIngameForgeAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/GuiIngameForgeAccessor.java
similarity index 53%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/GuiIngameForgeAccessor.java
rename to src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/GuiIngameForgeAccessor.java
index 94b4f99b9..0cfe6c314 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/GuiIngameForgeAccessor.java
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/GuiIngameForgeAccessor.java
@@ -1,24 +1,14 @@
-package com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Invoker;
+package com.gtnewhorizons.angelica.mixins.interfaces;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.client.GuiIngameForge;
-@Mixin(GuiIngameForge.class)
public interface GuiIngameForgeAccessor {
-
- @Invoker(remap = false)
void callRenderCrosshairs(int width, int height);
-
- @Invoker(remap = false)
+
void callRenderHelmet(ScaledResolution res, float partialTicks, boolean hasScreen, int mouseX, int mouseY);
-
- @Invoker(remap = false)
+
void callRenderPortal(int width, int height, float partialTicks);
-
- @Invoker(remap = false)
+
void callBind(ResourceLocation res);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/IModelCustomExt.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/IModelCustomExt.java
deleted file mode 100644
index ebf4b73f1..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/IModelCustomExt.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.gtnewhorizons.angelica.mixins.interfaces;
-
-import cpw.mods.fml.relauncher.SideOnly;
-import net.minecraftforge.client.model.IModelCustom;
-
-import static cpw.mods.fml.relauncher.Side.CLIENT;
-
-public interface IModelCustomExt extends IModelCustom {
- @SideOnly(CLIENT)
- void rebuildVBO();
-
- @SideOnly(CLIENT)
- void renderAllVBO();
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ITessellatorInstance.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ITessellatorInstance.java
deleted file mode 100644
index 6acb27348..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ITessellatorInstance.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.gtnewhorizons.angelica.mixins.interfaces;
-
-public interface ITessellatorInstance {
- void discard();
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/MinecraftAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/MinecraftAccessor.java
new file mode 100644
index 000000000..69cd7eca7
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/MinecraftAccessor.java
@@ -0,0 +1,7 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import net.minecraft.util.Timer;
+
+public interface MinecraftAccessor {
+ Timer getTimer();
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ModeledBlock.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ModeledBlock.java
index fd925d46c..0c11144ec 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ModeledBlock.java
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/ModeledBlock.java
@@ -1,6 +1,6 @@
package com.gtnewhorizons.angelica.mixins.interfaces;
-import com.gtnewhorizons.angelica.api.QuadProvider;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadProvider;
public interface ModeledBlock {
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/RenderGameOverlayEventAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/RenderGameOverlayEventAccessor.java
new file mode 100644
index 000000000..89c82a260
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/RenderGameOverlayEventAccessor.java
@@ -0,0 +1,13 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import net.minecraft.client.gui.ScaledResolution;
+
+public interface RenderGameOverlayEventAccessor {
+ void setPartialTicks(float value);
+
+ void setResolution(ScaledResolution resolution);
+
+ void setMouseX(int mouseX);
+
+ void setMouseY(int mouseY);
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/SimpleTextureAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/SimpleTextureAccessor.java
new file mode 100644
index 000000000..a11e039af
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/SimpleTextureAccessor.java
@@ -0,0 +1,7 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import net.minecraft.util.ResourceLocation;
+
+public interface SimpleTextureAccessor {
+ ResourceLocation getLocation();
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TextureAtlasSpriteAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TextureAtlasSpriteAccessor.java
new file mode 100644
index 000000000..c4b05a518
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TextureAtlasSpriteAccessor.java
@@ -0,0 +1,21 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import net.minecraft.client.resources.data.AnimationMetadataSection;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+import java.util.List;
+
+public interface TextureAtlasSpriteAccessor {
+ AnimationMetadataSection getMetadata();
+
+ List getFramesTextureData();
+
+ int getFrame();
+
+ void setFrame(int frame);
+
+ int getSubFrame();
+
+ void setSubFrame(int subFrame);
+
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TextureMapAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TextureMapAccessor.java
new file mode 100644
index 000000000..e32c4c320
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TextureMapAccessor.java
@@ -0,0 +1,16 @@
+package com.gtnewhorizons.angelica.mixins.interfaces;
+
+import net.minecraft.util.ResourceLocation;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+import java.util.Map;
+
+public interface TextureMapAccessor {
+ Map getMapUploadedSprites();
+
+ int getAnisotropicFiltering();
+
+ int getMipmapLevels();
+
+ ResourceLocation getLocationBlocksTexture();
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/DynamicCubeModel.java b/src/main/java/com/gtnewhorizons/angelica/models/DynamicCubeModel.java
deleted file mode 100644
index bc4b43acd..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/DynamicCubeModel.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.gtnewhorizons.angelica.models;
-
-import com.gtnewhorizons.angelica.api.BlockPos;
-import com.gtnewhorizons.angelica.api.QuadBuilder;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.QuadView;
-import it.unimi.dsi.fastutil.objects.ObjectArrayList;
-import it.unimi.dsi.fastutil.objects.ObjectImmutableList;
-import net.minecraft.block.Block;
-import net.minecraft.util.IIcon;
-import net.minecraft.world.IBlockAccess;
-import net.minecraftforge.common.util.ForgeDirection;
-
-import java.util.List;
-import java.util.Random;
-import java.util.function.Supplier;
-
-public class DynamicCubeModel implements QuadProvider {
-
- /*
- * By the power of ~~theft~~ inspiration, this class is wayyy simpler.
- * It's also a basic example of dynamic model building.
- */
-
- public static final ThreadLocal INSTANCE = ThreadLocal.withInitial(DynamicCubeModel::new);
- private final NdQuadBuilder builder = new NdQuadBuilder();
- private static final List EMPTY = ObjectImmutableList.of();
- private final List ONE = new ObjectArrayList<>(1);
-
- public DynamicCubeModel() {
-
- this.ONE.add(null);
- }
-
- @Override
- public boolean isDynamic() {
- return true;
- }
-
- @Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
-
- if (dir == ForgeDirection.UNKNOWN)
- return EMPTY;
-
- this.builder.square(dir, 0, 0, 1, 1, 0);
- final IIcon tex = block.getIcon(dir.ordinal(), meta);
- this.builder.spriteBake(tex, QuadBuilder.BAKE_LOCK_UV);
-
- this.builder.setColors(color);
-
- ONE.set(0, this.builder.build(quadPool.get()));
- return ONE;
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/GeometryHelper.java b/src/main/java/com/gtnewhorizons/angelica/models/GeometryHelper.java
deleted file mode 100644
index 00b7aa74e..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/GeometryHelper.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.gtnewhorizons.angelica.models;
-
-import com.gtnewhorizons.angelica.compat.mojang.Axis;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.joml.Matrix4f;
-import org.joml.Vector3f;
-
-import static me.jellysquid.mods.sodium.client.util.MathUtil.fuzzy_eq;
-
-/**
- * Static routines of general utility for renderer implementations.
- * Renderers are not required to use these helpers, but they were
- * designed to be usable without the default renderer.
- */
-public abstract class GeometryHelper {
-
- /**
- * Returns true if quad is parallel to the given face.
- * Does not validate quad winding order.
- * Expects convex quads with all points co-planar.
- */
- public static boolean isQuadParallelToFace(ForgeDirection face, NdQuadBuilder quad) {
- int i = Axis.fromDirection(face).ordinal();
- final float val = quad.posByIndex(0, i);
- return fuzzy_eq(val, quad.posByIndex(1, i)) && fuzzy_eq(val, quad.posByIndex(2, i)) && fuzzy_eq(val, quad.posByIndex(3, i));
- }
-
- /**
- * Identifies the face to which the quad is most closely aligned.
- * This mimics the value that {@link Quad#getLightFace()} returns, and is
- * used in the vanilla renderer for all diffuse lighting.
- *
- * Derived from the quad face normal and expects convex quads with all points co-planar.
- */
- public static ForgeDirection lightFace(NdQuadBuilder quad) {
- final Vector3f normal = quad.faceNormal;
- return coerceVector(normal);
- }
-
- /**
- * Returns the direction closest to the given vector.
- */
- private static ForgeDirection coerceVector(Vector3f v) {
- return switch (GeometryHelper.longestAxis(v)) {
- case X -> v.x() > 0 ? ForgeDirection.EAST : ForgeDirection.WEST;
- case Y -> v.y() > 0 ? ForgeDirection.UP : ForgeDirection.DOWN;
- case Z -> v.z() > 0 ? ForgeDirection.SOUTH : ForgeDirection.NORTH;
- default -> ForgeDirection.UP; // handle WTF case
- };
- }
-
- /**
- * @see #longestAxis(float, float, float)
- */
- public static Axis longestAxis(Vector3f vec) {
- return longestAxis(vec.x(), vec.y(), vec.z());
- }
-
- /**
- * Identifies the largest (max absolute magnitude) component (X, Y, Z) in the given vector.
- */
- public static Axis longestAxis(float normalX, float normalY, float normalZ) {
- Axis result = Axis.Y;
- float longest = Math.abs(normalY);
- float a = Math.abs(normalX);
-
- if (a > longest) {
- result = Axis.X;
- longest = a;
- }
-
- return Math.abs(normalZ) > longest
- ? Axis.Z : result;
- }
-
- /**
- * Rotates the given direction by the matrix, and returns the closest direction to the output.
- */
- public static ForgeDirection rotate(ForgeDirection d, Matrix4f rotMat) {
- return rotate(d, rotMat, new Vector3f());
- }
-
- /**
- * See {@link #rotate(ForgeDirection, Matrix4f)}. This overload allows you to pass a scratch vector instead.
- */
- public static ForgeDirection rotate(ForgeDirection d, Matrix4f rotMat, Vector3f v) {
- return coerceVector(v.set(d.offsetX, d.offsetY, d.offsetZ).mulPosition(rotMat));
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/LICENSE b/src/main/java/com/gtnewhorizons/angelica/models/LICENSE
deleted file mode 100644
index 194e2391f..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/LICENSE
+++ /dev/null
@@ -1,208 +0,0 @@
-This package is licensed under the LGPLv3 for the general public, as noted in the main license file.
-
-The original files were licensed under the Apache License, Version 2.0.
-Copyright (c) 2016, 2017, 2018, 2019 FabricMC
-
-Fabric may use this package under either the LGPLv3 or the Apache License, Version 2.0, reproduced below.
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/Material.java b/src/main/java/com/gtnewhorizons/angelica/models/Material.java
deleted file mode 100644
index 6f4fdada5..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/Material.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.gtnewhorizons.angelica.models;
-
-import org.antlr.v4.codegen.model.TestSetInline;
-
-import java.util.BitSet;
-
-public class Material {
-
- /**
- * The following masks control whether the property is enabled.
- */
-
- // If true, renders face as fullbright
- private static final int EMISSIVE_MASK = 1;
- private static final int COLOR_MASK = 1 << 1;
- // If true, uses diffuse shading/shadows
- private static final int DIFFUSE_MASK = 1 << 2;
- private static final int AO_MASK = 1 << 3;
-
- // By default, quads use diffuse shading and AO
- private static final int DEFAULTS = DIFFUSE_MASK | AO_MASK;
-
- private int flags = DEFAULTS;
-
- public void reset() {
- this.flags = DEFAULTS;
- }
-
- private void setMask(int mask, boolean val) {
- if (val)
- this.flags |= mask;
- else
- this.flags &= ~mask;
- }
-
- private boolean getMask(int mask) {
- return (this.flags & mask) == mask;
- }
-
- public void setAO(boolean val) {
- this.setMask(AO_MASK, val);
- }
-
- public boolean getAO() {
- return getMask(AO_MASK);
- }
-
- public void setDiffuse(boolean val) {
- this.setMask(DIFFUSE_MASK, val);
- }
-
- public boolean getDiffuse() {
- return getMask(DIFFUSE_MASK);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/NdQuadBuilder.java b/src/main/java/com/gtnewhorizons/angelica/models/NdQuadBuilder.java
deleted file mode 100644
index 8c17c3e59..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/NdQuadBuilder.java
+++ /dev/null
@@ -1,317 +0,0 @@
-package com.gtnewhorizons.angelica.models;
-
-import com.gtnewhorizons.angelica.api.QuadBuilder;
-import com.gtnewhorizons.angelica.api.QuadView;
-import lombok.Setter;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFlags;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.util.IIcon;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.joml.Matrix4f;
-import org.joml.Vector3f;
-import org.lwjgl.opengl.GL11;
-
-import java.util.Arrays;
-
-import static com.gtnewhorizons.angelica.models.json.FaceRewindHelper.*;
-
-public class NdQuadBuilder extends Quad implements QuadBuilder {
-
- private ForgeDirection nominalFace = ForgeDirection.UNKNOWN;
- // Defaults to UP, but only because it can't be UNKNOWN or null
- private ForgeDirection lightFace = ForgeDirection.UP;
- private int geometryFlags = 0;
- private boolean isGeometryInvalid = true;
- private int tag = 0;
- final Vector3f faceNormal = new Vector3f();
- public final Material mat = new Material();
- @Setter
- private int drawMode = GL11.GL_QUADS;
-
- @Override
- public QuadView build(QuadView out) {
-
- if (this.drawMode != GL11.GL_QUADS)
- this.quadrangulate();
-
- // FRAPI does this late, but we need to do it before baking to Nd quads
- this.computeGeometry();
- out.copyFrom(this);
- this.clear();
- return out;
- }
-
- /**
- * See {@link #build(QuadView)}. This rotates the output by the given matrix.
- */
- public QuadView build(QuadView out, Matrix4f rotMat) {
-
- this.pos(0, this.pos(0).mulPosition(rotMat));
- this.pos(1, this.pos(1).mulPosition(rotMat));
- this.pos(2, this.pos(2).mulPosition(rotMat));
-
- if (this.drawMode == GL11.GL_QUADS)
- this.pos(3, this.pos(3).mulPosition(rotMat));
- else
- this.quadrangulate();
-
- this.computeGeometry();
-
- // Reset the cull face
- this.setCullFace();
-
- out.copyFrom(this);
- this.clear();
- return out;
- }
-
- private void clear() {
-
- Arrays.fill(this.data, 0);
- this.setCullFace(ForgeDirection.UNKNOWN);
- this.lightFace = ForgeDirection.UP;
- this.geometryFlags = 0;
- this.isGeometryInvalid = true;
- this.tag(0);
- this.setColorIndex(-1);
- this.mat.reset();
- this.drawMode = GL11.GL_QUADS;
- }
-
- private void computeGeometry() {
- if (this.isGeometryInvalid) {
- this.isGeometryInvalid = false;
-
- NormalHelper.computeFaceNormal(this.faceNormal, this);
-
- // depends on face normal
- this.lightFace = GeometryHelper.lightFace(this);
-
- // depends on light face
- this.geometryFlags = ModelQuadFlags.getQuadFlags(this);
- }
- }
-
- @Override
- public boolean isShade() {
- return this.mat.getDiffuse();
- }
-
- @Override
- @NotNull
- public ForgeDirection getLightFace() {
- this.computeGeometry();
- return this.lightFace;
- }
-
- @Override
- public void setCullFace(ForgeDirection dir) {
- super.setCullFace(dir);
- this.nominalFace(dir);
- }
-
- @Override
- public void setCullFace() {
- this.computeGeometry();
- if ((this.geometryFlags & ModelQuadFlags.IS_ALIGNED) != 0)
- this.setCullFace(this.lightFace);
- else {
- this.setCullFace(ForgeDirection.UNKNOWN);
- this.nominalFace(this.lightFace);
- }
- }
-
- @Override
- public void nominalFace(@Nullable ForgeDirection face) {
- this.nominalFace = face;
- }
-
- @Override
- public ForgeDirection nominalFace() {
- return this.nominalFace;
- }
-
- @Override
- public void pos(int vertexIndex, float x, float y, float z) {
-
- this.setX(vertexIndex, x);
- this.setY(vertexIndex, y);
- this.setZ(vertexIndex, z);
- isGeometryInvalid = true;
- }
-
- @Override
- public void pos(int vertexIndex, Vector3f vec) {
-
- this.setX(vertexIndex, vec.x);
- this.setY(vertexIndex, vec.y);
- this.setZ(vertexIndex, vec.z);
- isGeometryInvalid = true;
- }
-
- @Override
- public Vector3f pos(int vertexIndex) {
-
- return new Vector3f(
- this.getX(vertexIndex),
- this.getY(vertexIndex),
- this.getZ(vertexIndex)
- );
- }
-
- @Override
- public float posByIndex(int vertexIndex, int coordinateIndex) {
- return Float.intBitsToFloat(this.data[vertexIndex * Quad.VERTEX_STRIDE + Quad.X_INDEX + coordinateIndex]);
- }
-
- final int MIN_X = 0;
- final int MIN_Y = 1;
- final int MIN_Z = 2;
- final int MAX_X = 3;
- final int MAX_Y = 4;
- final int MAX_Z = 5;
-
- /**
- * Rewinds the quad to the standard order. Works as long as four vertex positions have been assigned, and will
- * not rewind any non-position data. Recommended to do immediately after vertex assignment, and to set/reset UVs,
- * colors, etc. afterwards.
- *
- * PS: this should only be used on quads parallel to the block grid.
- *
- * TODO: this doesn't actually work
- */
- public void rewind(float x, float y, float z, float X, float Y, float Z) {
- boolean[] targets = switch (getLightFace()) {
- case DOWN -> DOWN;
- case UP -> UP;
- case NORTH -> NORTH;
- case SOUTH -> SOUTH;
- case WEST -> WEST;
- case EAST -> EAST;
- case UNKNOWN -> throw new RuntimeException("Expected non-UNKNOWN face!");
- };
-
- final float ox = getX(0);
- final float oy = getY(0);
- final float oz = getZ(0);
-
- // Reset the vertices, given the bounds
- int iFirst = 0;
- for (int i = 0; i < 4; ++i) {
- final float px = targets[i * 3] ? X : x;
- final float py = targets[i * 3 + 1] ? Y : y;
- final float pz = targets[i * 3 + 2] ? Z : z;
- pos(i, px, py, pz);
-
- // Save the original first vertex
- if (px == ox && py == oy && pz == oz)
- iFirst = i;
- }
-
- // Shift the UVs - copy to a temp array, then copy back in the right order, wrapping appropriately
- float[] uvs = {
- getTexU(0),
- getTexV(0),
- getTexU(1),
- getTexV(1),
- getTexU(2),
- getTexV(2),
- getTexU(3),
- getTexV(3)
- };
- for (int i = 0; i < 4; ++i) {
- uv((i + iFirst) % 4, uvs[i * 2], uvs[i * 2 + 1]);
- }
- }
-
- @Override
- public void spriteBake(String spriteName, int bakeFlags) {
-
- final IIcon icon = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(spriteName);
- TexHelper.bakeSprite(this, icon, bakeFlags);
- }
-
- @Override
- public void spriteBake(IIcon sprite, int bakeFlags) {
- TexHelper.bakeSprite(this, sprite, bakeFlags);
- }
-
- @Override
- public void square(ForgeDirection nominalFace, float left, float bottom, float right, float top, float depth) {
- if (Math.abs(depth) < CULL_FACE_EPSILON) {
- setCullFace(nominalFace);
- depth = 0; // avoid any inconsistency for face quads
- } else {
- setCullFace(ForgeDirection.UNKNOWN);
- }
-
- nominalFace(nominalFace);
- switch (nominalFace) {
- case UP:
- depth = 1 - depth;
- top = 1 - top;
- bottom = 1 - bottom;
-
- case DOWN:
- pos(0, left, depth, top);
- pos(1, left, depth, bottom);
- pos(2, right, depth, bottom);
- pos(3, right, depth, top);
- break;
-
- case EAST:
- depth = 1 - depth;
- left = 1 - left;
- right = 1 - right;
-
- case WEST:
- pos(0, depth, top, left);
- pos(1, depth, bottom, left);
- pos(2, depth, bottom, right);
- pos(3, depth, top, right);
- break;
-
- case SOUTH:
- depth = 1 - depth;
- left = 1 - left;
- right = 1 - right;
-
- case NORTH:
- pos(0, 1 - left, top, depth);
- pos(1, 1 - left, bottom, depth);
- pos(2, 1 - right, bottom, depth);
- pos(3, 1 - right, top, depth);
- break;
- }
- }
-
- public int tag() {
- return this.tag;
- }
-
- @Override
- public void tag(int tag) {
- this.tag = tag;
- }
-
- @Override
- public void uv(int vertexIndex, float u, float v) {
-
- this.setTexU(vertexIndex, u);
- this.setTexV(vertexIndex, v);
- }
-
- @Override
- public int getFlags() {
- return this.geometryFlags;
- }
-
- @Override
- public TextureAtlasSprite rubidium$getSprite() {
- return null;
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/NormalHelper.java b/src/main/java/com/gtnewhorizons/angelica/models/NormalHelper.java
deleted file mode 100644
index b1db640be..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/NormalHelper.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.gtnewhorizons.angelica.models;
-
-import net.minecraftforge.common.util.ForgeDirection;
-import org.jetbrains.annotations.NotNull;
-import org.joml.Vector3f;
-import org.joml.Vector3i;
-
-import static me.jellysquid.mods.sodium.common.util.DirectionUtil.STEP;
-
-public class NormalHelper {
-
- /**
- * Computes the face normal of the given quad and saves it in the provided non-null vector.
- * If {@link NdQuadBuilder#nominalFace()} is set will optimize by confirming quad is parallel to that
- * face and, if so, use the standard normal for that face direction.
- *
- *
Will work with triangles also. Assumes counter-clockwise winding order, which is the norm.
- * Expects convex quads with all points co-planar.
- */
- public static void computeFaceNormal(@NotNull Vector3f saveTo, NdQuadBuilder q) {
- final ForgeDirection nominalFace = q.nominalFace();
-
- if (nominalFace != ForgeDirection.UNKNOWN && GeometryHelper.isQuadParallelToFace(nominalFace, q)) {
- Vector3i vec = STEP[nominalFace.ordinal()];
- saveTo.set(vec.x, vec.y, vec.z);
- return;
- }
-
- final float x0 = q.getX(0);
- final float y0 = q.getY(0);
- final float z0 = q.getZ(0);
- final float x1 = q.getX(1);
- final float y1 = q.getY(1);
- final float z1 = q.getZ(1);
- final float x2 = q.getX(2);
- final float y2 = q.getY(2);
- final float z2 = q.getZ(2);
- final float x3 = q.getX(3);
- final float y3 = q.getY(3);
- final float z3 = q.getZ(3);
-
- final float dx0 = x2 - x0;
- final float dy0 = y2 - y0;
- final float dz0 = z2 - z0;
- final float dx1 = x3 - x1;
- final float dy1 = y3 - y1;
- final float dz1 = z3 - z1;
-
- float normX = dy0 * dz1 - dz0 * dy1;
- float normY = dz0 * dx1 - dx0 * dz1;
- float normZ = dx0 * dy1 - dy0 * dx1;
-
- float l = (float) Math.sqrt(normX * normX + normY * normY + normZ * normZ);
-
- if (l != 0) {
- normX /= l;
- normY /= l;
- normZ /= l;
- }
-
- saveTo.set(normX, normY, normZ);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/TexHelper.java b/src/main/java/com/gtnewhorizons/angelica/models/TexHelper.java
deleted file mode 100644
index 4f19f211b..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/TexHelper.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.gtnewhorizons.angelica.models;
-
-import com.gtnewhorizons.angelica.api.QuadBuilder;
-import net.minecraft.util.IIcon;
-import net.minecraftforge.common.util.ForgeDirection;
-
-public class TexHelper {
-
- private static final float NORMALIZER = 1f / 16f;
- private static final VertexModifier[] UVLOCKERS = new VertexModifier[6];
-
- static {
- UVLOCKERS[ForgeDirection.EAST.ordinal()] = (q, i) -> q.uv(i, 1 - q.getZ(i), 1 - q.getY(i));
- UVLOCKERS[ForgeDirection.WEST.ordinal()] = (q, i) -> q.uv(i, q.getZ(i), 1 - q.getY(i));
- UVLOCKERS[ForgeDirection.NORTH.ordinal()] = (q, i) -> q.uv(i, 1 - q.getX(i), 1 - q.getY(i));
- UVLOCKERS[ForgeDirection.SOUTH.ordinal()] = (q, i) -> q.uv(i, q.getX(i), 1 - q.getY(i));
- UVLOCKERS[ForgeDirection.DOWN.ordinal()] = (q, i) -> q.uv(i, q.getX(i), 1 - q.getZ(i));
- UVLOCKERS[ForgeDirection.UP.ordinal()] = (q, i) -> q.uv(i, q.getX(i), q.getZ(i));
- }
-
- private static final VertexModifier[] ROTATIONS = new VertexModifier[] {
- null,
- (q, i) -> q.uv(i, q.getTexV(i), 1 - q.getTexU(i)), //90
- (q, i) -> q.uv(i, 1 - q.getTexU(i), 1 - q.getTexV(i)), //180
- (q, i) -> q.uv(i, 1 - q.getTexV(i), q.getTexU(i)) // 270
- };
-
- private static void applyModifier(NdQuadBuilder quad, VertexModifier modifier) {
- for (int i = 0; i < 4; i++) {
- modifier.apply(quad, i);
- }
- }
-
- /**
- * Bakes textures in the provided vertex data, handling UV locking,
- * rotation, interpolation, etc. Textures must not be already baked.
- */
- public static void bakeSprite(NdQuadBuilder quad, IIcon sprite, int bakeFlags) {
- if (quad.nominalFace() != ForgeDirection.UNKNOWN && (QuadBuilder.BAKE_LOCK_UV & bakeFlags) != 0) {
- // Assigns normalized UV coordinates based on vertex positions
- applyModifier(quad, UVLOCKERS[quad.nominalFace().ordinal()]);
- } else if ((QuadBuilder.BAKE_NORMALIZED & bakeFlags) == 0) { // flag is NOT set, UVs are assumed to not be normalized yet as is the default, normalize through dividing by 16
- // Scales from 0-16 to 0-1
- applyModifier(quad, (q, i) -> q.uv(i, q.getTexU(i) * NORMALIZER, q.getTexV(i) * NORMALIZER));
- }
-
- final int rotation = bakeFlags & 3;
-
- if (rotation != 0) {
- // Rotates texture around the center of sprite.
- // Assumes normalized coordinates.
- applyModifier(quad, ROTATIONS[rotation]);
- }
-
- if ((QuadBuilder.BAKE_FLIP_U & bakeFlags) != 0) {
- // Inverts U coordinates. Assumes normalized (0-1) values.
- applyModifier(quad, (q, i) -> q.uv(i, 1 - q.getTexU(i), q.getTexV(i)));
- }
-
- if ((QuadBuilder.BAKE_FLIP_V & bakeFlags) != 0) {
- // Inverts V coordinates. Assumes normalized (0-1) values.
- applyModifier(quad, (q, i) -> q.uv(i, q.getTexU(i), 1 - q.getTexV(i)));
- }
-
- interpolate(quad, sprite);
- }
-
- /**
- * Faster than sprite method. Sprite computes span and normalizes inputs each call,
- * so we'd have to denormalize before we called, only to have the sprite renormalize immediately.
- */
- private static void interpolate(NdQuadBuilder q, IIcon sprite) {
- final float uMin = sprite.getMinU();
- final float uSpan = sprite.getMaxU() - uMin;
- final float vMin = sprite.getMinV();
- final float vSpan = sprite.getMaxV() - vMin;
-
- for (int i = 0; i < 4; i++) {
- q.uv(i, uMin + q.getTexU(i) * uSpan, vMin + q.getTexV(i) * vSpan);
- }
- }
-
- @FunctionalInterface
- private interface VertexModifier {
- void apply(NdQuadBuilder quad, int vertexIndex);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/VanillaModels.java b/src/main/java/com/gtnewhorizons/angelica/models/VanillaModels.java
index 93e21b1b3..75155caf6 100644
--- a/src/main/java/com/gtnewhorizons/angelica/models/VanillaModels.java
+++ b/src/main/java/com/gtnewhorizons/angelica/models/VanillaModels.java
@@ -1,16 +1,17 @@
package com.gtnewhorizons.angelica.models;
-import com.gtnewhorizons.angelica.api.BlockPos;
-import com.gtnewhorizons.angelica.api.ModelLoader;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.api.Variant;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.blockpos.IBlockPos;
+import com.gtnewhorizon.gtnhlib.client.model.ModelLoader;
+import com.gtnewhorizon.gtnhlib.client.model.Variant;
+import com.gtnewhorizon.gtnhlib.client.model.json.ModelLocation;
+import com.gtnewhorizon.gtnhlib.client.model.template.BlockColoredCube;
+import com.gtnewhorizon.gtnhlib.client.model.template.BlockStaticCube;
+import com.gtnewhorizon.gtnhlib.client.model.template.Column3Rot;
+import com.gtnewhorizon.gtnhlib.client.model.template.Model4Rot;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadProvider;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadView;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
-import com.gtnewhorizons.angelica.models.json.ModelLocation;
-import com.gtnewhorizons.angelica.models.template.BlockColoredCube;
-import com.gtnewhorizons.angelica.models.template.BlockStaticCube;
-import com.gtnewhorizons.angelica.models.template.Column3Rot;
-import com.gtnewhorizons.angelica.models.template.Model4Rot;
import net.minecraft.block.Block;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
@@ -32,12 +33,12 @@ public class VanillaModels {
public static BlockColoredCube JUNGLE_LEAVES;
public static QuadProvider OLD_LEAF = new QuadProvider() {
@Override
- public int getColor(IBlockAccess world, BlockPos pos, Block block, int meta, Random random) {
+ public int getColor(IBlockAccess world, IBlockPos pos, Block block, int meta, Random random) {
return QuadProvider.getDefaultColor(world, pos, block);
}
@Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
+ public List getQuads(IBlockAccess world, IBlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
return (switch (meta % 4) {
case 0 -> OAK_LEAVES;
case 1 -> SPRUCE_LEAVES;
@@ -52,12 +53,12 @@ public class VanillaModels {
public static BlockColoredCube DARK_OAK_LEAVES;
public static QuadProvider NEW_LEAF = new QuadProvider() {
@Override
- public int getColor(IBlockAccess world, BlockPos pos, Block block, int meta, Random random) {
+ public int getColor(IBlockAccess world, IBlockPos pos, Block block, int meta, Random random) {
return QuadProvider.getDefaultColor(world, pos, block);
}
@Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
+ public List getQuads(IBlockAccess world, IBlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
return (switch (meta % 2) {
case 0 -> ACACIA_LEAVES;
case 1 -> DARK_OAK_LEAVES;
@@ -76,7 +77,7 @@ public class VanillaModels {
public static BlockStaticCube JUNGLE_WOOD;
public static QuadProvider OLD_LOG = new QuadProvider() {
@Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
+ public List getQuads(IBlockAccess world, IBlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
if (meta > 11) {
return (switch (meta) {
@@ -111,7 +112,7 @@ public class VanillaModels {
public static BlockStaticCube DARK_OAK_WOOD;
public static QuadProvider NEW_LOG = new QuadProvider() {
@Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
+ public List getQuads(IBlockAccess world, IBlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
if (meta > 11) {
return (switch (meta) {
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/json/FaceRewindHelper.java b/src/main/java/com/gtnewhorizons/angelica/models/json/FaceRewindHelper.java
deleted file mode 100644
index 6bc2917e8..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/json/FaceRewindHelper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.gtnewhorizons.angelica.models.json;
-
-/**
- * Modern vanilla uses magic numbers to rewind quads, let's try that. NOTE: may or may not work with sheared quads, but
- * probably not.
- */
-public class FaceRewindHelper {
- /**
- * These constants map face sides to the characteristics of the vertexes. False is min, true is max, and the order
- * is XYZ, repeating 4 times. So the first vertex of DOWN faces should have the minimum X and Y and the maximum Z.
- */
- public static final boolean[] DOWN = { false, false, true, false, false, false, true, false, false, true, false, true };
- public static final boolean[] UP = { false, true, false, false, true, true, true, true, true, true, true, false };
- public static final boolean[] NORTH = { true, true, false, true, false, false, false, false, false, false, true, false };
- public static final boolean[] SOUTH = { false, true, true, false, false, true, true, false, true, true, true, true };
- public static final boolean[] WEST = { false, true, false, false, false, false, false, false, true, false, true, true };
- public static final boolean[] EAST = { true, true, true, true, false, true, true, false, false, true, true, false };
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/json/JsonModel.java b/src/main/java/com/gtnewhorizons/angelica/models/json/JsonModel.java
deleted file mode 100644
index 6f4668dd9..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/json/JsonModel.java
+++ /dev/null
@@ -1,394 +0,0 @@
-package com.gtnewhorizons.angelica.models.json;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParseException;
-import com.gtnewhorizons.angelica.api.BlockPos;
-import com.gtnewhorizons.angelica.api.QuadBuilder;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.api.Variant;
-import com.gtnewhorizons.angelica.compat.mojang.Axis;
-import com.gtnewhorizons.angelica.models.NdQuadBuilder;
-import com.gtnewhorizons.angelica.utils.DirUtil;
-import it.unimi.dsi.fastutil.Function;
-import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
-import it.unimi.dsi.fastutil.objects.ObjectArrayList;
-import it.unimi.dsi.fastutil.objects.ObjectImmutableList;
-import lombok.Getter;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import net.minecraft.block.Block;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.world.IBlockAccess;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.jetbrains.annotations.Nullable;
-import org.joml.Matrix4f;
-import org.joml.Vector3f;
-import org.joml.Vector4f;
-
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.function.Supplier;
-
-import static com.gtnewhorizons.angelica.utils.JsonUtil.*;
-import static java.lang.Math.max;
-import static java.lang.Math.min;
-import static me.jellysquid.mods.sodium.common.util.DirectionUtil.ALL_DIRECTIONS;
-
-public class JsonModel implements QuadProvider {
-
- @Nullable
- private final ResourceLocation parentId;
- @Nullable
- private JsonModel parent;
- @Getter
- private final boolean useAO;
- private final Map display;
- private final Map textures;
- private List elements;
- private List allQuadStore = new ObjectArrayList<>();
- private final Map> sidedQuadStore = new Object2ObjectOpenHashMap<>();
- private static final List EMPTY = ObjectImmutableList.of();
-
- public JsonModel(@Nullable ResourceLocation parentId, boolean useAO, Map display, Map textures, List elements) {
- this.parentId = parentId;
- this.useAO = useAO;
- this.display = display;
- this.textures = textures;
- this.elements = elements;
- }
-
- /**
- * Makes a shallow copy of og. This allows you to bake the same model multiple times with various transformations.
- */
- public JsonModel(JsonModel og) {
-
- this.parentId = og.parentId;
- this.parent = og.parent;
- this.useAO = og.useAO;
- this.display = og.display;
- this.textures = og.textures;
- this.elements = og.elements;
- }
-
- public void bake(Variant v) {
-
- final Matrix4f vRot = v.getAffineMatrix();
- final NdQuadBuilder builder = new NdQuadBuilder();
-
- // Append faces from each element
- for (ModelElement e : this.elements) {
-
- final Matrix4f rot = (e.getRotation() == null)
- ? ModelElement.Rotation.NOOP.getAffineMatrix()
- : e.getRotation().getAffineMatrix();
-
- final Vector3f from = e.getFrom();
- final Vector3f to = e.getTo();
-
- for (ModelElement.Face f : e.getFaces()) {
-
- float x = Float.MAX_VALUE;
- float y = Float.MAX_VALUE;
- float z = Float.MAX_VALUE;
- float X = Float.MIN_VALUE;
- float Y = Float.MIN_VALUE;
- float Z = Float.MIN_VALUE;
-
- // Assign vertexes
- for (int i = 0; i < 4; ++i) {
-
- final Vector3f vert =
- QuadBuilder.mapSideToVertex(from, to, i, f.getName()).mulPosition(rot).mulPosition(vRot);
- builder.pos(i, vert.x, vert.y, vert.z);
- x = min(x, vert.x);
- y = min(y, vert.y);
- z = min(z, vert.z);
- X = max(X, vert.x);
- Y = max(Y, vert.y);
- Z = max(Z, vert.z);
- }
-
- // Set culling and nominal faces
- builder.setCullFace();
-
- // Set bake flags
- int flags = switch(f.getRotation()) {
- case 90 -> QuadBuilder.BAKE_ROTATE_90;
- case 180 -> QuadBuilder.BAKE_ROTATE_180;
- case 270 -> QuadBuilder.BAKE_ROTATE_270;
- default -> QuadBuilder.BAKE_ROTATE_NONE;
- };
-
- // Set UV
- // TODO: UV locking
- final Vector4f uv = f.getUv();
- if (uv != null) {
-
- builder.uv(0, uv.x, uv.y);
- builder.uv(1, uv.x, uv.w);
- builder.uv(2, uv.z, uv.w);
- builder.uv(3, uv.z, uv.y);
- } else {
-
- // Not sure if this is correct, but it seems to fix things
- flags |= QuadBuilder.BAKE_LOCK_UV;
- }
-
- // Set the sprite
- builder.spriteBake(this.textures.get(f.getTexture()), flags);
-
- // Set the tint index
- builder.setColors(f.getTintIndex());
-
- // Set AO
- builder.mat.setAO(this.useAO);
-
- // Bake and add it
- final QuadView q = builder.build(new Quad());
- this.allQuadStore.add(q);
- this.sidedQuadStore.computeIfAbsent(q.getCullFace(),
- o -> new ObjectArrayList<>()).add(q);
- }
- }
-
- // Lock the lists.
- this.allQuadStore = new ObjectImmutableList<>(this.allQuadStore);
- for (ForgeDirection f : ALL_DIRECTIONS) {
-
- List l = this.sidedQuadStore.computeIfAbsent(f, o -> EMPTY);
- if (!l.isEmpty())
- this.sidedQuadStore.put(f, new ObjectImmutableList<>(l));
- }
- }
-
- public List getParents() {
- return Arrays.asList(parentId);
- }
-
- @Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
-
- return this.sidedQuadStore.getOrDefault(dir, EMPTY);
- }
-
- public void resolveParents(Function modelLoader) {
-
- if (this.parentId != null && this.parent == null) {
-
- final JsonModel p = modelLoader.apply(this.parentId);
- p.resolveParents(modelLoader);
-
- // Inherit properties
- this.parent = p;
- if (this.elements.isEmpty()) this.elements = this.parent.elements;
-
- // Resolve texture variables
- // Add parent texture mappings, but prioritize ours.
- for (Map.Entry e : this.parent.textures.entrySet()) {
-
- this.textures.putIfAbsent(e.getKey(), e.getValue());
- }
-
- // Flatten them, merging s -> s1, s1 -> s2 to s -> s2, s1 -> s2.
- boolean flat = false;
- final Map tmp = new Object2ObjectOpenHashMap<>();
- while (!flat) {
- flat = true;
-
- for (Map.Entry e : this.textures.entrySet()) {
-
- // If there is a value in the key set, replace with the value it points to
- // Also avoid adding a loop
- if (this.textures.containsKey(e.getValue())) {
-
- if (!e.getKey().equals(e.getValue()))
- tmp.put(e.getKey(), this.textures.get(e.getValue()));
- else tmp.put(e.getKey(), "");
- flat = false;
- } else {
- tmp.put(e.getKey(), e.getValue());
- }
- }
- this.textures.putAll(tmp);
- }
- }
- }
-
- public static class Deserializer implements JsonDeserializer {
-
- private Vector3f loadVec3(JsonObject in, String name) {
-
- final JsonArray arr = in.getAsJsonArray(name);
- final Vector3f ret = new Vector3f();
-
- for (int i = 0; i < 3; ++i) {
- ret.setComponent(i, arr.get(i).getAsFloat());
- }
-
- return ret;
- }
-
- private Vector4f loadVec4(JsonObject in, String name) {
-
- final JsonArray arr = in.getAsJsonArray(name);
- final Vector4f ret = new Vector4f();
-
- for (int i = 0; i < 4; ++i) {
- ret.setComponent(i, arr.get(i).getAsFloat());
- }
-
- return ret;
- }
-
- private ModelDisplay loadADisplay(JsonObject in) {
-
- final Vector3f rotation = loadVec3(in, "rotation");
- final Vector3f translation = loadVec3(in, "translation");
- final Vector3f scale = loadVec3(in, "scale");
-
- return new ModelDisplay(rotation, translation, scale);
- }
-
- private Map loadDisplay(JsonObject in) {
-
- // wow such long
- final Map ret = new Object2ObjectOpenHashMap<>(ModelDisplay.Position.values().length);
-
- if (in.has("display")) {
-
- final JsonObject display = in.getAsJsonObject("display");
-
- for (Map.Entry j : display.entrySet()) {
-
- final String name = j.getKey();
- final ModelDisplay.Position pos = ModelDisplay.Position.getByName(name);
- ret.put(pos, loadADisplay(j.getValue().getAsJsonObject()));
- }
- }
-
- for (ModelDisplay.Position p : ModelDisplay.Position.values()) {
- ret.putIfAbsent(p, ModelDisplay.DEFAULT);
- }
-
- return ret;
- }
-
- private Map loadTextures(JsonObject in) {
-
- final Map textures = new Object2ObjectOpenHashMap<>();
-
- if (in.has("textures")) {
- for (Map.Entry e : in.getAsJsonObject("textures").entrySet()) {
-
- // Trim leading octothorpes. They indicate a texture variable, but I don't actually care.
- String s = e.getValue().getAsString();
- if (s.startsWith("#")) {
- s = s.substring(1);
- } else if (s.startsWith("minecraft:")) {
-
- // Because of how we fetch textures from the atlas, minecraft textures need to have their domain
- // stripped
- s = s.substring(10);
- }
-
- textures.put(e.getKey(), s);
- }
- }
-
- return textures;
- }
-
- private ModelElement.Rotation loadRotation(JsonObject in) {
-
- if (in.has("rotation")) {
- final JsonObject json = in.getAsJsonObject("rotation");
-
- final Vector3f origin = loadVec3(json, "origin").div(16);
- final Axis axis = Axis.fromName(loadStr(json, "axis"));
- final float angle = loadFloat(json, "angle");
- final boolean rescale = loadBool(json, "rescale", false);
-
- return new ModelElement.Rotation(origin, axis, angle, rescale);
- } else {
-
- return null;
- }
- }
-
- private List loadFaces(JsonObject in) {
-
- final List ret = new ObjectArrayList<>();
- final JsonObject json = in.getAsJsonObject("faces");
-
- for (Map.Entry e : json.entrySet()) {
-
- final ForgeDirection side = DirUtil.fromName(e.getKey());
- final JsonObject face = e.getValue().getAsJsonObject();
-
- final Vector4f uv = (face.has("uv")) ? loadVec4(face, "uv") : null;
- String texture = loadStr(face, "texture");
- if (texture.startsWith("#")) texture = texture.substring(1);
- final ForgeDirection cullFace = DirUtil.fromName(loadStr(face, "cullface", "unknown"));
- final int rotation = loadInt(face, "rotation", 0);
- final int tintIndex = loadInt(face, "tintindex", -1);
-
- ret.add(new ModelElement.Face(side, uv, texture, cullFace, rotation, tintIndex));
- }
-
- return ret;
- }
-
- private List loadElements(JsonObject in) {
-
- final List ret = new ObjectArrayList<>();
-
- if (in.has("elements")) {
-
- final JsonArray arr = in.getAsJsonArray("elements");
- for (JsonElement e : arr) {
-
- final JsonObject json = e.getAsJsonObject();
- final Vector3f from = loadVec3(json, "from").div(16);
- final Vector3f to = loadVec3(json, "to").div(16);
- final ModelElement.Rotation rotation = loadRotation(json);
- final boolean shade = loadBool(json, "shade", true);
- final List faces = loadFaces(json);
-
- ret.add(new ModelElement(from, to, rotation, shade, faces));
- }
- }
-
- return ret;
- }
-
- @Override
- public JsonModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
-
- final JsonObject in = json.getAsJsonObject();
-
- final String parent = loadStr(in, "parent", "");
- ResourceLocation parentId = null;
- if (!parent.isEmpty()) {
- if (parent.contains(":")) {
- parentId = new ModelLocation(parent.split(":")[0], parent.split(":")[1]);
- } else {
- parentId = new ModelLocation(parent);
- }
- }
-
- final boolean useAO = loadBool(in, "ambientocclusion", true);
- final Map display = loadDisplay(in);
- final Map textures = loadTextures(in);
- final List elements = loadElements(in);
-
- return new JsonModel(parentId, useAO, display, textures, elements);
- }
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/json/ModelDisplay.java b/src/main/java/com/gtnewhorizons/angelica/models/json/ModelDisplay.java
deleted file mode 100644
index 7c7ccf297..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/json/ModelDisplay.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.gtnewhorizons.angelica.models.json;
-
-import org.joml.Vector3f;
-
-public class ModelDisplay {
-
- public static final ModelDisplay DEFAULT = new ModelDisplay(
- new Vector3f(0, 0, 0),
- new Vector3f(0, 0, 0),
- new Vector3f(1, 1, 1)
- );
-
- private final Vector3f rotation;
- private final Vector3f translation;
- private final Vector3f scale;
-
- public ModelDisplay(Vector3f rotation, Vector3f translation, Vector3f scale) {
-
- this.rotation = rotation;
- this.translation = translation;
- this.scale = scale;
- }
-
- public enum Position {
- thirdperson_righthand,
- thirdperson_lefthand,
- firstperson_righthand,
- firstperson_lefthand,
- gui,
- head,
- ground,
- fixed;
-
- public static Position getByName(String name) {
- return switch (name) {
- case "thirdperson_righthand" -> thirdperson_righthand;
- case "thirdperson_lefthand" -> thirdperson_lefthand;
- case "firstperson_righthand" -> firstperson_righthand;
- case "firstperson_lefthand" -> firstperson_lefthand;
- case "gui" -> gui;
- case "head" -> head;
- case "ground" -> ground;
- case "fixed" -> fixed;
- default -> null;
- };
- }
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/json/ModelElement.java b/src/main/java/com/gtnewhorizons/angelica/models/json/ModelElement.java
deleted file mode 100644
index 12a2ccc6b..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/json/ModelElement.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.gtnewhorizons.angelica.models.json;
-
-import com.gtnewhorizons.angelica.compat.mojang.Axis;
-import java.util.List;
-import lombok.Getter;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.jetbrains.annotations.Nullable;
-import org.joml.Matrix4f;
-import org.joml.Vector3f;
-import org.joml.Vector4f;
-
-public class ModelElement {
-
- @Getter
- private final Vector3f from;
- @Getter
- private final Vector3f to;
- @Nullable
- @Getter
- private final Rotation rotation;
- private final boolean shade;
- @Getter
- private final List faces;
-
- ModelElement(Vector3f from, Vector3f vector3f, @Nullable Rotation rotation, boolean shade, List faces) {
- this.from = from;
- to = vector3f;
- this.rotation = rotation;
- this.shade = shade;
- this.faces = faces;
- }
-
-
- static class Face {
-
- @Getter
- private final ForgeDirection name;
- @Getter
- private final Vector4f uv;
- @Getter
- private final String texture;
- @Getter
- private final ForgeDirection cullFace;
- @Getter
- private final int rotation;
- @Getter
- private final int tintIndex;
-
- Face(ForgeDirection name, Vector4f uv, String texture, ForgeDirection cullFace, int rotation, int tintIndex) {
- this.name = name;
- this.uv = uv;
- this.texture = texture;
- this.cullFace = cullFace;
- this.rotation = rotation;
- this.tintIndex = tintIndex;
- }
- }
-
- static class Rotation {
-
- static final Rotation NOOP = new Rotation(
- new Vector3f(0, 0, 0),
- Axis.X,
- 0,
- false
- );
-
- private final Vector3f origin;
- private final Axis axis;
- private final float angle;
- private final boolean rescale;
-
- Rotation(Vector3f origin, Axis axis, float angle, boolean rescale) {
- this.origin = origin;
- this.axis = axis;
- this.angle = (float) Math.toRadians(angle);
- this.rescale = rescale;
- }
-
- Matrix4f getAffineMatrix() {
-
- // Subtract origin
- final Matrix4f ret = new Matrix4f().translation(-this.origin.x, -this.origin.y, -this.origin.z);
-
- // Rotate
- switch (this.axis) {
- case X -> ret.rotateLocalX(angle);
- case Y -> ret.rotateLocalY(angle);
- case Z -> ret.rotateLocalZ(angle);
- }
-
- // Add the origin back in
- return ret.translateLocal(this.origin.x, this.origin.y, this.origin.z);
- }
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/json/ModelLocation.java b/src/main/java/com/gtnewhorizons/angelica/models/json/ModelLocation.java
deleted file mode 100644
index 8926956d9..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/json/ModelLocation.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.gtnewhorizons.angelica.models.json;
-
-import net.minecraft.util.ResourceLocation;
-
-public class ModelLocation extends ResourceLocation {
-
- /**
- * Create a model location in the minecraft domain.
- */
- public ModelLocation(String path) {
- super("models/" + path + ".json");
- }
-
- /**
- * Create a model location in any domain
- */
- public ModelLocation(String domain, String path) {
- super(domain, "models/" + path + ".json");
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/template/BlockColoredCube.java b/src/main/java/com/gtnewhorizons/angelica/models/template/BlockColoredCube.java
deleted file mode 100644
index 774ad34d1..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/template/BlockColoredCube.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.gtnewhorizons.angelica.models.template;
-
-import com.gtnewhorizons.angelica.api.BlockPos;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.QuadView;
-import it.unimi.dsi.fastutil.objects.ObjectImmutableList;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import net.minecraft.block.Block;
-import net.minecraft.world.IBlockAccess;
-import net.minecraftforge.common.util.ForgeDirection;
-
-import java.util.List;
-import java.util.Random;
-import java.util.function.Supplier;
-
-/**
- * While this class does not provide dynamic quads, they still need to be threadlocaled because the color of the quads
- * are modified.
- */
-public class BlockColoredCube extends BlockStaticCube {
-
- private ThreadLocal[]> threadedStore;
-
- public BlockColoredCube(String block) {
- super(block);
- }
-
- @Override
- protected void bake() {
- super.bake();
-
- // Kind of a mess, but it's required because I don't want to just store quads - that would require initializing
- // a new List every time. This ain't efficient, but it only runs when a new thread is spun off.
- this.threadedStore = ThreadLocal.withInitial(() -> {
- final List[] ret = new List[7];
-
- for (int i = 0; i < 6; ++i) {
- ret[i] = this.store[i].stream().map(new Quad()::copyFrom)
- .collect(ObjectImmutableList.toListWithExpectedSize(1));
- }
- ret[6] = ObjectImmutableList.of();
-
- return ret;
- });
- }
-
- @Override
- public int getColor(IBlockAccess world, BlockPos pos, Block block, int meta, Random random) {
- return QuadProvider.getDefaultColor(world, pos, block);
- }
-
- @Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
-
- final List ret = this.threadedStore.get()[dir.ordinal()];
- if (dir != ForgeDirection.UNKNOWN)
- ret.get(0).setColors(color);
-
- return ret;
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/template/BlockStaticCube.java b/src/main/java/com/gtnewhorizons/angelica/models/template/BlockStaticCube.java
deleted file mode 100644
index f4b81826f..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/template/BlockStaticCube.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.gtnewhorizons.angelica.models.template;
-
-import com.gtnewhorizons.angelica.api.BlockPos;
-import com.gtnewhorizons.angelica.api.QuadBuilder;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.models.NdQuadBuilder;
-import com.gtnewhorizons.angelica.api.ModelLoader;
-import it.unimi.dsi.fastutil.objects.ObjectImmutableList;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import net.minecraft.block.Block;
-import net.minecraft.world.IBlockAccess;
-import net.minecraftforge.common.util.ForgeDirection;
-
-import java.util.List;
-import java.util.Random;
-import java.util.function.Supplier;
-
-public class BlockStaticCube implements QuadProvider {
-
- private final String textureName;
- protected final List[] store = new List[7];
-
- public BlockStaticCube(String textureName) {
- this.textureName = textureName;
- ModelLoader.registerBaker(this::bake);
- }
-
- protected void bake() {
-
- final NdQuadBuilder builder = new NdQuadBuilder();
- for (ForgeDirection f : ForgeDirection.VALID_DIRECTIONS) {
-
- builder.square(f, 0, 0, 1, 1, 0);
- builder.spriteBake(this.textureName, QuadBuilder.BAKE_LOCK_UV);
- builder.setColors(-1);
- this.store[f.ordinal()] = ObjectImmutableList.of(builder.build(new Quad()));
- }
- this.store[6] = ObjectImmutableList.of();
- }
-
- @Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
- return store[dir.ordinal()];
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/template/Column3Rot.java b/src/main/java/com/gtnewhorizons/angelica/models/template/Column3Rot.java
deleted file mode 100644
index f9b873fe2..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/template/Column3Rot.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.gtnewhorizons.angelica.models.template;
-
-import com.gtnewhorizons.angelica.api.ModelLoader;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.Variant;
-import net.minecraft.util.ResourceLocation;
-
-/**
- * Use this to create a full cube column rotatable in 3 directions - vertical, x, and z
- */
-public class Column3Rot {
-
- public final Variant[] variants = new Variant[3];
- public final QuadProvider[] models = new QuadProvider[3];
-
- public Column3Rot(ResourceLocation model) {
-
- this.variants[0] = new Variant(model, 0, 0, false);
- this.variants[1] = new Variant(model, 90, 90, false);
- this.variants[2] = new Variant(model, 0, 90, false);
-
- ModelLoader.registerModels(() -> {
- for (int i = 0; i < 3; ++i)
- this.models[i] = ModelLoader.getModel(this.variants[i]);
- }, this.variants);
- }
-
- public QuadProvider updown() { return this.models[0]; }
- public QuadProvider eastwest() { return this.models[1]; }
- public QuadProvider northsouth() { return this.models[2]; }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/template/ColumnModel.java b/src/main/java/com/gtnewhorizons/angelica/models/template/ColumnModel.java
deleted file mode 100644
index bf4a66dfb..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/template/ColumnModel.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.gtnewhorizons.angelica.models.template;
-
-import com.gtnewhorizons.angelica.api.BlockPos;
-import com.gtnewhorizons.angelica.api.ModelLoader;
-import com.gtnewhorizons.angelica.api.QuadBuilder;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.models.NdQuadBuilder;
-import it.unimi.dsi.fastutil.objects.ObjectImmutableList;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import net.minecraft.block.Block;
-import net.minecraft.world.IBlockAccess;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.joml.Matrix4f;
-
-import java.util.List;
-import java.util.Random;
-import java.util.function.Supplier;
-
-public class ColumnModel implements QuadProvider {
-
- private final String topTex;
- private final String sideTex;
- protected final List[] store = new List[7];
- private boolean rotate = false;
- private Matrix4f rotMat;
-
- public ColumnModel(String topTex, String sideTex, Matrix4f rotMat) {
- this(topTex, sideTex);
- this.rotate = true;
- this.rotMat = rotMat;
- }
-
- public ColumnModel(String topTex, String sideTex) {
- this.topTex = topTex;
- this.sideTex = sideTex;
- ModelLoader.registerBaker(this::bake);
- }
-
- protected void bake() {
-
- final NdQuadBuilder builder = new NdQuadBuilder();
-
- for (ForgeDirection f : ForgeDirection.VALID_DIRECTIONS) {
-
- builder.square(f, 0, 0, 1, 1, 0);
-
- final String tex = (f == ForgeDirection.UP || f == ForgeDirection.DOWN) ? this.topTex : this.sideTex;
- builder.spriteBake(tex, QuadBuilder.BAKE_LOCK_UV);
-
- builder.setColors(-1);
-
- final List tmp = ObjectImmutableList.of(
- (this.rotate) ? builder.build(new Quad(), this.rotMat) : builder.build(new Quad()));
-
- this.store[tmp.get(0).getCullFace().ordinal()] = tmp;
- }
- this.store[6] = ObjectImmutableList.of();
- }
-
- @Override
- public List getQuads(IBlockAccess world, BlockPos pos, Block block, int meta, ForgeDirection dir, Random random, int color, Supplier quadPool) {
- return this.store[dir.ordinal()];
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/models/template/Model4Rot.java b/src/main/java/com/gtnewhorizons/angelica/models/template/Model4Rot.java
deleted file mode 100644
index 397c2da09..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/models/template/Model4Rot.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.gtnewhorizons.angelica.models.template;
-
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.ModelLoader;
-import com.gtnewhorizons.angelica.api.Variant;
-import net.minecraft.util.ResourceLocation;
-
-/**
- * Use this to create JSON model rotatable in 4 directions - NSWE
- */
-public class Model4Rot {
-
- public final QuadProvider[] models = new QuadProvider[4];
- private final Variant[] modelIds;
-
- public Model4Rot(ResourceLocation modelLoc) {
-
- this.modelIds = new Variant[] {
- new Variant(modelLoc, 0, 0, false),
- new Variant(modelLoc, 180, 0, false),
- new Variant(modelLoc, 90, 0, false),
- new Variant(modelLoc, 270, 0, false)
- };
-
- ModelLoader.registerModels(() -> loadModels(this), this.modelIds);
- }
-
- public static void loadModels(Model4Rot model) {
- for (int i = 0; i < 4; ++i)
- model.models[i] = ModelLoader.getModel(model.modelIds[i]);
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/proxy/ClientProxy.java b/src/main/java/com/gtnewhorizons/angelica/proxy/ClientProxy.java
index 647c9d64e..70c092b41 100644
--- a/src/main/java/com/gtnewhorizons/angelica/proxy/ClientProxy.java
+++ b/src/main/java/com/gtnewhorizons/angelica/proxy/ClientProxy.java
@@ -1,7 +1,9 @@
package com.gtnewhorizons.angelica.proxy;
import com.google.common.base.Objects;
-import com.gtnewhorizons.angelica.api.ModelLoader;
+import com.gtnewhorizon.gtnhlib.client.model.ModelLoader;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.ModStatus;
import com.gtnewhorizons.angelica.compat.bettercrashes.BetterCrashesCompat;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
@@ -27,6 +29,7 @@ import jss.notfine.core.Settings;
import me.jellysquid.mods.sodium.client.SodiumDebugScreenHandler;
import net.coderbot.iris.Iris;
import net.coderbot.iris.client.IrisDebugScreenHandler;
+import net.coderbot.iris.vertices.IrisVertexFormats;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
@@ -53,9 +56,11 @@ import java.lang.management.ManagementFactory;
import java.util.Locale;
import java.util.concurrent.ConcurrentHashMap;
+
import static com.gtnewhorizons.angelica.loading.AngelicaTweaker.LOGGER;
public class ClientProxy extends CommonProxy {
+
final Minecraft mc = Minecraft.getMinecraft();
private static boolean baked = false;
@@ -69,7 +74,6 @@ public class ClientProxy extends CommonProxy {
AssetLoader.load();
}
-
@SubscribeEvent
public void worldLoad(WorldEvent.Load event) {
if (GLStateManager.isRunningSplash()) {
@@ -77,7 +81,7 @@ public class ClientProxy extends CommonProxy {
LOGGER.info("World loaded - Enabling GLSM Cache");
}
- if(AngelicaConfig.enableSodium) {
+ if (AngelicaConfig.enableSodium) {
// Register all blocks. Because blockids are unique to a world, this must be done each load
GameData.getBlockRegistry().forEach(o -> {
@@ -88,49 +92,66 @@ public class ClientProxy extends CommonProxy {
}
}
-
private static KeyBinding glsmKeyBinding;
+
@Override
public void init(FMLInitializationEvent event) {
super.init(event);
- if(AngelicaConfig.enableHudCaching) {
+ if (AngelicaConfig.enableHudCaching) {
FMLCommonHandler.instance().bus().register(HUDCaching.INSTANCE);
MinecraftForge.EVENT_BUS.register(HUDCaching.INSTANCE); // TODO remove debug stuff, unused registration}
HUDCaching.registerKeyBindings();
}
- if(AngelicaConfig.enableSodium) {
+ if (AngelicaConfig.enableSodium) {
MinecraftForge.EVENT_BUS.register(SodiumDebugScreenHandler.INSTANCE);
}
- if(AngelicaConfig.enableIris) {
+ if (AngelicaConfig.enableIris) {
MinecraftForge.EVENT_BUS.register(IrisDebugScreenHandler.INSTANCE);
Iris.INSTANCE.fmlInitEvent();
FMLCommonHandler.instance().bus().register(Iris.INSTANCE);
MinecraftForge.EVENT_BUS.register(Iris.INSTANCE);
- }
+ VertexFormat.registerSetupBufferStateOverride((vertexFormat, l) -> {
+ if (vertexFormat == DefaultVertexFormat.POSITION_COLOR_TEXTURE_LIGHT_NORMAL
+ || vertexFormat == DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP) {
+ IrisVertexFormats.TERRAIN.setupBufferState(l);
+ return true;
+ }
+ return false;
+ });
+ VertexFormat.registerClearBufferStateOverride(vertexFormat -> {
+ if (vertexFormat == DefaultVertexFormat.POSITION_COLOR_TEXTURE_LIGHT_NORMAL
+ || vertexFormat == DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP) {
+ IrisVertexFormats.TERRAIN.clearBufferState();
+ return true;
+ }
+ return false;
+ });
+ }
FMLCommonHandler.instance().bus().register(this);
MinecraftForge.EVENT_BUS.register(this);
- glsmKeyBinding = new KeyBinding("Print GLSM Debug", Keyboard.KEY_NONE, "Angelica Keybinds");
+ glsmKeyBinding = new KeyBinding("Print GLSM Debug", Keyboard.KEY_NONE, "Angelica Keybinds");
ClientRegistry.registerKeyBinding(glsmKeyBinding);
VanillaModels.init();
- if(ModStatus.isBetterCrashesLoaded) {
+ if (ModStatus.isBetterCrashesLoaded) {
BetterCrashesCompat.init();
}
}
private boolean wasGLSMKeyPressed;
+
@SubscribeEvent
public void onKeypress(TickEvent.ClientTickEvent event) {
final boolean isPressed = glsmKeyBinding.getKeyCode() != 0 && Keyboard.isKeyDown(glsmKeyBinding.getKeyCode());
- if(isPressed && !wasGLSMKeyPressed) {
- OpenGLDebugging.checkGLSM();
- }
+ if (isPressed && !wasGLSMKeyPressed) {
+ OpenGLDebugging.checkGLSM();
+ }
wasGLSMKeyPressed = isPressed;
}
@@ -141,11 +162,10 @@ public class ClientProxy extends CommonProxy {
if (ModStatus.isLotrLoaded && AngelicaConfig.enableSodium && AngelicaConfig.fixLotrSodiumCompat) {
try {
Class> lotrRendering = Class.forName("lotr.common.coremod.LOTRReplacedMethods$BlockRendering");
- ReflectionHelper.setPrivateValue(lotrRendering,null,new ConcurrentHashMap<>(),"naturalBlockClassTable");
- ReflectionHelper.setPrivateValue(lotrRendering,null,new ConcurrentHashMap<>(),"naturalBlockTable");
- ReflectionHelper.setPrivateValue(lotrRendering,null,new ConcurrentHashMap<>(),"cachedNaturalBlocks");
- }
- catch (ClassNotFoundException e) {
+ ReflectionHelper.setPrivateValue(lotrRendering, null, new ConcurrentHashMap<>(), "naturalBlockClassTable");
+ ReflectionHelper.setPrivateValue(lotrRendering, null, new ConcurrentHashMap<>(), "naturalBlockTable");
+ ReflectionHelper.setPrivateValue(lotrRendering, null, new ConcurrentHashMap<>(), "cachedNaturalBlocks");
+ } catch (ClassNotFoundException e) {
LOGGER.error("Could not replace LOTR handle render code with thread safe version");
}
}
@@ -155,25 +175,24 @@ public class ClientProxy extends CommonProxy {
}
float lastIntegratedTickTime;
+
@SubscribeEvent
public void onTick(TickEvent.ServerTickEvent event) {
- if(FMLCommonHandler.instance().getSide().isClient() && event.phase == TickEvent.Phase.END) {
+ if (FMLCommonHandler.instance().getSide().isClient() && event.phase == TickEvent.Phase.END) {
IntegratedServer srv = Minecraft.getMinecraft().getIntegratedServer();
- if(srv != null) {
+ if (srv != null) {
long currentTickTime = srv.tickTimeArray[srv.getTickCounter() % 100];
- lastIntegratedTickTime = lastIntegratedTickTime * 0.8F + (float)currentTickTime / 1000000.0F * 0.2F;
- } else
- lastIntegratedTickTime = 0;
+ lastIntegratedTickTime = lastIntegratedTickTime * 0.8F + (float) currentTickTime / 1000000.0F * 0.2F;
+ } else lastIntegratedTickTime = 0;
}
}
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onRenderOverlay(RenderGameOverlayEvent.Text event) {
Minecraft mc = Minecraft.getMinecraft();
- if(event.isCanceled() || !mc.gameSettings.showDebugInfo || event.left.size() < 1)
- return;
+ if (event.isCanceled() || !mc.gameSettings.showDebugInfo || event.left.size() < 1) return;
NetHandlerPlayClient cl = mc.getNetHandler();
- if(cl != null) {
+ if (cl != null) {
IntegratedServer srv = mc.getIntegratedServer();
if (srv != null) {
@@ -181,34 +200,29 @@ public class ClientProxy extends CommonProxy {
event.left.add(1, s);
}
}
- if(AngelicaConfig.showBlockDebugInfo && mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
- if(!event.right.isEmpty() && Objects.firstNonNull(event.right.get(event.right.size() - 1), "").length() > 0)
- event.right.add("");
+ if (AngelicaConfig.showBlockDebugInfo && mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
+ if (!event.right.isEmpty() && Objects.firstNonNull(event.right.get(event.right.size() - 1), "").length() > 0) event.right.add("");
Block block = mc.theWorld.getBlock(mc.objectMouseOver.blockX, mc.objectMouseOver.blockY, mc.objectMouseOver.blockZ);
int meta = mc.theWorld.getBlockMetadata(mc.objectMouseOver.blockX, mc.objectMouseOver.blockY, mc.objectMouseOver.blockZ);
event.right.add(Block.blockRegistry.getNameForObject(block));
event.right.add("meta: " + meta);
}
- if (DynamicLights.isEnabled()){
+ if (DynamicLights.isEnabled()) {
var builder = new StringBuilder("Dynamic Light Sources: ");
DynamicLights dl = DynamicLights.get();
- builder.append(dl.getLightSourcesCount())
- .append(" (U: ")
- .append(dl.getLastUpdateCount())
- .append(')');
+ builder.append(dl.getLightSourcesCount()).append(" (U: ").append(dl.getLastUpdateCount()).append(')');
event.right.add(builder.toString());
}
- if(AngelicaConfig.modernizeF3Screen) {
+ if (AngelicaConfig.modernizeF3Screen) {
boolean hasReplacedXYZ = false;
- for(int i = 0; i < event.left.size() - 3; i++) {
+ for (int i = 0; i < event.left.size() - 3; i++) {
/* These checks should not be inefficient as most of the time the first one will already fail */
- if(!hasReplacedXYZ && Objects.firstNonNull(event.left.get(i), "").startsWith("x:")
- && Objects.firstNonNull(event.left.get(i + 1), "").startsWith("y:")
- && Objects.firstNonNull(event.left.get(i + 2), "").startsWith("z:")
- && Objects.firstNonNull(event.left.get(i + 3), "").startsWith("f:")) {
+ if (!hasReplacedXYZ && Objects.firstNonNull(event.left.get(i), "").startsWith("x:") && Objects.firstNonNull(event.left.get(i + 1), "")
+ .startsWith("y:") && Objects.firstNonNull(event.left.get(i + 2), "").startsWith("z:") && Objects.firstNonNull(event.left.get(i + 3), "")
+ .startsWith("f:")) {
hasReplacedXYZ = true;
- int heading = MathHelper.floor_double((double)(mc.thePlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
+ int heading = MathHelper.floor_double((double) (mc.thePlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
String heading_str = switch (heading) {
case 0 -> "Towards positive Z";
case 1 -> "Towards negative X";
@@ -222,10 +236,16 @@ public class ClientProxy extends CommonProxy {
int bZ = MathHelper.floor_double(mc.thePlayer.posZ);
event.left.set(i + 1, String.format("Block: %d %d %d [%d %d %d]", bX, bY, bZ, bX & 15, bY & 15, bZ & 15));
event.left.set(i + 2, String.format("Chunk: %d %d %d", bX >> 4, bY >> 4, bZ >> 4));
- event.left.set(i + 3, String.format("Facing: %s (%s) (%.1f / %.1f)", Direction.directions[heading].toLowerCase(Locale.ROOT), heading_str, MathHelper.wrapAngleTo180_float(mc.thePlayer.rotationYaw), MathHelper.wrapAngleTo180_float(mc.thePlayer.rotationPitch)));
+ event.left.set(i + 3, String.format(
+ "Facing: %s (%s) (%.1f / %.1f)",
+ Direction.directions[heading].toLowerCase(Locale.ROOT),
+ heading_str,
+ MathHelper.wrapAngleTo180_float(mc.thePlayer.rotationYaw),
+ MathHelper.wrapAngleTo180_float(mc.thePlayer.rotationPitch)));
Chunk chunk = this.mc.theWorld.getChunkFromBlockCoords(bX, bZ);
- event.left.set(i + 4, String.format("lc: %d b: %s bl: %d sl: %d rl: %d",
+ event.left.set(i + 4, String.format(
+ "lc: %d b: %s bl: %d sl: %d rl: %d",
chunk.getTopFilledSegment() + 15,
chunk.getBiomeGenForWorldCoords(bX & 15, bZ & 15, mc.theWorld.getWorldChunkManager()).biomeName,
chunk.getSavedLightValue(EnumSkyBlock.Block, bX & 15, MathHelper.clamp_int(bY, 0, 255), bZ & 15),
@@ -238,8 +258,7 @@ public class ClientProxy extends CommonProxy {
FontRenderer fontrenderer = mc.fontRenderer;
int fontColor = 0xe0e0e0;
int rectColor = 0x90505050;
- for (int x = 0; x < event.left.size(); x++)
- {
+ for (int x = 0; x < event.left.size(); x++) {
String msg = event.left.get(x);
if (msg == null) continue;
int strX = 2;
@@ -248,8 +267,7 @@ public class ClientProxy extends CommonProxy {
fontrenderer.drawString(msg, strX, strY, fontColor);
}
int width = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight).getScaledWidth();
- for (int x = 0; x < event.right.size(); x++)
- {
+ for (int x = 0; x < event.right.size(); x++) {
String msg = event.right.get(x);
if (msg == null) continue;
int w = fontrenderer.getStringWidth(msg);
@@ -265,7 +283,7 @@ public class ClientProxy extends CommonProxy {
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onGuiOpen(GuiOpenEvent event) {
- if(!event.isCanceled() && event.gui instanceof GuiMainMenu && gameStartTime == -1) {
+ if (!event.isCanceled() && event.gui instanceof GuiMainMenu && gameStartTime == -1) {
gameStartTime = ManagementFactory.getRuntimeMXBean().getUptime() / 1000f;
LOGGER.info("The game loaded in " + gameStartTime + " seconds.");
}
@@ -274,12 +292,9 @@ public class ClientProxy extends CommonProxy {
/* coerce NaN fog values back to 0 (https://bugs.mojang.com/browse/MC-10480) - from ArchaicFix */
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onFogColor(EntityViewRenderEvent.FogColors event) {
- if(Float.isNaN(event.red))
- event.red = 0f;
- if(Float.isNaN(event.green))
- event.green = 0f;
- if(Float.isNaN(event.blue))
- event.blue = 0f;
+ if (Float.isNaN(event.red)) event.red = 0f;
+ if (Float.isNaN(event.green)) event.green = 0f;
+ if (Float.isNaN(event.blue)) event.blue = 0f;
}
@SubscribeEvent
@@ -297,7 +312,7 @@ public class ClientProxy extends CommonProxy {
// This is a bit of a hack to prevent the FOV from being modified by other mods
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onFOVModifierUpdate(FOVUpdateEvent event) {
- if (!(boolean)Settings.DYNAMIC_FOV.option.getStore()){
+ if (!(boolean) Settings.DYNAMIC_FOV.option.getStore()) {
event.newfov = 1.0F;
}
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/render/CloudRenderer.java b/src/main/java/com/gtnewhorizons/angelica/render/CloudRenderer.java
index 10377de57..fcbc312d8 100644
--- a/src/main/java/com/gtnewhorizons/angelica/render/CloudRenderer.java
+++ b/src/main/java/com/gtnewhorizons/angelica/render/CloudRenderer.java
@@ -21,13 +21,13 @@
package com.gtnewhorizons.angelica.render;
-import com.gtnewhorizons.angelica.client.renderer.CapturingTessellator;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexBuffer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.CapturingTessellator;
+import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VBOManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VertexBuffer;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
-import com.gtnewhorizons.angelica.glsm.VBOManager;
import jss.notfine.core.Settings;
import jss.notfine.gui.options.named.GraphicsQualityOff;
import net.minecraft.client.Minecraft;
diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ClassConstantPoolParser.java b/src/main/java/com/gtnewhorizons/angelica/transform/ClassConstantPoolParser.java
deleted file mode 100644
index 193bd2d05..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/transform/ClassConstantPoolParser.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/***
- * This Class is derived from the ASM ClassReader
- *
- * ASM: a very small and fast Java bytecode manipulation framework Copyright (c) 2000-2011 INRIA, France Telecom All
- * rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer. 2. 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. 3. Neither the name of the copyright holders nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific prior written permission.
- *
- * 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 OWNER 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.
- */
-
-package com.gtnewhorizons.angelica.transform;
-
-import org.objectweb.asm.Opcodes;
-
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-
-/**
- * Using this class to search for a (single) String reference is > 40 times faster than parsing a class with a ClassReader +
- * ClassNode while using way less RAM
- */
-public class ClassConstantPoolParser {
-
- private static final int UTF8 = 1;
- private static final int INT = 3;
- private static final int FLOAT = 4;
- private static final int LONG = 5;
- private static final int DOUBLE = 6;
- private static final int FIELD = 9;
- private static final int METH = 10;
- private static final int IMETH = 11;
- private static final int NAME_TYPE = 12;
- private static final int HANDLE = 15;
- private static final int INDY = 18;
-
- private final ArrayList BYTES_TO_SEARCH;
-
- public ClassConstantPoolParser(String... strings) {
- BYTES_TO_SEARCH = new ArrayList<>(strings.length);
- for (int i = 0; i < strings.length; i++) {
- BYTES_TO_SEARCH.add(i, strings[i].getBytes(StandardCharsets.UTF_8));
- }
- }
- public void addString(String string) {
- BYTES_TO_SEARCH.add(string.getBytes(StandardCharsets.UTF_8));
- }
- /**
- * Returns true if the constant pool of the class represented by this byte array contains one of the Strings we are looking
- * for
- */
- public boolean find(byte[] basicClass) {
- return find(basicClass, false);
- }
- /**
- * Returns true if the constant pool of the class represented by this byte array contains one of the Strings we are looking
- * for.
- *
- * @param prefixes If true, it is enough for a constant pool entry to start with one of our Strings to count as a match -
- * otherwise, the entire String has to match.
- */
- public boolean find(byte[] basicClass, boolean prefixes) {
- if (basicClass == null || basicClass.length == 0) {
- return false;
- }
- // checks the class version
- if (readShort(6, basicClass) > Opcodes.V1_8) {
- return false;
- }
- // parses the constant pool
- final int n = readUnsignedShort(8, basicClass);
- int index = 10;
- for (int i = 1; i < n; ++i) {
- final int size;
- switch (basicClass[index]) {
- case FIELD:
- case METH:
- case IMETH:
- case INT:
- case FLOAT:
- case NAME_TYPE:
- case INDY:
- size = 5;
- break;
- case LONG:
- case DOUBLE:
- size = 9;
- ++i;
- break;
- case UTF8:
- final int strLen = readUnsignedShort(index + 1, basicClass);
- size = 3 + strLen;
- for (byte[] bytes : BYTES_TO_SEARCH) {
- if (prefixes ? strLen >= bytes.length : strLen == bytes.length) {
- boolean found = true;
- for (int j = index + 3; j < index + 3 + bytes.length; j++) {
- if (basicClass[j] != bytes[j - (index + 3)]) {
- found = false;
- break;
- }
- }
- if (found) {
- return true;
- }
- }
- }
- break;
- case HANDLE:
- size = 4;
- break;
- default:
- size = 3;
- break;
- }
- index += size;
- }
- return false;
- }
-
- private static short readShort(final int index, byte[] basicClass) {
- return (short) (((basicClass[index] & 0xFF) << 8) | (basicClass[index + 1] & 0xFF));
- }
-
- private static int readUnsignedShort(final int index, byte[] basicClass) {
- return ((basicClass[index] & 0xFF) << 8) | (basicClass[index + 1] & 0xFF);
- }
-
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/RedirectorTransformer.java b/src/main/java/com/gtnewhorizons/angelica/transform/RedirectorTransformer.java
index a5fdd2399..eea3fa38f 100644
--- a/src/main/java/com/gtnewhorizons/angelica/transform/RedirectorTransformer.java
+++ b/src/main/java/com/gtnewhorizons/angelica/transform/RedirectorTransformer.java
@@ -1,6 +1,7 @@
package com.gtnewhorizons.angelica.transform;
import com.google.common.collect.ImmutableSet;
+import com.gtnewhorizon.gtnhlib.asm.ClassConstantPoolParser;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import com.gtnewhorizons.angelica.loading.AngelicaTweaker;
import net.coderbot.iris.IrisLogging;
@@ -42,8 +43,7 @@ import static com.gtnewhorizons.angelica.transform.BlockTransformer.BlockClass;
import static com.gtnewhorizons.angelica.transform.BlockTransformer.BlockPackage;
/**
- * This transformer redirects all Tessellator.instance field accesses to go through our TessellatorManager.
- * As well as redirect some GL calls to our custom GLStateManager
+ * This transformer redirects many GL calls to our custom GLStateManager
*/
public class RedirectorTransformer implements IClassTransformer {
@@ -60,7 +60,6 @@ public class RedirectorTransformer implements IClassTransformer {
private static final String OpenGlHelper = "net/minecraft/client/renderer/OpenGlHelper";
private static final String EXTBlendFunc = "org/lwjgl/opengl/EXTBlendFuncSeparate";
private static final String ARBMultiTexture = "org/lwjgl/opengl/ARBMultitexture";
- private static final String TessellatorClass = "net/minecraft/client/renderer/Tessellator";
private static final String MinecraftClient = "net.minecraft.client";
private static final String SplashProgress = "cpw.mods.fml.client.SplashProgress";
private static final String ThreadedBlockData = "com/gtnewhorizons/angelica/glsm/ThreadedBlockData";
@@ -77,8 +76,7 @@ public class RedirectorTransformer implements IClassTransformer {
"net/minecraft/block/material/"
);
- private static final ClassConstantPoolParser cstPoolParser = new ClassConstantPoolParser(GL11, GL13, GL14, OpenGlHelper, EXTBlendFunc, ARBMultiTexture, TessellatorClass, BlockPackage,
- Project);
+ private static final ClassConstantPoolParser cstPoolParser = new ClassConstantPoolParser(GL11, GL13, GL14, OpenGlHelper, EXTBlendFunc, ARBMultiTexture, BlockPackage, Project);
private static final Map> methodRedirects = new HashMap<>();
private static final Map glCapRedirects = new HashMap<>();
private static final List TransformerExclusions = Arrays.asList(
@@ -280,7 +278,7 @@ public class RedirectorTransformer implements IClassTransformer {
cr.accept(cn, 0);
final boolean changed = transformClassNode(transformedName, cn);
if (changed) {
- ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
+ final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
cn.accept(cw);
final byte[] bytes = cw.toByteArray();
saveTransformedClass(bytes, transformedName);
@@ -290,8 +288,7 @@ public class RedirectorTransformer implements IClassTransformer {
}
/** @return Was the class changed? */
- public boolean transformClassNode(String transformedName, ClassNode cn)
- {
+ public boolean transformClassNode(String transformedName, ClassNode cn) {
if (cn == null) {
return false;
}
@@ -383,15 +380,6 @@ public class RedirectorTransformer implements IClassTransformer {
}
}
}
- else if (node.getOpcode() == Opcodes.GETSTATIC && node instanceof FieldInsnNode fNode) {
- if ((fNode.name.equals("field_78398_a") || fNode.name.equals("instance")) && fNode.owner.equals(TessellatorClass)) {
- if (IrisLogging.ENABLE_SPAM) {
- AngelicaTweaker.LOGGER.info("Redirecting Tessellator.instance field in {} to TessellatorManager.get()", transformedName);
- }
- mn.instructions.set(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "com/gtnewhorizons/angelica/glsm/TessellatorManager", "get", "()Lnet/minecraft/client/renderer/Tessellator;", false));
- changed = true;
- }
- }
else if ((node.getOpcode() == Opcodes.GETFIELD || node.getOpcode() == Opcodes.PUTFIELD) && node instanceof FieldInsnNode fNode) {
if(!blockOwnerExclusions.contains(fNode.owner) && isBlockSubclass(fNode.owner) && isSodiumEnabled()) {
Pair fieldToRedirect = null;
@@ -409,7 +397,7 @@ public class RedirectorTransformer implements IClassTransformer {
fNode.name = fieldToRedirect.getLeft(); // use unobfuscated name
fNode.owner = ThreadedBlockData;
// Inject getter before the field access, to turn Block -> ThreadedBlockData
- MethodInsnNode getter = new MethodInsnNode(Opcodes.INVOKESTATIC, ThreadedBlockData, "get", "(L" + BlockClass + ";)L" + ThreadedBlockData + ";", false);
+ final MethodInsnNode getter = new MethodInsnNode(Opcodes.INVOKESTATIC, ThreadedBlockData, "get", "(L" + BlockClass + ";)L" + ThreadedBlockData + ";", false);
if(node.getOpcode() == Opcodes.GETFIELD) {
mn.instructions.insertBefore(fNode, getter);
} else if(node.getOpcode() == Opcodes.PUTFIELD) {
diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/compat/ExtraUtilsTransformer.java b/src/main/java/com/gtnewhorizons/angelica/transform/compat/ExtraUtilsTransformer.java
index f49bc86b7..1d775cb73 100644
--- a/src/main/java/com/gtnewhorizons/angelica/transform/compat/ExtraUtilsTransformer.java
+++ b/src/main/java/com/gtnewhorizons/angelica/transform/compat/ExtraUtilsTransformer.java
@@ -1,7 +1,6 @@
package com.gtnewhorizons.angelica.transform.compat;
import com.gtnewhorizons.angelica.loading.AngelicaTweaker;
-import com.gtnewhorizons.angelica.transform.ClassConstantPoolParser;
import net.minecraft.launchwrapper.IClassTransformer;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
diff --git a/src/main/java/com/gtnewhorizons/angelica/utils/DirUtil.java b/src/main/java/com/gtnewhorizons/angelica/utils/DirUtil.java
deleted file mode 100644
index f579208ed..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/utils/DirUtil.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.gtnewhorizons.angelica.utils;
-
-import net.minecraftforge.common.util.ForgeDirection;
-
-public class DirUtil {
-
- public static ForgeDirection fromName(String name) {
- return switch (name) {
- case "up" -> ForgeDirection.UP;
- case "down" -> ForgeDirection.DOWN;
- case "north" -> ForgeDirection.NORTH;
- case "south" -> ForgeDirection.SOUTH;
- case "west" -> ForgeDirection.WEST;
- case "east" -> ForgeDirection.EAST;
- case "unknown" -> ForgeDirection.UNKNOWN;
- default -> null;
- };
- }
-}
diff --git a/src/main/java/com/gtnewhorizons/angelica/utils/JsonUtil.java b/src/main/java/com/gtnewhorizons/angelica/utils/JsonUtil.java
deleted file mode 100644
index 87b47ad35..000000000
--- a/src/main/java/com/gtnewhorizons/angelica/utils/JsonUtil.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.gtnewhorizons.angelica.utils;
-
-import com.google.gson.JsonObject;
-
-public class JsonUtil {
-
- public static boolean loadBool(JsonObject in, String name, boolean defaul) {
- if (in.has(name))
- return in.getAsJsonPrimitive(name).getAsBoolean();
-
- return defaul;
- }
-
- public static float loadFloat(JsonObject in, String name) {
- if (in.has(name))
- return in.getAsJsonPrimitive(name).getAsFloat();
-
- throw new RuntimeException("Required field " + name + " not found in JsonObject " + in);
- }
-
- public static int loadInt(JsonObject in, String name, int defaul) {
- if (in.has(name))
- return in.getAsJsonPrimitive(name).getAsInt();
-
- return defaul;
- }
-
- public static String loadStr(JsonObject in, String name) {
- if (in.has(name))
- return in.getAsJsonPrimitive(name).getAsString();
-
- throw new RuntimeException("Required field " + name + " not found in JsonObject " + in);
- }
-
- public static String loadStr(JsonObject in, String name, String defaul) {
- if (in.has(name))
- return in.getAsJsonPrimitive(name).getAsString();
-
- return defaul;
- }
-}
diff --git a/src/main/java/jss/notfine/render/RenderStars.java b/src/main/java/jss/notfine/render/RenderStars.java
index e6206afe6..ba17b10b2 100644
--- a/src/main/java/jss/notfine/render/RenderStars.java
+++ b/src/main/java/jss/notfine/render/RenderStars.java
@@ -1,8 +1,9 @@
package jss.notfine.render;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
-import com.gtnewhorizons.angelica.glsm.VBOManager;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VBOManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
import jss.notfine.core.Settings;
import jss.util.RandomXoshiro256StarStar;
import net.minecraft.client.renderer.RenderGlobal;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/gl/attribute/BufferVertexFormat.java b/src/main/java/me/jellysquid/mods/sodium/client/gl/attribute/BufferVertexFormat.java
index e5c05565d..9fda9d775 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/gl/attribute/BufferVertexFormat.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/gl/attribute/BufferVertexFormat.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.gl.attribute;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
public interface BufferVertexFormat {
static BufferVertexFormat from(VertexFormat format) {
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/light/EntityLighter.java b/src/main/java/me/jellysquid/mods/sodium/client/model/light/EntityLighter.java
index 892202096..78b08607a 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/light/EntityLighter.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/light/EntityLighter.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.model.light;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import net.minecraft.util.MathHelper;
import net.minecraft.entity.Entity;
import net.minecraft.world.EnumSkyBlock;
@@ -14,30 +14,30 @@ public class EntityLighter {
private static final double MAX_LIGHTMAP_COORD = 240.0D;
public static int getBlendedLight(Entity entity, float tickDelta) {
- boolean calcBlockLight = !entity.isBurning();
+ final boolean calcBlockLight = !entity.isBurning();
// Find the interpolated position of the entity
- double x1 = lerp(entity.prevPosX, entity.posX, tickDelta);
- double y1 = lerp(entity.prevPosY, entity.posY, tickDelta);
- double z1 = lerp(entity.prevPosZ, entity.posZ, tickDelta);
+ final double x1 = lerp(entity.prevPosX, entity.posX, tickDelta);
+ final double y1 = lerp(entity.prevPosY, entity.posY, tickDelta);
+ final double z1 = lerp(entity.prevPosZ, entity.posZ, tickDelta);
// Bounding boxes with no volume cause issues, ensure they're non-zero
// Notably, armor stands in "Marker" mode decide this is a cute thing to do
// https://github.com/jellysquid3/sodium-fabric/issues/60
- double width = Math.max(entity.width, MIN_BOX_SIZE);
- double height = Math.max(entity.height, MIN_BOX_SIZE);
+ final double width = Math.max(entity.width, MIN_BOX_SIZE);
+ final double height = Math.max(entity.height, MIN_BOX_SIZE);
- double x2 = x1 + width;
- double y2 = y1 + height;
- double z2 = z1 + width;
+ final double x2 = x1 + width;
+ final double y2 = y1 + height;
+ final double z2 = z1 + width;
// The sampling volume of blocks which could possibly contribute light to this entity
- int bMinX = MathHelper.floor_double(x1);
- int bMinY = MathHelper.floor_double(y1);
- int bMinZ = MathHelper.floor_double(z1);
- int bMaxX = MathHelper.ceiling_double_int(x2);
- int bMaxY = MathHelper.ceiling_double_int(y2);
- int bMaxZ = MathHelper.ceiling_double_int(z2);
+ final int bMinX = MathHelper.floor_double(x1);
+ final int bMinY = MathHelper.floor_double(y1);
+ final int bMinZ = MathHelper.floor_double(z1);
+ final int bMaxX = MathHelper.ceiling_double_int(x2);
+ final int bMaxY = MathHelper.ceiling_double_int(y2);
+ final int bMaxZ = MathHelper.ceiling_double_int(z2);
// The maximum amount of light that could be contributed
double max = 0.0D;
@@ -46,16 +46,16 @@ public class EntityLighter {
double sl = 0;
double bl = 0;
- BlockPosImpl pos = new BlockPosImpl();
+ final BlockPos pos = new BlockPos();
// Iterate over every block in the sampling volume
for (int bX = bMinX; bX < bMaxX; bX++) {
- double ix1 = Math.max(bX, x1);
- double ix2 = Math.min(bX + 1, x2);
+ final double ix1 = Math.max(bX, x1);
+ final double ix2 = Math.min(bX + 1, x2);
for (int bY = bMinY; bY < bMaxY; bY++) {
- double iy1 = Math.max(bY, y1);
- double iy2 = Math.min(bY + 1, y2);
+ final double iy1 = Math.max(bY, y1);
+ final double iy2 = Math.min(bY + 1, y2);
for (int bZ = bMinZ; bZ < bMaxZ; bZ++) {
pos.set(bX, bY, bZ);
@@ -67,11 +67,11 @@ public class EntityLighter {
}
// Find the intersecting volume between the entity box and the block's bounding box
- double iz1 = Math.max(bZ, z1);
- double iz2 = Math.min(bZ + 1, z2);
+ final double iz1 = Math.max(bZ, z1);
+ final double iz2 = Math.min(bZ + 1, z2);
// The amount of light this block can contribute is the volume of the intersecting box
- double weight = (ix2 - ix1) * (iy2 - iy1) * (iz2 - iz1);
+ final double weight = (ix2 - ix1) * (iy2 - iy1) * (iz2 - iz1);
// Keep count of how much light could've been contributed
max += weight;
@@ -93,8 +93,8 @@ public class EntityLighter {
}
// The final light value is calculated from the percentage of light contributed out of the total maximum
- int bli = MathHelper.floor_double((bl / max) * MAX_LIGHTMAP_COORD);
- int sli = MathHelper.floor_double((sl / max) * MAX_LIGHTMAP_COORD);
+ final int bli = MathHelper.floor_double((bl / max) * MAX_LIGHTMAP_COORD);
+ final int sli = MathHelper.floor_double((sl / max) * MAX_LIGHTMAP_COORD);
return ((sli & 0xFFFF) << 16) | (bli & 0xFFFF);
}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/light/LightPipeline.java b/src/main/java/me/jellysquid/mods/sodium/client/model/light/LightPipeline.java
index a7e75eff5..7561ae449 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/light/LightPipeline.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/light/LightPipeline.java
@@ -1,8 +1,8 @@
package me.jellysquid.mods.sodium.client.model.light;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.ModelQuadView;
import me.jellysquid.mods.sodium.client.model.light.data.QuadLightData;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadView;
import net.minecraftforge.common.util.ForgeDirection;
/**
@@ -18,5 +18,5 @@ public interface LightPipeline {
* @param face The pre-computed facing vector of the quad
* @param shade True if the block is shaded by ambient occlusion
*/
- void calculate(ModelQuadView quad, BlockPosImpl pos, QuadLightData out, ForgeDirection cullFace, ForgeDirection face, boolean shade);
+ void calculate(ModelQuadView quad, BlockPos pos, QuadLightData out, ForgeDirection cullFace, ForgeDirection face, boolean shade);
}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/light/cache/HashLightDataCache.java b/src/main/java/me/jellysquid/mods/sodium/client/model/light/cache/HashLightDataCache.java
index 4b1dd167d..e8c10ebaa 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/light/cache/HashLightDataCache.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/light/cache/HashLightDataCache.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.model.light.cache;
-import com.gtnewhorizons.angelica.api.BlockPos;
+import com.gtnewhorizon.gtnhlib.blockpos.IBlockPos;
import it.unimi.dsi.fastutil.longs.Long2LongLinkedOpenHashMap;
import me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess;
import me.jellysquid.mods.sodium.client.world.WorldSlice;
@@ -19,7 +19,7 @@ public class HashLightDataCache extends LightDataAccess {
@Override
public long get(int x, int y, int z) {
DynamicLightsPos.get().set(x, y, z);
- long key = BlockPos.asLong(x, y, z);
+ long key = IBlockPos.asLong(x, y, z);
long word = this.map.getAndMoveToFirst(key);
if (word == 0) {
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/light/data/LightDataAccess.java b/src/main/java/me/jellysquid/mods/sodium/client/model/light/data/LightDataAccess.java
index cb19706aa..cb44b856c 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/light/data/LightDataAccess.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/light/data/LightDataAccess.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.model.light.data;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import com.gtnewhorizons.angelica.dynamiclights.DynamicLights;
import me.jellysquid.mods.sodium.client.util.StateUtil;
import me.jellysquid.mods.sodium.client.world.WorldSlice;
@@ -23,7 +23,7 @@ import net.minecraftforge.common.util.ForgeDirection;
* You can use the various static pack/unpack methods to extract these values in a usable format.
*/
public abstract class LightDataAccess {
- public static final ThreadLocal DynamicLightsPos = ThreadLocal.withInitial(BlockPosImpl::new);
+ public static final ThreadLocal DynamicLightsPos = ThreadLocal.withInitial(BlockPos::new);
protected WorldSlice world;
public long get(int x, int y, int z, ForgeDirection d1, ForgeDirection d2) {
@@ -34,11 +34,11 @@ public abstract class LightDataAccess {
return this.get(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
}
- public long get(BlockPosImpl pos, ForgeDirection dir) {
+ public long get(BlockPos pos, ForgeDirection dir) {
return this.get(pos.x, pos.y, pos.z, dir);
}
- public long get(BlockPosImpl pos) {
+ public long get(BlockPos pos) {
return this.get(pos.x, pos.y, pos.getZ());
}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/light/flat/FlatLightPipeline.java b/src/main/java/me/jellysquid/mods/sodium/client/model/light/flat/FlatLightPipeline.java
index 466b799f5..bcbf25f66 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/light/flat/FlatLightPipeline.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/light/flat/FlatLightPipeline.java
@@ -1,12 +1,12 @@
package me.jellysquid.mods.sodium.client.model.light.flat;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.ModelQuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFlags;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import me.jellysquid.mods.sodium.client.model.light.LightPipeline;
import me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess;
import me.jellysquid.mods.sodium.client.model.light.data.QuadLightData;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadView;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFlags;
import net.coderbot.iris.block_rendering.BlockRenderingSettings;
import net.minecraftforge.common.util.ForgeDirection;
@@ -27,7 +27,7 @@ public class FlatLightPipeline implements LightPipeline {
}
@Override
- public void calculate(ModelQuadView quad, BlockPosImpl pos, QuadLightData out, ForgeDirection cullFace, ForgeDirection face, boolean shade) {
+ public void calculate(ModelQuadView quad, BlockPos pos, QuadLightData out, ForgeDirection cullFace, ForgeDirection face, boolean shade) {
int lightmap;
// To match vanilla behavior, use the cull face if it exists/is available
@@ -57,7 +57,7 @@ public class FlatLightPipeline implements LightPipeline {
* behind tinted glass. {@link LightDataAccess} cannot efficiently store lightmaps computed with
* inconsistent values so this method exists to mirror vanilla behavior as closely as possible.
*/
- private int getOffsetLightmap(BlockPosImpl pos, ForgeDirection face) {
+ private int getOffsetLightmap(BlockPos pos, ForgeDirection face) {
int lightmap = LightDataAccess.getLightMap(this.lightCache.get(pos, face));
// If the block light is not 15 (max)...
if ((lightmap & 0xF0) != 0xF0) {
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/AoFaceData.java b/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/AoFaceData.java
index 87f0a96e9..a750add4b 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/AoFaceData.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/AoFaceData.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.model.light.smooth;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess;
import net.minecraftforge.common.util.ForgeDirection;
@@ -18,7 +18,7 @@ class AoFaceData {
private int flags;
- public void initLightData(LightDataAccess cache, BlockPosImpl pos, ForgeDirection direction, boolean offset) {
+ public void initLightData(LightDataAccess cache, BlockPos pos, ForgeDirection direction, boolean offset) {
final int x = pos.x;
final int y = pos.y;
final int z = pos.z;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/SmoothLightPipeline.java b/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/SmoothLightPipeline.java
index a149905e5..6ed9c7be3 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/SmoothLightPipeline.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/light/smooth/SmoothLightPipeline.java
@@ -1,13 +1,13 @@
package me.jellysquid.mods.sodium.client.model.light.smooth;
import com.google.common.math.DoubleMath;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.ModelQuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFlags;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import me.jellysquid.mods.sodium.client.model.light.LightPipeline;
import me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess;
import me.jellysquid.mods.sodium.client.model.light.data.QuadLightData;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadView;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFlags;
import net.coderbot.iris.block_rendering.BlockRenderingSettings;
import net.minecraftforge.common.util.ForgeDirection;
@@ -71,7 +71,7 @@ public class SmoothLightPipeline implements LightPipeline {
}
@Override
- public void calculate(ModelQuadView quad, BlockPosImpl pos, QuadLightData out, ForgeDirection cullFace, ForgeDirection face, boolean shade) {
+ public void calculate(ModelQuadView quad, BlockPos pos, QuadLightData out, ForgeDirection cullFace, ForgeDirection face, boolean shade) {
this.updateCachedData(pos.asLong());
final int flags = quad.getFlags();
@@ -107,7 +107,7 @@ public class SmoothLightPipeline implements LightPipeline {
* have two contributing sides.
* Flags: IS_ALIGNED, !IS_PARTIAL
*/
- private void applyAlignedFullFace(AoNeighborInfo neighborInfo, BlockPosImpl pos, ForgeDirection dir, QuadLightData out) {
+ private void applyAlignedFullFace(AoNeighborInfo neighborInfo, BlockPos pos, ForgeDirection dir, QuadLightData out) {
final AoFaceData faceData = this.getCachedFaceData(pos, dir, true);
neighborInfo.mapCorners(faceData.lm, faceData.ao, out.lm, out.br);
}
@@ -116,7 +116,7 @@ public class SmoothLightPipeline implements LightPipeline {
* Calculates the light data for a grid-aligned quad that does not cover the entire block volume's face.
* Flags: IS_ALIGNED, IS_PARTIAL
*/
- private void applyAlignedPartialFace(AoNeighborInfo neighborInfo, ModelQuadView quad, BlockPosImpl pos, ForgeDirection dir, QuadLightData out) {
+ private void applyAlignedPartialFace(AoNeighborInfo neighborInfo, ModelQuadView quad, BlockPos pos, ForgeDirection dir, QuadLightData out) {
for (int i = 0; i < 4; i++) {
// Clamp the vertex positions to the block's boundaries to prevent weird errors in lighting
final float cx = clamp(quad.getX(i));
@@ -130,13 +130,13 @@ public class SmoothLightPipeline implements LightPipeline {
}
/**
- * This method is the same as {@link #applyNonParallelFace(AoNeighborInfo, ModelQuadView, BlockPosImpl, ForgeDirection,
+ * This method is the same as {@link #applyNonParallelFace(AoNeighborInfo, ModelQuadView, BlockPos, ForgeDirection,
* QuadLightData)} but with the check for a depth of approximately 0 removed. If the quad is parallel but not
* aligned, all of its vertices will have the same depth and this depth must be approximately greater than 0,
* meaning the check for 0 will always return false.
* Flags: !IS_ALIGNED, IS_PARALLEL
*/
- private void applyParallelFace(AoNeighborInfo neighborInfo, ModelQuadView quad, BlockPosImpl pos, ForgeDirection dir, QuadLightData out) {
+ private void applyParallelFace(AoNeighborInfo neighborInfo, ModelQuadView quad, BlockPos pos, ForgeDirection dir, QuadLightData out) {
for (int i = 0; i < 4; i++) {
// Clamp the vertex positions to the block's boundaries to prevent weird errors in lighting
final float cx = clamp(quad.getX(i));
@@ -163,7 +163,7 @@ public class SmoothLightPipeline implements LightPipeline {
/**
* Flags: !IS_ALIGNED, !IS_PARALLEL
*/
- private void applyNonParallelFace(AoNeighborInfo neighborInfo, ModelQuadView quad, BlockPosImpl pos, ForgeDirection dir, QuadLightData out) {
+ private void applyNonParallelFace(AoNeighborInfo neighborInfo, ModelQuadView quad, BlockPos pos, ForgeDirection dir, QuadLightData out) {
for (int i = 0; i < 4; i++) {
// Clamp the vertex positions to the block's boundaries to prevent weird errors in lighting
final float cx = clamp(quad.getX(i));
@@ -188,7 +188,7 @@ public class SmoothLightPipeline implements LightPipeline {
}
}
- private void applyAlignedPartialFaceVertex(BlockPosImpl pos, ForgeDirection dir, float[] w, int i, QuadLightData out, boolean offset) {
+ private void applyAlignedPartialFaceVertex(BlockPos pos, ForgeDirection dir, float[] w, int i, QuadLightData out, boolean offset) {
final AoFaceData faceData = this.getCachedFaceData(pos, dir, offset);
if (!faceData.hasUnpackedLightData()) {
@@ -203,7 +203,7 @@ public class SmoothLightPipeline implements LightPipeline {
out.lm[i] = getLightMapCoord(sl, bl);
}
- private void applyInsetPartialFaceVertex(BlockPosImpl pos, ForgeDirection dir, float n1d, float n2d, float[] w, int i, QuadLightData out) {
+ private void applyInsetPartialFaceVertex(BlockPos pos, ForgeDirection dir, float n1d, float n2d, float[] w, int i, QuadLightData out) {
final AoFaceData n1 = this.getCachedFaceData(pos, dir, false);
if (!n1.hasUnpackedLightData()) {
@@ -241,7 +241,7 @@ public class SmoothLightPipeline implements LightPipeline {
/**
* Returns the cached data for a given facing or calculates it if it hasn't been cached.
*/
- private AoFaceData getCachedFaceData(BlockPosImpl pos, ForgeDirection face, boolean offset) {
+ private AoFaceData getCachedFaceData(BlockPos pos, ForgeDirection face, boolean offset) {
final AoFaceData data = this.cachedFaceData[offset ? face.ordinal() : face.ordinal() + 6];
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuad.java b/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuad.java
deleted file mode 100644
index 75f47a74d..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuad.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package me.jellysquid.mods.sodium.client.model.quad;
-
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraftforge.common.util.ForgeDirection;
-
-import static me.jellysquid.mods.sodium.client.util.ModelQuadUtil.COLOR_INDEX;
-import static me.jellysquid.mods.sodium.client.util.ModelQuadUtil.LIGHT_INDEX;
-import static me.jellysquid.mods.sodium.client.util.ModelQuadUtil.NORMAL_INDEX;
-import static me.jellysquid.mods.sodium.client.util.ModelQuadUtil.POSITION_INDEX;
-import static me.jellysquid.mods.sodium.client.util.ModelQuadUtil.TEXTURE_INDEX;
-import static me.jellysquid.mods.sodium.client.util.ModelQuadUtil.VERTEX_SIZE;
-import static me.jellysquid.mods.sodium.client.util.ModelQuadUtil.vertexOffset;
-
-/**
- * A simple implementation of the {@link ModelQuadViewMutable} interface which can provide an on-heap scratch area
- * for storing quad vertex data.
- */
-public class ModelQuad implements ModelQuadViewMutable {
- private final int[] data = new int[VERTEX_SIZE * 4];
- private int flags;
-
- private TextureAtlasSprite sprite;
- private int colorIdx;
-
- @Override
- public void setX(int idx, float x) {
- this.data[vertexOffset(idx) + POSITION_INDEX] = Float.floatToRawIntBits(x);
- }
-
- @Override
- public void setY(int idx, float y) {
- this.data[vertexOffset(idx) + POSITION_INDEX + 1] = Float.floatToRawIntBits(y);
- }
-
- @Override
- public void setZ(int idx, float z) {
- this.data[vertexOffset(idx) + POSITION_INDEX + 2] = Float.floatToRawIntBits(z);
- }
-
- @Override
- public void setColor(int idx, int color) {
- this.data[vertexOffset(idx) + COLOR_INDEX] = color;
- }
-
- @Override
- public void setTexU(int idx, float u) {
- this.data[vertexOffset(idx) + TEXTURE_INDEX] = Float.floatToRawIntBits(u);
- }
-
- @Override
- public void setTexV(int idx, float v) {
- this.data[vertexOffset(idx) + TEXTURE_INDEX + 1] = Float.floatToRawIntBits(v);
- }
-
- @Override
- public void setLight(int idx, int light) {
- this.data[vertexOffset(idx) + LIGHT_INDEX] = light;
- }
-
- @Override
- public void setNormal(int idx, int norm) {
- this.data[vertexOffset(idx) + NORMAL_INDEX] = norm;
- }
-
- @Override
- public void setFlags(int flags) {
- this.flags = flags;
- }
-
- @Override
- public void setSprite(TextureAtlasSprite sprite) {
- this.sprite = sprite;
- }
-
- @Override
- public void setColorIndex(int index) {
- this.colorIdx = index;
- }
-
- /**
- * Doesn't do anything useful, but I'm not sure if it has to.
- */
- @Override
- public void setCullFace(ForgeDirection f) {}
-
- @Override
- public int getLight(int idx) {
- return this.data[vertexOffset(idx) + LIGHT_INDEX];
- }
-
- @Override
- public int getNormal(int idx) {
- return this.data[vertexOffset(idx) + NORMAL_INDEX];
- }
-
- @Override
- public int getColorIndex() {
- return this.colorIdx;
- }
-
- /**
- * Doesn't do anything useful, but I'm not sure if it has to.
- */
- @Override
- public ForgeDirection getLightFace() {
- return ForgeDirection.UP;
- }
-
- /**
- * Doesn't do anything useful, but I'm not sure if it has to.
- */
- @Override
- public ForgeDirection getCullFace() {
- return ForgeDirection.UNKNOWN;
- }
-
- @Override
- public float getX(int idx) {
- return Float.intBitsToFloat(this.data[vertexOffset(idx) + POSITION_INDEX]);
- }
-
- @Override
- public float getY(int idx) {
- return Float.intBitsToFloat(this.data[vertexOffset(idx) + POSITION_INDEX + 1]);
- }
-
- @Override
- public float getZ(int idx) {
- return Float.intBitsToFloat(this.data[vertexOffset(idx) + POSITION_INDEX + 2]);
- }
-
- @Override
- public int getColor(int idx) {
- if(vertexOffset(idx) + COLOR_INDEX < data.length) {
- return this.data[vertexOffset(idx) + COLOR_INDEX];
- }
- else {
- return data.length;
- }
- }
-
- @Override
- public float getTexU(int idx) {
- return Float.intBitsToFloat(this.data[vertexOffset(idx) + TEXTURE_INDEX]);
- }
-
- @Override
- public float getTexV(int idx) {
- return Float.intBitsToFloat(this.data[vertexOffset(idx) + TEXTURE_INDEX + 1]);
- }
-
- @Override
- public int getFlags() {
- return this.flags;
- }
-
- @Override
- public TextureAtlasSprite rubidium$getSprite() {
- return this.sprite;
- }
-
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuadView.java b/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuadView.java
deleted file mode 100644
index 69c66976e..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuadView.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package me.jellysquid.mods.sodium.client.model.quad;
-
-import com.gtnewhorizons.angelica.models.NdQuadBuilder;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFlags;
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraftforge.common.util.ForgeDirection;
-
-import java.nio.ByteBuffer;
-
-/**
- * Provides a read-only view of a model quad. For mutable access to a model quad, see {@link ModelQuadViewMutable}.
- */
-public interface ModelQuadView {
- /**
- * @return The x-position of the vertex at index {@param idx}
- */
- float getX(int idx);
-
- /**
- * @return The y-position of the vertex at index {@param idx}
- */
- float getY(int idx);
-
- /**
- * @return The z-position of the vertex at index {@param idx}
- */
- float getZ(int idx);
-
- /**
- * @return The integer-encoded color (ABGR?) of the vertex at index {@param idx}
- */
- int getColor(int idx);
-
- /**
- * @return The texture x-coordinate for the vertex at index {@param idx}
- */
- float getTexU(int idx);
-
- /**
- * @return The texture y-coordinate for the vertex at index {@param idx}
- */
- float getTexV(int idx);
-
- /**
- * @return The integer bit flags containing the {@link ModelQuadFlags} for this quad
- */
- int getFlags();
-
- /**
- * @return The lightmap texture coordinates for the vertex at index {@param idx}
- */
- int getLight(int idx);
-
- /**
- * @return The integer-encoded normal vector for the vertex at index {@param idx}
- */
- int getNormal(int idx);
-
- /**
- * @return The color index of this quad.
- */
- int getColorIndex();
-
- /**
- * If not {@link ForgeDirection#UNKNOWN}, quad should not be rendered in-world if the
- * opposite face of a neighbor block occludes it.
- *
- * @see NdQuadBuilder#cullFace(ForgeDirection)
- */
- ForgeDirection getCullFace();
-
- /**
- * This is the face used for vanilla lighting calculations and will be the block face
- * to which the quad is most closely aligned. Always the same as cull face for quads
- * that are on a block face, but never {@link ForgeDirection#UNKNOWN} or null.
- */
- ForgeDirection getLightFace();
-
- /**
- * Copies this quad's data into the specified buffer starting at the given position.
- * @param buf The buffer to write this quad's data to
- * @param position The starting byte index to write to
- */
- default void copyInto(ByteBuffer buf, int position) {
- for (int i = 0; i < 4; i++) {
- buf.putFloat(position, this.getX(i));
- buf.putFloat(position + 4, this.getY(i));
- buf.putFloat(position + 8, this.getZ(i));
- buf.putInt(position + 12, this.getColor(i));
- buf.putFloat(position + 16, this.getTexU(i));
- buf.putFloat(position + 20, this.getTexV(i));
- buf.putInt(position + 24, this.getLight(i));
-
- position += 28;
- }
- }
-
- /**
- * @return The sprite texture used by this quad, or null if none is attached
- */
- TextureAtlasSprite rubidium$getSprite();
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuadViewMutable.java b/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuadViewMutable.java
deleted file mode 100644
index 1731403ef..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuadViewMutable.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package me.jellysquid.mods.sodium.client.model.quad;
-
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFlags;
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraftforge.common.util.ForgeDirection;
-
-/**
- * Provides a mutable view to a model quad.
- */
-public interface ModelQuadViewMutable extends ModelQuadView {
- /**
- * Sets the x-position of the vertex at index {@param idx} to the value {@param x}
- */
- void setX(int idx, float x);
-
- /**
- * Sets the y-position of the vertex at index {@param idx} to the value {@param y}
- */
- void setY(int idx, float y);
-
- /**
- * Sets the z-position of the vertex at index {@param idx} to the value {@param z}
- */
- void setZ(int idx, float z);
-
- /**
- * Sets the integer-encoded color of the vertex at index {@param idx} to the value {@param color}
- */
- void setColor(int idx, int color);
-
- /**
- * Convenience: set vertex color for all vertices at once.
- */
- default void setColors(int abgr) {
- this.setColor(0, abgr);
- this.setColor(1, abgr);
- this.setColor(2, abgr);
- this.setColor(3, abgr);
- }
-
- /**
- * Sets the texture x-coordinate of the vertex at index {@param idx} to the value {@param u}
- */
- void setTexU(int idx, float u);
-
- /**
- * Sets the texture y-coordinate of the vertex at index {@param idx} to the value {@param v}
- */
- void setTexV(int idx, float v);
-
- /**
- * Sets the light map texture coordinate of the vertex at index {@param idx} to the value {@param light}
- */
- void setLight(int idx, int light);
-
- /**
- * Sets the integer-encoded normal vector of the vertex at index {@param idx} to the value {@param light}
- */
- void setNormal(int idx, int norm);
-
- /**
- * Sets the bit-flag field which contains the {@link ModelQuadFlags} for this quad
- */
- void setFlags(int flags);
-
- /**
- * Sets the sprite used by this quad
- */
- void setSprite(TextureAtlasSprite sprite);
-
- /**
- * Sets the color index used by this quad
- */
- void setColorIndex(int index);
-
- /**
- * If not {@link ForgeDirection#UNKNOWN}, quad is coplanar with a block face which, if known, simplifies
- * or shortcuts geometric analysis that might otherwise be needed.
- * Set to {@link ForgeDirection#UNKNOWN} if quad is not coplanar or if this is not known.
- * Also controls face culling during block rendering.
- *
- * {@link ForgeDirection#UNKNOWN} by default.
- *
- *
This is different from the value reported by {@link Quad#getLightFace()}. That value
- * is computed based on face geometry and must be non-{@link ForgeDirection#UNKNOWN} in vanilla quads.
- * That computed value is returned by {@link #getLightFace()}.
- */
- void setCullFace(ForgeDirection dir);
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/Quad.java b/src/main/java/me/jellysquid/mods/sodium/client/model/quad/Quad.java
deleted file mode 100644
index 5a06b9ba1..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/Quad.java
+++ /dev/null
@@ -1,325 +0,0 @@
-package me.jellysquid.mods.sodium.client.model.quad;
-
-import com.gtnewhorizons.angelica.api.QuadView;
-import lombok.Getter;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFlags;
-import me.jellysquid.mods.sodium.client.render.pipeline.BlockRenderer;
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.joml.Vector3f;
-import org.lwjgl.opengl.GL11;
-
-import java.util.Locale;
-
-/**
- * Roughly equivalent to 16.5's BakedQuadView and BakedQuadMixin
- */
-public class Quad implements QuadView {
- // Adapted from Neodymium
-
- public static final int VERTEX_STRIDE = 8;
- public static final int QUAD_STRIDE = VERTEX_STRIDE * 4;
- public static final int X_INDEX = 0;
- public static final int Y_INDEX = 1;
- public static final int Z_INDEX = 2;
- public static final int U_INDEX = 3;
- public static final int V_INDEX = 4;
- public static final int COLOR_INDEX = 5;
- public static final int NORMAL_INDEX = 6;
- public static final int LIGHTMAP_INDEX = 7;
-
- private final static int DEFAULT_LIGHTMAP = 15 << 20 | 15 << 4;
- private final static int DEFAULT_COLOR = 0xFFFFFFFF;
-
- protected final int[] data = new int[QUAD_STRIDE];
-
- @Getter
- private boolean deleted = false;
-
- private final Vector3f vectorA = new Vector3f(), vectorB = new Vector3f(), vectorC = new Vector3f();
-
- @Getter
- private boolean shade;
- private int cachedFlags;
- @Getter
- private ForgeDirection face;
- private int colorIndex = -1;
- private TextureAtlasSprite sprite = null;
-
- /** Returns the face, forced to take one of 6 directions to mirror the behavior of baked quads in 1.16.5. */
- @Override
- public ForgeDirection getLightFace() {
- return this.face != ForgeDirection.UNKNOWN ? this.face : ForgeDirection.UP;
- }
-
- @Override
- public ForgeDirection getCullFace() {
- return this.face;
- }
-
- @Override
- public float getX(int idx) {
- return Float.intBitsToFloat(this.data[idx * VERTEX_STRIDE + X_INDEX]);
- }
-
- @Override
- public float getY(int idx) {
- return Float.intBitsToFloat(this.data[idx * VERTEX_STRIDE + Y_INDEX]);
- }
-
- @Override
- public float getZ(int idx) {
- return Float.intBitsToFloat(this.data[idx * VERTEX_STRIDE + Z_INDEX]);
- }
-
- @Override
- public float getTexU(int idx) {
- return Float.intBitsToFloat(this.data[idx * VERTEX_STRIDE + U_INDEX]);
- }
-
- @Override
- public float getTexV(int idx) {
- return Float.intBitsToFloat(this.data[idx * VERTEX_STRIDE + V_INDEX]);
- }
-
- @Override
- public int getColor(int idx) {
- return this.data[idx * VERTEX_STRIDE + COLOR_INDEX];
- }
-
- @Override
- public int getLight(int idx) {
- return this.data[idx * VERTEX_STRIDE + LIGHTMAP_INDEX];
- }
-
- @Override
- public int getNormal(int idx) {
- return this.data[idx * VERTEX_STRIDE + NORMAL_INDEX];
- }
-
- @Override
- public int getFlags() {
- return this.cachedFlags;
- }
-
- @Override
- public int getColorIndex() {
- return this.colorIndex;
- }
-
- @Override
- public TextureAtlasSprite rubidium$getSprite() {
- return this.sprite;
- }
-
-
- @Override
- public void setCullFace(ForgeDirection face) {
- this.face = face;
- }
-
- @Override
- public void setX(int idx, float x) {
- this.data[idx * VERTEX_STRIDE + X_INDEX] = Float.floatToRawIntBits(x);
- }
-
- @Override
- public void setY(int idx, float y) {
- this.data[idx * VERTEX_STRIDE + Y_INDEX] = Float.floatToRawIntBits(y);
- }
-
- @Override
- public void setZ(int idx, float z) {
- this.data[idx * VERTEX_STRIDE + Z_INDEX] = Float.floatToRawIntBits(z);
- }
-
- @Override
- public void setTexU(int idx, float u) {
- this.data[idx * VERTEX_STRIDE + U_INDEX] = Float.floatToRawIntBits(u);
- }
-
- @Override
- public void setTexV(int idx, float v) {
- this.data[idx * VERTEX_STRIDE + V_INDEX] = Float.floatToRawIntBits(v);
- }
-
- @Override
- public void setColor(int idx, int c) {
- this.data[idx * VERTEX_STRIDE + COLOR_INDEX] = c;
- }
-
- @Override
- public void setLight(int idx, int l) {
- this.data[idx * VERTEX_STRIDE + LIGHTMAP_INDEX] = l;
- }
-
- @Override
- public void setNormal(int idx, int n) {
- this.data[idx * VERTEX_STRIDE + NORMAL_INDEX] = n;
- }
-
- @Override
- public void setFlags(int flags) {
- this.cachedFlags = flags;
- }
-
- @Override
- public void setColorIndex(int i) {
- this.colorIndex = i;
- }
-
- @Override
- public void setSprite(TextureAtlasSprite sprite) {
- this.sprite = sprite;
- }
-
- @Override
- public int[] getRawData() {
- return this.data;
- }
-
- /**
- * Convenience: access x, y, z by index 0-2.
- */
- private float posByIndex(int vertexIndex, int coordinateIndex) {
- return Float.intBitsToFloat(this.data[vertexIndex * VERTEX_STRIDE + coordinateIndex]);
- }
-
- /**
- * Convenience: access x, y, z by index 0-2.
- */
- private void setPosByIndex(int vertexIndex, int coordinateIndex, float val) {
- this.data[vertexIndex * VERTEX_STRIDE + coordinateIndex] = Float.floatToRawIntBits(val);
- }
-
- /**
- * Offset all xs, ys, or zs by index 0-2.
- */
- private void offsetPos(int idx, float offset) {
- this.setPosByIndex(0, idx, this.posByIndex(0, idx) + offset);
- this.setPosByIndex(1, idx, this.posByIndex(1, idx) + offset);
- this.setPosByIndex(2, idx, this.posByIndex(2, idx) + offset);
- this.setPosByIndex(3, idx, this.posByIndex(3, idx) + offset);
- }
-
- private void clearNormals() {
- this.setNormal(0, 0);
- this.setNormal(1, 0);
- this.setNormal(2, 0);
- this.setNormal(3, 0);
- }
-
- private void clearLight() {
- this.setLight(0, DEFAULT_LIGHTMAP);
- this.setLight(1, DEFAULT_LIGHTMAP);
- this.setLight(2, DEFAULT_LIGHTMAP);
- this.setLight(3, DEFAULT_LIGHTMAP);
- }
-
- private boolean isEmpty() {
- return this.getX(0) == this.getX(1)
- && this.getX(1) == this.getX(2)
- && this.getX(2) == this.getX(3)
- && this.getY(0) == this.getY(1)
- && this.getY(1) == this.getY(2)
- && this.getY(2) == this.getY(3);
- }
-
- private void calcNormal() {
- this.vectorA.set(
- this.getX(1) - this.getX(0),
- this.getY(1) - this.getY(0),
- this.getZ(1) - this.getZ(0)
- );
- this.vectorB.set(
- this.getX(2) - this.getX(1),
- this.getY(2) - this.getY(1),
- this.getZ(2) - this.getZ(1)
- );
- this.vectorA.cross(this.vectorB, this.vectorC);
- }
-
- protected void quadrangulate() {
- this.setX(3, this.getX(2));
- this.setY(3, this.getY(2));
- this.setZ(3, this.getZ(2));
-
- this.setTexU(3, this.getTexU(2));
- this.setTexV(3, this.getTexV(2));
-
- this.setLight(3, this.getLight(2));
- this.setColor(3, this.getColor(2));
- this.setNormal(3, this.getNormal(2));
- }
-
- @Override
- public QuadView copyFrom(QuadView quad) {
-
- System.arraycopy(quad.getRawData(), 0, this.data, 0, QUAD_STRIDE);
-
- this.deleted = quad.isDeleted();
- this.shade = quad.isShade();
- this.face = quad.getFace();
- this.colorIndex = quad.getColorIndex();
- this.cachedFlags = quad.getFlags();
- this.sprite = quad.rubidium$getSprite();
-
- return this;
- }
-
- private void read(int[] rawBuffer, int offset, float offsetX, float offsetY, float offsetZ, int drawMode, BlockRenderer.Flags flags) {
- System.arraycopy(rawBuffer, offset, this.data, 0, QUAD_STRIDE);
-
- if (offsetX != 0) this.offsetPos(0, offsetX);
- if (offsetY != 0) this.offsetPos(1, offsetY);
- if (offsetZ != 0) this.offsetPos(2, offsetZ);
-
- if (!flags.hasColor) this.setColors(DEFAULT_COLOR);
- if (!flags.hasNormals) this.clearNormals();
- if (!flags.hasBrightness) this.clearLight();
-
- // sus
- this.shade = flags.hasBrightness;
-
- if (drawMode == GL11.GL_TRIANGLES) this.quadrangulate();
- }
-
- @Override
- public void setState(int[] rawBuffer, int offset, BlockRenderer.Flags flags, int drawMode, float offsetX, float offsetY, float offsetZ) {
- this.deleted = false;
-
- read(rawBuffer, offset, offsetX, offsetY, offsetZ, drawMode, flags);
-
- if (this.isEmpty()) {
- // ignore empty quads (e.g. alpha pass of EnderIO item conduits)
- this.deleted = true;
- return;
- }
-
- this.calcNormal();
- this.face = ModelQuadFacing.toDirection(ModelQuadFacing.fromVector(this.vectorC));
- this.cachedFlags = ModelQuadFlags.getQuadFlags(this);
- }
-
- @Override
- public String toString() {
- return String.format(
- Locale.ENGLISH,
- "%s[(%.1f, %.1f, %.1f), (%.1f, %.1f, %.1f), (%.1f, %.1f, %.1f), (%.1f, %.1f, %.1f)]",
- this.deleted ? "XXX " : "",
- this.getX(0),
- this.getY(0),
- this.getZ(0),
- this.getX(1),
- this.getY(1),
- this.getZ(1),
- this.getX(2),
- this.getY(2),
- this.getZ(2),
- this.getX(3),
- this.getY(3),
- this.getZ(3)
- );
- }
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadFacing.java b/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadFacing.java
deleted file mode 100644
index c8f740508..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadFacing.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package me.jellysquid.mods.sodium.client.model.quad.properties;
-
-import net.minecraftforge.common.util.ForgeDirection;
-import org.joml.Vector3f;
-
-public enum ModelQuadFacing {
- UP,
- DOWN,
- EAST,
- WEST,
- SOUTH,
- NORTH,
- UNASSIGNED;
-
- public static final ModelQuadFacing[] VALUES = ModelQuadFacing.values();
- public static final int COUNT = VALUES.length;
-
- public static ModelQuadFacing fromDirection(ForgeDirection dir) {
- return switch (dir) {
- case DOWN -> DOWN;
- case UP -> UP;
- case NORTH -> NORTH;
- case SOUTH -> SOUTH;
- case WEST -> WEST;
- case EAST -> EAST;
- default -> UNASSIGNED;
- };
- }
-
- public static ForgeDirection toDirection(ModelQuadFacing dir) {
- return switch (dir) {
- case DOWN -> ForgeDirection.DOWN;
- case UP -> ForgeDirection.UP;
- case NORTH -> ForgeDirection.NORTH;
- case SOUTH -> ForgeDirection.SOUTH;
- case WEST -> ForgeDirection.WEST;
- case EAST -> ForgeDirection.EAST;
- default -> ForgeDirection.UNKNOWN;
- };
- }
-
- public static ModelQuadFacing fromVector(Vector3f normal) {
- if(normal.x == 0f) {
- if(normal.y == 0f) {
- if(normal.z > 0) {
- return SOUTH;
- } else if(normal.z < 0) {
- return NORTH;
- }
- } else if(normal.z == 0f) {
- if(normal.y > 0) {
- return UP;
- } else if(normal.y < 0) {
- return DOWN;
- }
- }
- } else if(normal.y == 0f && (normal.z == 0f)) {
- if(normal.x > 0) {
- return EAST;
- } else if(normal.x < 0) {
- return WEST;
- }
- }
- return UNASSIGNED;
- }
-
- public ModelQuadFacing getOpposite() {
- return switch (this) {
- case UP -> DOWN;
- case DOWN -> UP;
- case EAST -> WEST;
- case WEST -> EAST;
- case SOUTH -> NORTH;
- case NORTH -> SOUTH;
- default -> UNASSIGNED;
- };
- }
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadFlags.java b/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadFlags.java
deleted file mode 100644
index 4946a34e6..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadFlags.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package me.jellysquid.mods.sodium.client.model.quad.properties;
-
-import com.gtnewhorizons.angelica.compat.mojang.Axis;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadView;
-import net.minecraftforge.common.util.ForgeDirection;
-
-public class ModelQuadFlags {
- /**
- * Indicates that the quad does not fully cover the given face for the model.
- */
- public static final int IS_PARTIAL = 0b001;
-
- /**
- * Indicates that the quad is parallel to its light face.
- */
- public static final int IS_PARALLEL = 0b010;
-
- /**
- * Indicates that the quad is aligned to the block grid.
- * This flag is only set if {@link #IS_PARALLEL} is set.
- */
- public static final int IS_ALIGNED = 0b100;
-
- /**
- * @return True if the bit-flag of {@link ModelQuadFlags} contains the given flag
- */
- public static boolean contains(int flags, int mask) {
- return (flags & mask) != 0;
- }
-
- /**
- * Calculates the properties of the given quad. This data is used later by the light pipeline in order to make
- * certain optimizations.
- */
- public static int getQuadFlags(ModelQuadView quad) {
- final ForgeDirection face = quad.getLightFace();
- final Axis axis = Axis.fromDirection(ModelQuadFacing.fromDirection(face));
-
- float minX = 32.0F;
- float minY = 32.0F;
- float minZ = 32.0F;
-
- float maxX = -32.0F;
- float maxY = -32.0F;
- float maxZ = -32.0F;
-
- for (int i = 0; i < 4; ++i) {
- float x = quad.getX(i);
- float y = quad.getY(i);
- float z = quad.getZ(i);
-
- minX = Math.min(minX, x);
- minY = Math.min(minY, y);
- minZ = Math.min(minZ, z);
- maxX = Math.max(maxX, x);
- maxY = Math.max(maxY, y);
- maxZ = Math.max(maxZ, z);
- }
-
- boolean partial = switch (axis) {
- case X -> minY >= 0.0001f || minZ >= 0.0001f || maxY <= 0.9999F || maxZ <= 0.9999F;
- case Y -> minX >= 0.0001f || minZ >= 0.0001f || maxX <= 0.9999F || maxZ <= 0.9999F;
- case Z -> minX >= 0.0001f || minY >= 0.0001f || maxX <= 0.9999F || maxY <= 0.9999F;
- };
-
- boolean parallel = switch (axis) {
- case X -> minX == maxX;
- case Y -> minY == maxY;
- case Z -> minZ == maxZ;
- };
-
- boolean flag = switch (face) {
- case DOWN -> minY < 0.0001f;
- case UP -> maxY > 0.9999F;
- case NORTH -> minZ < 0.0001f;
- case SOUTH -> maxZ > 0.9999F;
- case WEST -> minX < 0.0001f;
- case EAST -> maxX > 0.9999F;
- default -> false;
- };
-
- boolean aligned = parallel && flag;
-
- int flags = 0;
-
- if (partial) {
- flags |= IS_PARTIAL;
- }
-
- if (parallel) {
- flags |= IS_PARALLEL;
- }
-
- if (aligned) {
- flags |= IS_ALIGNED;
- }
-
- return flags;
- }
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadOrientation.java b/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadOrientation.java
deleted file mode 100644
index 662ce4aaf..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadOrientation.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package me.jellysquid.mods.sodium.client.model.quad.properties;
-
-/**
- * Defines the orientation of vertices in a model quad. This information be used to re-orient the quad's vertices to a
- * consistent order, eliminating a number of shading issues caused by anisotropy problems.
- */
-public enum ModelQuadOrientation {
- NORMAL(new int[] { 0, 1, 2, 3 }),
- FLIP(new int[] { 1, 2, 3, 0 });
-
- private final int[] indices;
-
- ModelQuadOrientation(int[] indices) {
- this.indices = indices;
- }
-
- /**
- * @return The re-oriented index of the vertex {@param idx}
- */
- public int getVertexIndex(int idx) {
- return this.indices[idx];
- }
-
- /**
- * Determines the orientation of the vertices in the quad.
- */
- public static ModelQuadOrientation orient(float[] brightnesses) {
- // If one side of the quad is brighter, flip the sides
- if (brightnesses[0] + brightnesses[2] > brightnesses[1] + brightnesses[3]) {
- return NORMAL;
- } else {
- return FLIP;
- }
- }
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexSink.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexSink.java
index 2e64f800c..2502e5c28 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexSink.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexSink.java
@@ -1,7 +1,9 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.glyph;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import me.jellysquid.mods.sodium.client.model.vertex.VertexSink;
import me.jellysquid.mods.sodium.client.util.math.Matrix4fExtended;
import me.jellysquid.mods.sodium.client.util.math.MatrixUtil;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexType.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexType.java
index 03ff6e52d..d0b0091fd 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexType.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/glyph/GlyphVertexType.java
@@ -1,7 +1,8 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.glyph;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.VertexConsumer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferView;
import me.jellysquid.mods.sodium.client.model.vertex.formats.glyph.writer.GlyphVertexBufferWriterNio;
import me.jellysquid.mods.sodium.client.model.vertex.formats.glyph.writer.GlyphVertexBufferWriterUnsafe;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexSink.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexSink.java
index ea8f06945..b4dd413cd 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexSink.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexSink.java
@@ -1,7 +1,7 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.line;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import me.jellysquid.mods.sodium.client.model.vertex.VertexSink;
import me.jellysquid.mods.sodium.client.util.color.ColorABGR;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexType.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexType.java
index b3bc12167..a0581bc30 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexType.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/line/LineVertexType.java
@@ -1,7 +1,8 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.line;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.VertexConsumer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferView;
import me.jellysquid.mods.sodium.client.model.vertex.formats.line.writer.LineVertexBufferWriterNio;
import me.jellysquid.mods.sodium.client.model.vertex.formats.line.writer.LineVertexBufferWriterUnsafe;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexSink.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexSink.java
index c0f975818..a6fa46910 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexSink.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexSink.java
@@ -1,7 +1,9 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.particle;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import me.jellysquid.mods.sodium.client.model.vertex.VertexSink;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexType.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexType.java
index 11bce31ab..2209a92ec 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexType.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/particle/ParticleVertexType.java
@@ -1,7 +1,8 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.particle;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.VertexConsumer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferView;
import me.jellysquid.mods.sodium.client.model.vertex.formats.particle.writer.ParticleVertexBufferWriterNio;
import me.jellysquid.mods.sodium.client.model.vertex.formats.particle.writer.ParticleVertexBufferWriterUnsafe;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexSink.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexSink.java
index 44658758e..a6f755ac5 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexSink.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexSink.java
@@ -1,8 +1,10 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.quad;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.MatrixStack;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.VertexSink;
import me.jellysquid.mods.sodium.client.util.math.Matrix4fExtended;
import me.jellysquid.mods.sodium.client.util.math.MatrixUtil;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexType.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexType.java
index a73c01ad4..59de53b00 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexType.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/quad/QuadVertexType.java
@@ -1,7 +1,8 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.quad;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.VertexConsumer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferView;
import me.jellysquid.mods.sodium.client.model.vertex.formats.quad.writer.QuadVertexBufferWriterNio;
import me.jellysquid.mods.sodium.client.model.vertex.formats.quad.writer.QuadVertexBufferWriterUnsafe;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexSink.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexSink.java
index e0d7836d2..1d2e286d0 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexSink.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexSink.java
@@ -1,7 +1,9 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.screen_quad;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import me.jellysquid.mods.sodium.client.model.vertex.VertexSink;
import me.jellysquid.mods.sodium.client.util.math.Matrix4fExtended;
import me.jellysquid.mods.sodium.client.util.math.MatrixUtil;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexType.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexType.java
index 769d4f52b..1f9d9fea0 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexType.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/formats/screen_quad/BasicScreenQuadVertexType.java
@@ -1,7 +1,8 @@
package me.jellysquid.mods.sodium.client.model.vertex.formats.screen_quad;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.VertexConsumer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferView;
import me.jellysquid.mods.sodium.client.model.vertex.formats.screen_quad.writer.BasicScreenQuadVertexBufferWriterNio;
import me.jellysquid.mods.sodium.client.model.vertex.formats.screen_quad.writer.BasicScreenQuadVertexBufferWriterUnsafe;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/type/VanillaVertexType.java b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/type/VanillaVertexType.java
index 50aa85301..bc675371f 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/type/VanillaVertexType.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/model/vertex/type/VanillaVertexType.java
@@ -1,6 +1,7 @@
package me.jellysquid.mods.sodium.client.model.vertex.type;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import me.jellysquid.mods.sodium.client.gl.attribute.BufferVertexFormat;
import me.jellysquid.mods.sodium.client.model.vertex.VertexSink;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderColumn.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderColumn.java
index 57f989ecb..f3791d9bb 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderColumn.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderColumn.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk;
-import me.jellysquid.mods.sodium.common.util.DirectionUtil;
+import com.gtnewhorizon.gtnhlib.client.renderer.util.DirectionUtil;
import net.minecraftforge.common.util.ForgeDirection;
public class ChunkRenderColumn {
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderContainer.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderContainer.java
index d00172bb3..6618d15a5 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderContainer.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderContainer.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import com.gtnewhorizons.angelica.compat.mojang.ChunkSectionPos;
import com.gtnewhorizons.angelica.utils.AnimationsRenderUtils;
import lombok.Getter;
@@ -265,8 +265,8 @@ public class ChunkRenderContainer {
return this.getOriginZ() + 8.0D;
}
- public BlockPosImpl getRenderOrigin() {
- return new BlockPosImpl(this.getRenderX(), this.getRenderY(), this.getRenderZ());
+ public BlockPos getRenderOrigin() {
+ return new BlockPos(this.getRenderX(), this.getRenderY(), this.getRenderZ());
}
public void setGraphicsState(BlockRenderPass pass, T state) {
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawChunkRenderBackend.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawChunkRenderBackend.java
index f5ee7dc39..fac4e3409 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawChunkRenderBackend.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawChunkRenderBackend.java
@@ -1,5 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.backends.multidraw;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import it.unimi.dsi.fastutil.objects.ObjectArrayFIFOQueue;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
@@ -22,7 +23,6 @@ import me.jellysquid.mods.sodium.client.gl.tessellation.GlPrimitiveType;
import me.jellysquid.mods.sodium.client.gl.tessellation.GlTessellation;
import me.jellysquid.mods.sodium.client.gl.tessellation.TessellationBinding;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.model.vertex.type.ChunkVertexType;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkCameraContext;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderContainer;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawGraphicsState.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawGraphicsState.java
index e4ebbdb2c..ddfbfb457 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawGraphicsState.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/multidraw/MultidrawGraphicsState.java
@@ -1,10 +1,10 @@
package me.jellysquid.mods.sodium.client.render.chunk.backends.multidraw;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.gl.arena.GlBufferSegment;
import me.jellysquid.mods.sodium.client.gl.attribute.GlVertexFormat;
import me.jellysquid.mods.sodium.client.gl.device.CommandList;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkGraphicsState;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderContainer;
import me.jellysquid.mods.sodium.client.render.chunk.data.ChunkMeshData;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkOneshotGraphicsState.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkOneshotGraphicsState.java
index 29fc51d09..556321838 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkOneshotGraphicsState.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkOneshotGraphicsState.java
@@ -1,5 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.backends.oneshot;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import me.jellysquid.mods.sodium.client.gl.attribute.GlVertexAttributeBinding;
import me.jellysquid.mods.sodium.client.gl.attribute.GlVertexFormat;
@@ -12,7 +13,6 @@ import me.jellysquid.mods.sodium.client.gl.tessellation.GlPrimitiveType;
import me.jellysquid.mods.sodium.client.gl.tessellation.GlTessellation;
import me.jellysquid.mods.sodium.client.gl.tessellation.TessellationBinding;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkGraphicsState;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderContainer;
import me.jellysquid.mods.sodium.client.render.chunk.data.ChunkMeshData;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkRenderBackendOneshot.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkRenderBackendOneshot.java
index 63d2c09cc..b1073cb77 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkRenderBackendOneshot.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/backends/oneshot/ChunkRenderBackendOneshot.java
@@ -1,11 +1,11 @@
package me.jellysquid.mods.sodium.client.render.chunk.backends.oneshot;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.gl.device.CommandList;
import me.jellysquid.mods.sodium.client.gl.device.DrawCommandList;
import me.jellysquid.mods.sodium.client.gl.device.RenderDevice;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
import me.jellysquid.mods.sodium.client.gl.util.GlMultiDrawBatch;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.model.vertex.type.ChunkVertexType;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkCameraContext;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderContainer;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildBuffers.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildBuffers.java
index a4d199390..b37b708b2 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildBuffers.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildBuffers.java
@@ -1,12 +1,12 @@
package me.jellysquid.mods.sodium.client.render.chunk.compile;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import lombok.Getter;
import me.jellysquid.mods.sodium.client.SodiumClientMod;
import me.jellysquid.mods.sodium.client.gl.buffer.VertexData;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferBuilder;
import me.jellysquid.mods.sodium.client.model.vertex.type.ChunkVertexType;
import me.jellysquid.mods.sodium.client.render.chunk.compile.buffers.BakedChunkModelBuffers;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/BakedChunkModelBuffers.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/BakedChunkModelBuffers.java
index 7b2e52cfc..cef840447 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/BakedChunkModelBuffers.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/BakedChunkModelBuffers.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.compile.buffers;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.data.ChunkRenderData;
import me.jellysquid.mods.sodium.client.render.chunk.format.ModelVertexSink;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuffers.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuffers.java
index a886d88c2..b8e3163b5 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuffers.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuffers.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.compile.buffers;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.data.ChunkRenderData;
import me.jellysquid.mods.sodium.client.render.chunk.format.ModelVertexSink;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/FallbackChunkModelBuffers.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/FallbackChunkModelBuffers.java
index 2b3397d5e..656f7e4ad 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/FallbackChunkModelBuffers.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/FallbackChunkModelBuffers.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.compile.buffers;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.data.ChunkRenderData;
import me.jellysquid.mods.sodium.client.render.chunk.format.ModelVertexSink;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/ChunkFaceFlags.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/ChunkFaceFlags.java
index 6ea6b5c5c..6725c6370 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/ChunkFaceFlags.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/ChunkFaceFlags.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.cull;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
public class ChunkFaceFlags {
public static final int UP = of(ModelQuadFacing.UP);
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphCuller.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphCuller.java
index f2d6909de..0003b99eb 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphCuller.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphCuller.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.cull.graph;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import com.gtnewhorizons.angelica.compat.mojang.Camera;
import com.gtnewhorizons.angelica.compat.mojang.ChunkOcclusionData;
import com.gtnewhorizons.angelica.compat.mojang.ChunkSectionPos;
@@ -76,24 +76,24 @@ public class ChunkGraphCuller implements ChunkCuller {
this.visible.clear();
- BlockPosImpl origin = camera.getBlockPos();
+ final BlockPos origin = camera.getBlockPos();
- int chunkX = origin.getX() >> 4;
+ final int chunkX = origin.getX() >> 4;
int chunkY = origin.getY() >> 4;
- int chunkZ = origin.getZ() >> 4;
+ final int chunkZ = origin.getZ() >> 4;
this.centerChunkX = chunkX;
this.centerChunkY = chunkY;
this.centerChunkZ = chunkZ;
- ChunkGraphNode rootNode = this.getNode(chunkX, chunkY, chunkZ);
+ final ChunkGraphNode rootNode = this.getNode(chunkX, chunkY, chunkZ);
if (rootNode != null) {
rootNode.resetCullingState();
rootNode.setLastVisibleFrame(frame);
if (spectator) {
- Block block = this.world.getBlock(origin.getX(), origin.getY(), origin.getZ());
+ final Block block = this.world.getBlock(origin.getX(), origin.getY(), origin.getZ());
if(block.isOpaqueCube()) {
this.useOcclusionCulling = false;
}
@@ -103,11 +103,11 @@ public class ChunkGraphCuller implements ChunkCuller {
} else {
chunkY = MathHelper.clamp_int(origin.getY() >> 4, 0, 15);
- List bestNodes = new ArrayList<>();
+ final List bestNodes = new ArrayList<>();
for (int x2 = -this.renderDistance; x2 <= this.renderDistance; ++x2) {
for (int z2 = -this.renderDistance; z2 <= this.renderDistance; ++z2) {
- ChunkGraphNode node = this.getNode(chunkX + x2, chunkY, chunkZ + z2);
+ final ChunkGraphNode node = this.getNode(chunkX + x2, chunkY, chunkZ + z2);
if (node == null || node.isCulledByFrustum(frustum)) {
continue;
@@ -148,7 +148,7 @@ public class ChunkGraphCuller implements ChunkCuller {
private void connectNeighborNodes(ChunkGraphNode node) {
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
- ChunkGraphNode adj = this.findAdjacentNode(node, dir);
+ final ChunkGraphNode adj = this.findAdjacentNode(node, dir);
if (adj != null) {
adj.setAdjacentNode(dir.getOpposite(), node);
@@ -160,7 +160,7 @@ public class ChunkGraphCuller implements ChunkCuller {
private void disconnectNeighborNodes(ChunkGraphNode node) {
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
- ChunkGraphNode adj = node.getConnectedNode(dir);
+ final ChunkGraphNode adj = node.getConnectedNode(dir);
if (adj != null) {
adj.setAdjacentNode(dir.getOpposite(), null);
@@ -189,8 +189,8 @@ public class ChunkGraphCuller implements ChunkCuller {
@Override
public void onSectionLoaded(int x, int y, int z, int id) {
- ChunkGraphNode node = new ChunkGraphNode(x, y, z, id);
- ChunkGraphNode prev;
+ final ChunkGraphNode node = new ChunkGraphNode(x, y, z, id);
+ final ChunkGraphNode prev;
if ((prev = this.nodes.put(ChunkSectionPos.asLong(x, y, z), node)) != null) {
this.disconnectNeighborNodes(prev);
@@ -201,7 +201,7 @@ public class ChunkGraphCuller implements ChunkCuller {
@Override
public void onSectionUnloaded(int x, int y, int z) {
- ChunkGraphNode node = this.nodes.remove(ChunkSectionPos.asLong(x, y, z));
+ final ChunkGraphNode node = this.nodes.remove(ChunkSectionPos.asLong(x, y, z));
if (node != null) {
this.disconnectNeighborNodes(node);
@@ -210,7 +210,7 @@ public class ChunkGraphCuller implements ChunkCuller {
@Override
public boolean isSectionVisible(int x, int y, int z) {
- ChunkGraphNode render = this.getNode(x, y, z);
+ final ChunkGraphNode render = this.getNode(x, y, z);
if (render == null) {
return false;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphNode.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphNode.java
index 3d3c222e8..7a3416ada 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphNode.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/cull/graph/ChunkGraphNode.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.cull.graph;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import com.gtnewhorizons.angelica.compat.mojang.ChunkOcclusionData;
import me.jellysquid.mods.sodium.client.render.chunk.data.ChunkRenderData;
import me.jellysquid.mods.sodium.client.util.math.FrustumExtended;
@@ -145,7 +145,7 @@ public class ChunkGraphNode {
* @return The squared distance from the center of this chunk in the world to the center of the block position
* given by {@param pos}
*/
- public double getSquaredDistance(BlockPosImpl pos) {
+ public double getSquaredDistance(BlockPos pos) {
return this.getSquaredDistance(pos.x + 0.5D, pos.y + 0.5D, pos.z + 0.5D);
}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkMeshData.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkMeshData.java
index fe2e04031..7402d0daf 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkMeshData.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkMeshData.java
@@ -1,8 +1,8 @@
package me.jellysquid.mods.sodium.client.render.chunk.data;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.gl.buffer.VertexData;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import java.util.EnumMap;
import java.util.Map;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkRenderData.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkRenderData.java
index 635917b35..89c728926 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkRenderData.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/data/ChunkRenderData.java
@@ -1,12 +1,12 @@
package me.jellysquid.mods.sodium.client.render.chunk.data;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import com.gtnewhorizons.angelica.compat.mojang.ChunkOcclusionData;
import com.gtnewhorizons.angelica.mixins.interfaces.ISpriteExt;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
import lombok.Getter;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.passes.BlockRenderPass;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.tileentity.TileEntity;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/region/ChunkRegion.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/region/ChunkRegion.java
index 4be360a93..064564d9b 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/region/ChunkRegion.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/region/ChunkRegion.java
@@ -1,11 +1,11 @@
package me.jellysquid.mods.sodium.client.render.chunk.region;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import me.jellysquid.mods.sodium.client.gl.arena.GlBufferArena;
import me.jellysquid.mods.sodium.client.gl.device.CommandList;
import me.jellysquid.mods.sodium.client.gl.device.RenderDevice;
import me.jellysquid.mods.sodium.client.gl.tessellation.GlTessellation;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkGraphicsState;
import me.jellysquid.mods.sodium.client.render.chunk.backends.multidraw.ChunkDrawCallBatcher;
import me.jellysquid.mods.sodium.client.render.chunk.compile.ChunkBuildResult;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderRebuildTask.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderRebuildTask.java
index ac012de78..29faa2721 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderRebuildTask.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderRebuildTask.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.chunk.tasks;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import com.gtnewhorizons.angelica.compat.mojang.ChunkOcclusionDataBuilder;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import com.gtnewhorizons.angelica.mixins.interfaces.ITexturesCache;
@@ -48,7 +48,7 @@ import java.util.concurrent.ExecutionException;
public class ChunkRenderRebuildTask extends ChunkRenderBuildTask {
private final ChunkRenderContainer render;
- private final BlockPosImpl offset;
+ private final BlockPos offset;
private final ChunkRenderContext context;
@@ -56,7 +56,7 @@ public class ChunkRenderRebuildTask extends ChunkR
private final boolean translucencySorting;
- public ChunkRenderRebuildTask(ChunkRenderContainer render, ChunkRenderContext context, BlockPosImpl offset) {
+ public ChunkRenderRebuildTask(ChunkRenderContainer render, ChunkRenderContext context, BlockPos offset) {
this.render = render;
this.offset = offset;
this.context = context;
@@ -122,8 +122,8 @@ public class ChunkRenderRebuildTask extends ChunkR
final int baseY = this.render.getOriginY();
final int baseZ = this.render.getOriginZ();
- final BlockPosImpl pos = new BlockPosImpl();
- final BlockPosImpl renderOffset = this.offset;
+ final BlockPos pos = new BlockPos();
+ final BlockPos renderOffset = this.offset;
final LongArrayFIFOQueue mainThreadBlocks = new LongArrayFIFOQueue();
boolean hasMainThreadBlocks = false;
@@ -241,11 +241,11 @@ public class ChunkRenderRebuildTask extends ChunkR
*/
private void performMainBuild(ChunkRenderCacheLocal cache, ChunkBuildBuffers buffers, CancellationSource cancellationSource, ChunkRenderBounds.Builder bounds, ChunkRenderData.Builder renderData, LongArrayFIFOQueue mainThreadBlocks) {
final WorldSlice slice = cache.getWorldSlice();
- final BlockPosImpl pos = new BlockPosImpl();
+ final BlockPos pos = new BlockPos();
final int baseX = this.render.getOriginX();
final int baseY = this.render.getOriginY();
final int baseZ = this.render.getOriginZ();
- final BlockPosImpl renderOffset = this.offset;
+ final BlockPos renderOffset = this.offset;
final RenderBlocks rb = new RenderBlocks(slice.getWorld());
if(rb instanceof ITexturesCache) ((ITexturesCache)rb).enableTextureTracking();
while(!mainThreadBlocks.isEmpty()) {
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderTranslucencySortTask.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderTranslucencySortTask.java
index 6a959af3c..6392b6fe4 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderTranslucencySortTask.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/tasks/ChunkRenderTranslucencySortTask.java
@@ -1,9 +1,9 @@
package me.jellysquid.mods.sodium.client.render.chunk.tasks;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.gl.buffer.VertexData;
import me.jellysquid.mods.sodium.client.gl.util.BufferSlice;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkGraphicsState;
import me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderContainer;
import me.jellysquid.mods.sodium.client.render.chunk.compile.ChunkBufferSorter;
@@ -32,10 +32,10 @@ public class ChunkRenderTranslucencySortTask exten
private static final BlockRenderPass[] NO_PASSES = new BlockRenderPass[0];
private final ChunkRenderContainer render;
- private final BlockPosImpl offset;
+ private final BlockPos offset;
private final Vector3d camera;
- public ChunkRenderTranslucencySortTask(ChunkRenderContainer render, BlockPosImpl offset, Vector3d camera) {
+ public ChunkRenderTranslucencySortTask(ChunkRenderContainer render, BlockPos offset, Vector3d camera) {
this.render = render;
this.offset = offset;
this.camera = camera;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/entity/EntityLightSampler.java b/src/main/java/me/jellysquid/mods/sodium/client/render/entity/EntityLightSampler.java
index 7549c1e62..f90a55dad 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/entity/EntityLightSampler.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/entity/EntityLightSampler.java
@@ -1,10 +1,10 @@
package me.jellysquid.mods.sodium.client.render.entity;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import net.minecraft.entity.Entity;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
public interface EntityLightSampler {
- int bridge$getBlockLight(T entity, BlockPosImpl pos);
+ int bridge$getBlockLight(T entity, BlockPos pos);
- int bridge$getSkyLight(T entity, BlockPosImpl pos);
+ int bridge$getSkyLight(T entity, BlockPos pos);
}
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/occlusion/BlockOcclusionCache.java b/src/main/java/me/jellysquid/mods/sodium/client/render/occlusion/BlockOcclusionCache.java
index dc30536c1..e0941684a 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/occlusion/BlockOcclusionCache.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/occlusion/BlockOcclusionCache.java
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client.render.occlusion;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
import it.unimi.dsi.fastutil.objects.Object2ByteLinkedOpenHashMap;
import net.minecraft.block.Block;
import net.minecraft.world.IBlockAccess;
@@ -11,7 +11,7 @@ public class BlockOcclusionCache {
private final Object2ByteLinkedOpenHashMap map;
private final CachedOcclusionShapeTest cachedTest = new CachedOcclusionShapeTest();
- private final BlockPosImpl cpos = new BlockPosImpl();
+ private final BlockPos cpos = new BlockPos();
public BlockOcclusionCache() {
this.map = new Object2ByteLinkedOpenHashMap<>(2048, 0.5F);
@@ -26,14 +26,14 @@ public class BlockOcclusionCache {
* @param facing The facing direction of the side to check
* @return True if the block side facing {@param dir} is not occluded, otherwise false
*/
- public boolean shouldDrawSide(Block block, int meta, IBlockAccess view, BlockPosImpl pos, ForgeDirection facing) {
+ public boolean shouldDrawSide(Block block, int meta, IBlockAccess view, BlockPos pos, ForgeDirection facing) {
if (facing == ForgeDirection.UNKNOWN)
return true;
- BlockPosImpl adjPos = this.cpos;
+ final BlockPos adjPos = this.cpos;
adjPos.set(pos.getX() + facing.offsetX, pos.getY() + facing.offsetY, pos.getZ() + facing.offsetZ);
- Block adjState = view.getBlock(adjPos.x, adjPos.y, adjPos.z);
+ final Block adjState = view.getBlock(adjPos.x, adjPos.y, adjPos.z);
return !adjState.isOpaqueCube();
@@ -41,18 +41,18 @@ public class BlockOcclusionCache {
}
private boolean calculate(Block selfShape, Block adjShape) {
- CachedOcclusionShapeTest cache = this.cachedTest;
+ final CachedOcclusionShapeTest cache = this.cachedTest;
cache.a = selfShape;
cache.b = adjShape;
cache.updateHash();
- byte cached = this.map.getByte(cache);
+ final byte cached = this.map.getByte(cache);
if (cached != UNCACHED_VALUE) {
return cached == 1;
}
- boolean ret = adjShape.isOpaqueCube() && selfShape.isOpaqueCube();
+ final boolean ret = adjShape.isOpaqueCube() && selfShape.isOpaqueCube();
this.map.put(cache.copy(), (byte) (ret ? 1 : 0));
@@ -90,11 +90,8 @@ public class BlockOcclusionCache {
@Override
public boolean equals(Object o) {
- if (o instanceof CachedOcclusionShapeTest) {
- CachedOcclusionShapeTest that = (CachedOcclusionShapeTest) o;
-
- return this.a == that.a &&
- this.b == that.b;
+ if (o instanceof CachedOcclusionShapeTest that) {
+ return this.a == that.a && this.b == that.b;
}
return false;
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/BlockRenderer.java b/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/BlockRenderer.java
index 1a77a1534..191065d79 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/BlockRenderer.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/BlockRenderer.java
@@ -1,11 +1,14 @@
package me.jellysquid.mods.sodium.client.render.pipeline;
-import com.gtnewhorizons.angelica.api.QuadProvider;
-import com.gtnewhorizons.angelica.api.QuadView;
-import com.gtnewhorizons.angelica.client.renderer.CapturingTessellator;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.client.renderer.CapturingTessellator;
+import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadProvider;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadOrientation;
+import com.gtnewhorizon.gtnhlib.client.renderer.util.DirectionUtil;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
import com.gtnewhorizons.angelica.mixins.interfaces.ModeledBlock;
import com.gtnewhorizons.angelica.utils.ObjectPooler;
import me.jellysquid.mods.sodium.client.SodiumClientMod;
@@ -13,9 +16,8 @@ import me.jellysquid.mods.sodium.client.model.light.LightMode;
import me.jellysquid.mods.sodium.client.model.light.LightPipeline;
import me.jellysquid.mods.sodium.client.model.light.LightPipelineProvider;
import me.jellysquid.mods.sodium.client.model.light.data.QuadLightData;
-import me.jellysquid.mods.sodium.client.model.quad.Quad;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadOrientation;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.Quad;
+
import me.jellysquid.mods.sodium.client.render.chunk.compile.buffers.ChunkModelBuffers;
import me.jellysquid.mods.sodium.client.render.chunk.data.ChunkRenderData;
import me.jellysquid.mods.sodium.client.render.chunk.format.ModelVertexSink;
@@ -23,7 +25,6 @@ import me.jellysquid.mods.sodium.client.render.occlusion.BlockOcclusionCache;
import me.jellysquid.mods.sodium.client.util.ModelQuadUtil;
import me.jellysquid.mods.sodium.client.util.color.ColorABGR;
import me.jellysquid.mods.sodium.client.util.rand.XoRoShiRoRandom;
-import me.jellysquid.mods.sodium.common.util.DirectionUtil;
import net.coderbot.iris.block_rendering.BlockRenderingSettings;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -48,6 +49,7 @@ public class BlockRenderer {
private final LightPipelineProvider lighters;
private final BlockOcclusionCache occlusionCache;
+ private Object Quad;
private final ObjectPooler quadPool = new ObjectPooler<>(Quad::new);
// TODO: Use modern model API, and store them here
@@ -60,7 +62,7 @@ public class BlockRenderer {
this.occlusionCache = new BlockOcclusionCache();
}
- public boolean renderModel(IBlockAccess world, RenderBlocks renderBlocks, Block block, int meta, BlockPosImpl pos, ChunkModelBuffers buffers, boolean cull, long seed) {
+ public boolean renderModel(IBlockAccess world, RenderBlocks renderBlocks, Block block, int meta, BlockPos pos, ChunkModelBuffers buffers, boolean cull, long seed) {
final LightMode mode = LightMode.SMOOTH; // TODO: this.getLightingMode(block); is what was previously used. The flat pipeline is busted and was only an optimization for very few blocks.
final LightPipeline lighter = this.lighters.getLighter(mode);
@@ -116,7 +118,7 @@ public class BlockRenderer {
return rendered;
}
- private void renderQuadList(BlockPosImpl pos, LightPipeline lighter, ChunkModelBuffers buffers, List quads, ModelQuadFacing facing, boolean useSodiumLight) {
+ private void renderQuadList(BlockPos pos, LightPipeline lighter, ChunkModelBuffers buffers, List quads, ModelQuadFacing facing, boolean useSodiumLight) {
final ForgeDirection cullFace = ModelQuadFacing.toDirection(facing);
final ModelVertexSink sink = buffers.getSink(facing);
diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/FluidRenderer.java b/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/FluidRenderer.java
index 0c6704c35..2c41ba169 100644
--- a/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/FluidRenderer.java
+++ b/src/main/java/me/jellysquid/mods/sodium/client/render/pipeline/FluidRenderer.java
@@ -1,24 +1,24 @@
package me.jellysquid.mods.sodium.client.render.pipeline;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.ModelQuad;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.ModelQuadView;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.ModelQuadViewMutable;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFacing;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.properties.ModelQuadFlags;
+import com.gtnewhorizon.gtnhlib.client.renderer.util.DirectionUtil;
+import com.gtnewhorizon.gtnhlib.client.renderer.util.WorldUtil;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import me.jellysquid.mods.sodium.client.model.light.LightMode;
import me.jellysquid.mods.sodium.client.model.light.LightPipeline;
import me.jellysquid.mods.sodium.client.model.light.LightPipelineProvider;
import me.jellysquid.mods.sodium.client.model.light.data.QuadLightData;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuad;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadView;
-import me.jellysquid.mods.sodium.client.model.quad.ModelQuadViewMutable;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFlags;
import me.jellysquid.mods.sodium.client.render.chunk.compile.buffers.ChunkModelBuffers;
import me.jellysquid.mods.sodium.client.render.chunk.format.ModelVertexSink;
import me.jellysquid.mods.sodium.client.util.Norm3b;
import me.jellysquid.mods.sodium.client.util.color.ColorABGR;
import me.jellysquid.mods.sodium.client.util.color.ColorARGB;
import me.jellysquid.mods.sodium.client.world.WorldSlice;
-import me.jellysquid.mods.sodium.common.util.DirectionUtil;
-import me.jellysquid.mods.sodium.common.util.WorldUtil;
import net.coderbot.iris.block_rendering.BlockRenderingSettings;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -38,7 +38,7 @@ public class FluidRenderer {
private static final float EPSILON = 0.001f;
private final LightPipelineProvider lpp;
- private final BlockPosImpl scratchPos = new BlockPosImpl();
+ private final BlockPos scratchPos = new BlockPos();
private final ModelQuadViewMutable quad = new ModelQuad();
@@ -71,7 +71,7 @@ public class FluidRenderer {
}
private boolean isSideExposed(IBlockAccess world, int x, int y, int z, ForgeDirection dir, float height) {
- BlockPosImpl pos = this.scratchPos.set(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
+ BlockPos pos = this.scratchPos.set(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
Block block = world.getBlock(pos.x, pos.y, pos.z);
if (block.getMaterial().isOpaque()) {
@@ -89,7 +89,7 @@ public class FluidRenderer {
return true;
}
- public boolean render(IBlockAccess world, WorldSlice slice, Block block, BlockPosImpl pos, ChunkModelBuffers buffers) {
+ public boolean render(IBlockAccess world, WorldSlice slice, Block block, BlockPos pos, ChunkModelBuffers buffers) {
this.useSeparateAo = AngelicaConfig.enableIris && BlockRenderingSettings.INSTANCE.shouldUseSeparateAo();
int posX = pos.x;
@@ -356,7 +356,7 @@ public class FluidRenderer {
return rendered;
}
- private void calculateQuadColors(ModelQuadView quad, BlockPosImpl pos, LightPipeline lighter, ForgeDirection dir, float brightness, boolean colorized, WorldSlice slice) {
+ private void calculateQuadColors(ModelQuadView quad, BlockPos pos, LightPipeline lighter, ForgeDirection dir, float brightness, boolean colorized, WorldSlice slice) {
QuadLightData light = this.quadLightData;
lighter.calculate(quad, pos, light, null, dir, false);
@@ -441,7 +441,7 @@ public class FluidRenderer {
return 1.0F;
}
- BlockPosImpl pos = this.scratchPos.set(x2, y, z2);
+ BlockPos pos = this.scratchPos.set(x2, y, z2);
block = world.getBlock(pos.x, pos.y, pos.z);
int meta = world.getBlockMetadata(pos.x, pos.y, pos.z);
diff --git a/src/main/java/me/jellysquid/mods/sodium/common/util/DirectionUtil.java b/src/main/java/me/jellysquid/mods/sodium/common/util/DirectionUtil.java
deleted file mode 100644
index e1bdfd7ca..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/common/util/DirectionUtil.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package me.jellysquid.mods.sodium.common.util;
-
-import me.jellysquid.mods.sodium.client.model.quad.properties.ModelQuadFacing;
-import net.minecraftforge.common.util.ForgeDirection;
-import org.joml.Matrix4f;
-import org.joml.Vector3f;
-import org.joml.Vector3i;
-
-/**
- * Contains a number of cached arrays to avoid allocations since calling Enum#values() requires the backing array to
- * be cloned every time.
- */
-public class DirectionUtil {
- public static final ForgeDirection[] ALL_DIRECTIONS = ForgeDirection.values();
-
-
- // Provides the same order as enumerating ForgeDirection and checking the axis of each value
- public static final ForgeDirection[] HORIZONTAL_DIRECTIONS = new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.WEST, ForgeDirection.EAST };
-
- public static final Vector3i[] STEP = {
-
- //DOWN
- new Vector3i(0, -1, 0),
- // UP
- new Vector3i(0, 1, 0),
- // NORTH
- new Vector3i(0, 0, -1),
- // SOUTH
- new Vector3i(0, 0, 1),
- // WEST
- new Vector3i(-1, 0, 0),
- // EAST
- new Vector3i(1, 0, 0),
- // UNKNOWN
- new Vector3i(0, 0, 0)
- };
-
- public static ForgeDirection rotateDir(ForgeDirection in, Matrix4f rotMat) {
-
- final Vector3f v = new Vector3f(in.offsetX, in.offsetY, in.offsetZ);
- v.mulPosition(rotMat);
- return ModelQuadFacing.toDirection(ModelQuadFacing.fromVector(v));
- }
-}
diff --git a/src/main/java/me/jellysquid/mods/sodium/common/util/WorldUtil.java b/src/main/java/me/jellysquid/mods/sodium/common/util/WorldUtil.java
deleted file mode 100644
index 9d2d81d3f..000000000
--- a/src/main/java/me/jellysquid/mods/sodium/common/util/WorldUtil.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package me.jellysquid.mods.sodium.common.util;
-
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockLiquid;
-import net.minecraft.block.material.Material;
-import net.minecraft.world.IBlockAccess;
-import net.minecraftforge.common.util.ForgeDirection;
-import net.minecraftforge.fluids.Fluid;
-import net.minecraftforge.fluids.IFluidBlock;
-import org.joml.Vector3d;
-
-/**
- * Contains methods stripped from BlockState or FluidState that didn't actually need to be there. Technically these
- * could be a mixin to Block or Fluid, but that's annoying while not actually providing any benefit.
- */
-public class WorldUtil {
-
- public static Vector3d getVelocity(IBlockAccess world, int x, int y, int z, Block thizz) {
-
- Vector3d velocity = new Vector3d();
- int decay = getEffectiveFlowDecay(world, x, y, z, thizz);
-
- for (ForgeDirection dire : DirectionUtil.HORIZONTAL_DIRECTIONS) {
-
- int adjX = x + dire.offsetX;
- int adjZ = z + dire.offsetZ;
-
- int adjDecay = getEffectiveFlowDecay(world, adjX, y, adjZ, thizz);
-
- if (adjDecay < 0) {
-
- if (!world.getBlock(adjX, y, adjZ).getMaterial().blocksMovement()) {
-
- adjDecay = getEffectiveFlowDecay(world, adjX, y - 1, adjZ, thizz);
-
- if (adjDecay >= 0) {
-
- adjDecay -= (decay - 8);
- velocity = velocity.add((adjX - x) * adjDecay, 0, (adjZ - z) * adjDecay);
- }
- }
- } else {
-
- adjDecay -= decay;
- velocity = velocity.add((adjX - x) * adjDecay, 0, (adjZ - z) * adjDecay);
- }
- }
-
- if (world.getBlockMetadata(x, y, z) >= 8) {
-
- if (thizz.isBlockSolid(world, x, y, z - 1, 2)
- || thizz.isBlockSolid(world, x, y, z + 1, 3)
- || thizz.isBlockSolid(world, x - 1, y, z, 4)
- || thizz.isBlockSolid(world, x + 1, y, z, 5)
- || thizz.isBlockSolid(world, x, y + 1, z - 1, 2)
- || thizz.isBlockSolid(world, x, y + 1, z + 1, 3)
- || thizz.isBlockSolid(world, x - 1, y + 1, z, 4)
- || thizz.isBlockSolid(world, x + 1, y + 1, z, 5)) {
- velocity = velocity.normalize().add(0.0D, -6.0D, 0.0D);
- }
- }
-
- if (velocity.x == 0 && velocity.y == 0 && velocity.z == 0)
- return velocity.zero();
- return velocity.normalize();
- }
-
- /**
- * Returns true if any block in a 3x3x3 cube is not the same fluid and not an opaque full cube.
- * Equivalent to FluidState::method_15756 in modern.
- */
- public static boolean method_15756(IBlockAccess world, BlockPosImpl pos, Fluid fluid) {
- for (int i = 0; i < 2; ++i) {
- for (int j = 0; j < 2; ++j) {
- Block block = world.getBlock(pos.x, pos.y, pos.z);
- if (!block.isOpaqueCube() && getFluid(block) != fluid) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- /**
- * Returns fluid height as a percentage of the block; 0 is none and 1 is full.
- */
- public static float getFluidHeight(Fluid fluid, int meta) {
- return fluid == null ? 0 : 1 - BlockLiquid.getLiquidHeightPercent(meta);
- }
-
- /**
- * Returns the flow decay but converts values indicating falling liquid (values >=8) to their effective source block
- * value of zero
- */
- public static int getEffectiveFlowDecay(IBlockAccess world, int x, int y, int z, Block thiz) {
-
- if (world.getBlock(x, y, z).getMaterial() != thiz.getMaterial()) {
-
- return -1;
- } else {
-
- int decay = world.getBlockMetadata(x, y, z);
- return decay >= 8 ? 0 : decay;
- }
- }
-
- // I believe forge mappings in modern say BreakableBlock, while yarn says TransparentBlock.
- // I have a sneaking suspicion isOpaque is neither, but it works for now
- public static boolean shouldDisplayFluidOverlay(Block block) {
- return !block.getMaterial().isOpaque() || block.getMaterial() == Material.leaves;
- }
-
- public static Fluid getFluid(Block b) {
- return b instanceof IFluidBlock ? ((IFluidBlock) b).getFluid() : null;
- }
-
- /**
- * Equivalent to method_15748 in 1.16.5
- */
- public static boolean isEmptyOrSame(Fluid fluid, Fluid otherFluid) {
- return otherFluid == null || fluid == otherFluid;
- }
-
- /**
- * Equivalent to method_15749 in 1.16.5
- */
- public static boolean method_15749(IBlockAccess world, Fluid thiz, BlockPosImpl pos, ForgeDirection dir) {
- Block b = world.getBlock(pos.x, pos.y, pos.z);
- Fluid f = getFluid(b);
- if (f == thiz) {
- return false;
- }
- if (dir == ForgeDirection.UP) {
- return true;
- }
- return b.getMaterial() != Material.ice && b.isSideSolid(world, pos.x, pos.y, pos.z, dir);
- }
-}
diff --git a/src/main/java/net/coderbot/iris/pipeline/HorizonRenderer.java b/src/main/java/net/coderbot/iris/pipeline/HorizonRenderer.java
index e678bdeaa..06a2b57dc 100644
--- a/src/main/java/net/coderbot/iris/pipeline/HorizonRenderer.java
+++ b/src/main/java/net/coderbot/iris/pipeline/HorizonRenderer.java
@@ -1,9 +1,10 @@
package net.coderbot.iris.pipeline;
-import com.gtnewhorizons.angelica.client.renderer.CapturingTessellator;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexBuffer;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.CapturingTessellator;
+import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VertexBuffer;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import org.lwjgl.opengl.GL11;
diff --git a/src/main/java/net/coderbot/iris/postprocess/FullScreenQuadRenderer.java b/src/main/java/net/coderbot/iris/postprocess/FullScreenQuadRenderer.java
index ead3fa70f..55c400751 100644
--- a/src/main/java/net/coderbot/iris/postprocess/FullScreenQuadRenderer.java
+++ b/src/main/java/net/coderbot/iris/postprocess/FullScreenQuadRenderer.java
@@ -1,6 +1,7 @@
package net.coderbot.iris.postprocess;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.glsm.RenderSystem;
import org.lwjgl.BufferUtils;
diff --git a/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedGlyphVertexType.java b/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedGlyphVertexType.java
index 8fc801a51..23d1e65ed 100644
--- a/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedGlyphVertexType.java
+++ b/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedGlyphVertexType.java
@@ -1,7 +1,8 @@
package net.coderbot.iris.sodium.vertex_format.entity_xhfp;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.VertexConsumer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferView;
import me.jellysquid.mods.sodium.client.model.vertex.formats.glyph.GlyphVertexSink;
import me.jellysquid.mods.sodium.client.model.vertex.formats.glyph.writer.GlyphVertexWriterFallback;
diff --git a/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedQuadVertexType.java b/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedQuadVertexType.java
index 4d89a429f..718cfcec0 100644
--- a/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedQuadVertexType.java
+++ b/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/ExtendedQuadVertexType.java
@@ -1,7 +1,8 @@
package net.coderbot.iris.sodium.vertex_format.entity_xhfp;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
import com.gtnewhorizons.angelica.compat.toremove.VertexConsumer;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+
import me.jellysquid.mods.sodium.client.model.vertex.buffer.VertexBufferView;
import me.jellysquid.mods.sodium.client.model.vertex.formats.quad.QuadVertexSink;
import me.jellysquid.mods.sodium.client.model.vertex.formats.quad.writer.QuadVertexWriterFallback;
diff --git a/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/QuadViewEntity.java b/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/QuadViewEntity.java
index e8f59688f..bb56d1aaa 100644
--- a/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/QuadViewEntity.java
+++ b/src/main/java/net/coderbot/iris/sodium/vertex_format/entity_xhfp/QuadViewEntity.java
@@ -1,11 +1,11 @@
package net.coderbot.iris.sodium.vertex_format.entity_xhfp;
import com.gtnewhorizons.angelica.compat.lwjgl.CompatMemoryUtil;
-import net.coderbot.iris.vertices.QuadView;
+import net.coderbot.iris.vertices.IrisQuadView;
import java.nio.ByteBuffer;
-public abstract class QuadViewEntity implements QuadView {
+public abstract class QuadViewEntity implements IrisQuadView {
long writePointer;
int stride;
diff --git a/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/QuadViewTerrain.java b/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/QuadViewTerrain.java
index b08298626..b1e96fbf7 100644
--- a/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/QuadViewTerrain.java
+++ b/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/QuadViewTerrain.java
@@ -1,11 +1,11 @@
package net.coderbot.iris.sodium.vertex_format.terrain_xhfp;
import com.gtnewhorizons.angelica.compat.lwjgl.CompatMemoryUtil;
-import net.coderbot.iris.vertices.QuadView;
+import net.coderbot.iris.vertices.IrisQuadView;
import java.nio.ByteBuffer;
-public abstract class QuadViewTerrain implements QuadView {
+public abstract class QuadViewTerrain implements IrisQuadView {
long writePointer;
int stride;
diff --git a/src/main/java/net/coderbot/iris/texture/pbr/PBRAtlasTexture.java b/src/main/java/net/coderbot/iris/texture/pbr/PBRAtlasTexture.java
index c9a454239..d9857d0d8 100644
--- a/src/main/java/net/coderbot/iris/texture/pbr/PBRAtlasTexture.java
+++ b/src/main/java/net/coderbot/iris/texture/pbr/PBRAtlasTexture.java
@@ -1,8 +1,8 @@
package net.coderbot.iris.texture.pbr;
import com.gtnewhorizons.angelica.compat.mojang.AutoClosableAbstractTexture;
-import com.gtnewhorizons.angelica.mixins.early.shaders.accessors.TextureAtlasSpriteAccessor;
-import com.gtnewhorizons.angelica.mixins.early.shaders.accessors.TextureMapAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.TextureAtlasSpriteAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.TextureMapAccessor;
import lombok.Getter;
import net.coderbot.iris.texture.util.TextureExporter;
import net.coderbot.iris.texture.util.TextureManipulationUtil;
diff --git a/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java b/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java
index 005a47d6c..f6ebc07f1 100644
--- a/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java
+++ b/src/main/java/net/coderbot/iris/texture/pbr/loader/AtlasPBRLoader.java
@@ -4,10 +4,10 @@ import com.google.common.collect.Lists;
import com.gtnewhorizons.angelica.compat.mojang.NativeImage;
import com.gtnewhorizons.angelica.glsm.texture.TextureInfo;
import com.gtnewhorizons.angelica.glsm.texture.TextureInfoCache;
-import com.gtnewhorizons.angelica.mixins.early.shaders.accessors.AnimationMetadataSectionAccessor;
-import com.gtnewhorizons.angelica.mixins.early.shaders.accessors.TextureAtlasSpriteAccessor;
-import com.gtnewhorizons.angelica.mixins.early.shaders.accessors.TextureMapAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.AnimationMetadataSectionAccessor;
import com.gtnewhorizons.angelica.mixins.interfaces.ISpriteExt;
+import com.gtnewhorizons.angelica.mixins.interfaces.TextureAtlasSpriteAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.TextureMapAccessor;
import net.coderbot.iris.Iris;
import net.coderbot.iris.texture.format.TextureFormat;
import net.coderbot.iris.texture.format.TextureFormatLoader;
diff --git a/src/main/java/net/coderbot/iris/texture/pbr/loader/SimplePBRLoader.java b/src/main/java/net/coderbot/iris/texture/pbr/loader/SimplePBRLoader.java
index fed180dcc..4de78921b 100644
--- a/src/main/java/net/coderbot/iris/texture/pbr/loader/SimplePBRLoader.java
+++ b/src/main/java/net/coderbot/iris/texture/pbr/loader/SimplePBRLoader.java
@@ -1,6 +1,6 @@
package net.coderbot.iris.texture.pbr.loader;
-import com.gtnewhorizons.angelica.mixins.early.shaders.accessors.SimpleTextureAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.SimpleTextureAccessor;
import net.coderbot.iris.texture.pbr.PBRType;
import net.minecraft.client.renderer.texture.AbstractTexture;
import net.minecraft.client.renderer.texture.SimpleTexture;
diff --git a/src/main/java/net/coderbot/iris/uniforms/CommonUniforms.java b/src/main/java/net/coderbot/iris/uniforms/CommonUniforms.java
index dcec1b6fe..30f08d5fe 100644
--- a/src/main/java/net/coderbot/iris/uniforms/CommonUniforms.java
+++ b/src/main/java/net/coderbot/iris/uniforms/CommonUniforms.java
@@ -5,7 +5,7 @@ import com.gtnewhorizons.angelica.glsm.states.BlendState;
import com.gtnewhorizons.angelica.glsm.texture.TextureInfo;
import com.gtnewhorizons.angelica.glsm.texture.TextureInfoCache;
import com.gtnewhorizons.angelica.glsm.texture.TextureTracker;
-import com.gtnewhorizons.angelica.mixins.early.shaders.accessors.EntityRendererAccessor;
+import com.gtnewhorizons.angelica.mixins.interfaces.EntityRendererAccessor;
import net.coderbot.iris.gl.state.StateUpdateNotifiers;
import net.coderbot.iris.gl.uniform.DynamicUniformHolder;
import net.coderbot.iris.gl.uniform.UniformHolder;
@@ -29,10 +29,8 @@ import org.joml.Math;
import org.joml.Vector2f;
import org.joml.Vector2i;
import org.joml.Vector3d;
-import org.joml.Vector4f;
import org.joml.Vector4i;
-import static net.coderbot.iris.gl.uniform.UniformUpdateFrequency.ONCE;
import static net.coderbot.iris.gl.uniform.UniformUpdateFrequency.PER_FRAME;
import static net.coderbot.iris.gl.uniform.UniformUpdateFrequency.PER_TICK;
diff --git a/src/main/java/net/coderbot/iris/vertices/BufferBuilderPolygonView.java b/src/main/java/net/coderbot/iris/vertices/BufferBuilderPolygonView.java
index 6bf47c07b..d672f40b2 100644
--- a/src/main/java/net/coderbot/iris/vertices/BufferBuilderPolygonView.java
+++ b/src/main/java/net/coderbot/iris/vertices/BufferBuilderPolygonView.java
@@ -2,7 +2,7 @@ package net.coderbot.iris.vertices;
import java.nio.ByteBuffer;
-public class BufferBuilderPolygonView implements QuadView {
+public class BufferBuilderPolygonView implements IrisQuadView {
private ByteBuffer buffer;
private int writePointer;
private int stride = 48;
diff --git a/src/main/java/net/coderbot/iris/vertices/ExtendingBufferBuilder.java b/src/main/java/net/coderbot/iris/vertices/ExtendingBufferBuilder.java
index 15cab7a6a..040af736b 100644
--- a/src/main/java/net/coderbot/iris/vertices/ExtendingBufferBuilder.java
+++ b/src/main/java/net/coderbot/iris/vertices/ExtendingBufferBuilder.java
@@ -1,6 +1,6 @@
package net.coderbot.iris.vertices;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
public interface ExtendingBufferBuilder {
void iris$beginWithoutExtending(int drawMode, VertexFormat vertexFormat);
diff --git a/src/main/java/net/coderbot/iris/vertices/QuadView.java b/src/main/java/net/coderbot/iris/vertices/IrisQuadView.java
similarity index 70%
rename from src/main/java/net/coderbot/iris/vertices/QuadView.java
rename to src/main/java/net/coderbot/iris/vertices/IrisQuadView.java
index 3db437790..2c495d617 100644
--- a/src/main/java/net/coderbot/iris/vertices/QuadView.java
+++ b/src/main/java/net/coderbot/iris/vertices/IrisQuadView.java
@@ -3,5 +3,5 @@ package net.coderbot.iris.vertices;
/**
* Implementations of this class must support at least four vertices.
*/
-public interface QuadView extends TriView {
+public interface IrisQuadView extends TriView {
}
diff --git a/src/main/java/net/coderbot/iris/vertices/IrisVertexFormats.java b/src/main/java/net/coderbot/iris/vertices/IrisVertexFormats.java
index 5b33847ee..7fe5168d7 100644
--- a/src/main/java/net/coderbot/iris/vertices/IrisVertexFormats.java
+++ b/src/main/java/net/coderbot/iris/vertices/IrisVertexFormats.java
@@ -1,9 +1,10 @@
package net.coderbot.iris.vertices;
import com.google.common.collect.ImmutableList;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormat;
-import com.gtnewhorizons.angelica.compat.mojang.VertexFormatElement;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormat;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.VertexFormatElement;
public class IrisVertexFormats {
public static final VertexFormatElement ENTITY_ELEMENT;
@@ -38,12 +39,11 @@ public class IrisVertexFormats {
entityElements.add(DefaultVertexFormat.POSITION_ELEMENT); // 12
entityElements.add(DefaultVertexFormat.COLOR_ELEMENT); // 16
entityElements.add(DefaultVertexFormat.TEXTURE_ELEMENT); // 24
- entityElements.add(DefaultVertexFormat.OVERLAY_ELEMENT); // 28
- entityElements.add(DefaultVertexFormat.LIGHT_ELEMENT); // 32
- entityElements.add(DefaultVertexFormat.NORMAL_ELEMENT); // 35
- entityElements.add(DefaultVertexFormat.PADDING_ELEMENT); // 36
- entityElements.add(MID_TEXTURE_ELEMENT); // 44
- entityElements.add(TANGENT_ELEMENT); // 48
+ entityElements.add(DefaultVertexFormat.LIGHT_ELEMENT); // 28
+ entityElements.add(DefaultVertexFormat.NORMAL_ELEMENT); // 31
+ entityElements.add(DefaultVertexFormat.PADDING_ELEMENT); // 32
+ entityElements.add(MID_TEXTURE_ELEMENT); // 40
+ entityElements.add(TANGENT_ELEMENT); // 44
TERRAIN = new VertexFormat(terrainElements.build());
ENTITY = new VertexFormat(entityElements.build());
diff --git a/src/main/java/net/coderbot/iris/vertices/NormalHelper.java b/src/main/java/net/coderbot/iris/vertices/NormalHelper.java
index d37ac81d3..05a30ca19 100644
--- a/src/main/java/net/coderbot/iris/vertices/NormalHelper.java
+++ b/src/main/java/net/coderbot/iris/vertices/NormalHelper.java
@@ -43,7 +43,7 @@ public abstract class NormalHelper {
* Assumes counter-clockwise winding order, which is the norm.
* Expects convex quads with all points co-planar.
*/
- public static void computeFaceNormal(@NotNull Vector3f saveTo, QuadView q) {
+ public static void computeFaceNormal(@NotNull Vector3f saveTo, IrisQuadView q) {
// final Direction nominalFace = q.nominalFace();
//
// if (GeometryHelper.isQuadParallelToFace(nominalFace, q)) {
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinActiveRenderInfo.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinActiveRenderInfo.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinActiveRenderInfo.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinActiveRenderInfo.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinFMLClientHandler.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinFMLClientHandler.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinFMLClientHandler.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinFMLClientHandler.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinMinecraft.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinMinecraft.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinMinecraft.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/MixinMinecraft.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinBlockFire.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinBlockFire.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinBlockFire.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinBlockFire.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinChunkCache.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinChunkCache.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinChunkCache.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinChunkCache.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinMinecraftForgeClient.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinMinecraftForgeClient.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinMinecraftForgeClient.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinMinecraftForgeClient.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlockFluid.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlockFluid.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlockFluid.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlockFluid.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlocks.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlocks.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlocks.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlocks.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureAtlasSprite.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureAtlasSprite.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureAtlasSprite.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureAtlasSprite.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureMap.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureMap.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureMap.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinTextureMap.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinWorldRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinWorldRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinWorldRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinWorldRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/AccessorSplashProgress.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/AccessorSplashProgress.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/AccessorSplashProgress.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/AccessorSplashProgress.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinBlockFence.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinBlockFence.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinBlockFence.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinBlockFence.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinFMLClientHandler.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinFMLClientHandler.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinFMLClientHandler.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinFMLClientHandler.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinGuiIngameForge.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinGuiIngameForge.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinGuiIngameForge.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinGuiIngameForge.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinNetHandlerPlayClient.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinNetHandlerPlayClient.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinNetHandlerPlayClient.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinNetHandlerPlayClient.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinSplashProgress.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinSplashProgress.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinSplashProgress.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinSplashProgress.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinThreadDownloadImageData.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinThreadDownloadImageData.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinThreadDownloadImageData.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/archaic/MixinThreadDownloadImageData.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/bugfixes/MixinRenderBlockFluid.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/bugfixes/MixinRenderBlockFluid.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/bugfixes/MixinRenderBlockFluid.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/bugfixes/MixinRenderBlockFluid.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinProfiler.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinProfiler.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinProfiler.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinProfiler.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinSplashProgress.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinSplashProgress.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinSplashProgress.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinSplashProgress.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinTextureManager.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinTextureManager.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinTextureManager.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/debug/MixinTextureManager.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntity.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntity.java
similarity index 95%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntity.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntity.java
index 2cf024cb6..ad46af8b0 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntity.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntity.java
@@ -1,6 +1,7 @@
package com.gtnewhorizons.angelica.mixins.early.angelica.dynamiclights;
-import com.gtnewhorizons.angelica.compat.mojang.BlockPosImpl;
+import com.gtnewhorizon.gtnhlib.blockpos.BlockPos;
+import com.gtnewhorizon.gtnhlib.blockpos.IBlockPos;
import com.gtnewhorizons.angelica.dynamiclights.DynamicLights;
import com.gtnewhorizons.angelica.dynamiclights.IDynamicLightSource;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
@@ -16,7 +17,6 @@ import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(Entity.class)
public abstract class MixinEntity implements IDynamicLightSource {
@@ -128,7 +128,7 @@ public abstract class MixinEntity implements IDynamicLightSource {
var newPos = new LongOpenHashSet();
if (luminance > 0) {
- var chunkPos = new BlockPosImpl(chunkCoordX, MathHelper.floor_double(posY + getEyeHeight()) >> 4, chunkCoordZ);
+ IBlockPos chunkPos = new BlockPos(chunkCoordX, MathHelper.floor_double(posY + getEyeHeight()) >> 4, chunkCoordZ);
DynamicLights.scheduleChunkRebuild(renderer, chunkPos);
DynamicLights.updateTrackedChunks(chunkPos, this.angelica$trackedLitChunkPos, newPos);
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinItemRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinItemRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinItemRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinItemRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinWorld.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinWorld.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinWorld.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/dynamiclights/MixinWorld.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinFontRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinFontRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinFontRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinFontRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinGuiIngameForge.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinGuiIngameForge.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinGuiIngameForge.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/fontrenderer/MixinGuiIngameForge.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinEntityRenderer_HUDCaching.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinEntityRenderer_HUDCaching.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinEntityRenderer_HUDCaching.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinEntityRenderer_HUDCaching.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinFramebuffer_HUDCaching.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinFramebuffer_HUDCaching.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinFramebuffer_HUDCaching.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinFramebuffer_HUDCaching.java
diff --git a/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngame.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngame.java
new file mode 100644
index 000000000..bb53d89a8
--- /dev/null
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngame.java
@@ -0,0 +1,19 @@
+package com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching;
+
+import com.gtnewhorizons.angelica.mixins.interfaces.GuiIngameAccessor;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Invoker;
+
+import net.minecraft.client.gui.GuiIngame;
+
+@Mixin(GuiIngame.class)
+public abstract class MixinGuiIngame implements GuiIngameAccessor {
+ @Invoker
+ public abstract void callRenderVignette(float brightness, int width, int height);
+
+ @Invoker
+ public abstract void callRenderPumpkinBlur(int width, int height);
+
+ @Invoker("func_130015_b")
+ public abstract void callRenderPortal(float partialTicks, int width, int height);
+}
diff --git a/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge.java
new file mode 100644
index 000000000..636024a38
--- /dev/null
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge.java
@@ -0,0 +1,25 @@
+package com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching;
+
+import com.gtnewhorizons.angelica.mixins.interfaces.GuiIngameForgeAccessor;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Invoker;
+
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.client.GuiIngameForge;
+
+@Mixin(GuiIngameForge.class)
+public abstract class MixinGuiIngameForge implements GuiIngameForgeAccessor {
+
+ @Invoker(remap = false)
+ public abstract void callRenderCrosshairs(int width, int height);
+
+ @Invoker(remap = false)
+ public abstract void callRenderHelmet(ScaledResolution res, float partialTicks, boolean hasScreen, int mouseX, int mouseY);
+
+ @Invoker(remap = false)
+ public abstract void callRenderPortal(int width, int height, float partialTicks);
+
+ @Invoker(remap = false)
+ public abstract void callBind(ResourceLocation res);
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge_HUDCaching.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge_HUDCaching.java
similarity index 96%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge_HUDCaching.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge_HUDCaching.java
index a009f94fa..45b4d2d80 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge_HUDCaching.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngameForge_HUDCaching.java
@@ -1,5 +1,6 @@
package com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching;
+import com.gtnewhorizons.angelica.mixins.interfaces.GuiIngameForgeAccessor;
import net.minecraft.client.gui.ScaledResolution;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngame_HUDCaching.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngame_HUDCaching.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngame_HUDCaching.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinGuiIngame_HUDCaching.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/RenderGameOverlayEventAccessor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinRenderGameOverlayEvent.java
similarity index 56%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/RenderGameOverlayEventAccessor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinRenderGameOverlayEvent.java
index 3348a23f5..9793a8c50 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/RenderGameOverlayEventAccessor.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinRenderGameOverlayEvent.java
@@ -1,22 +1,22 @@
package com.gtnewhorizons.angelica.mixins.early.angelica.hudcaching;
+import com.gtnewhorizons.angelica.mixins.interfaces.RenderGameOverlayEventAccessor;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
-import net.minecraftforge.event.terraingen.BiomeEvent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(RenderGameOverlayEvent.class)
-public interface RenderGameOverlayEventAccessor {
+public abstract class MixinRenderGameOverlayEvent implements RenderGameOverlayEventAccessor {
@Accessor(value = "partialTicks", remap = false)
- void setPartialTicks(float value);
+ public abstract void setPartialTicks(float value);
@Accessor(value = "resolution", remap = false)
- void setResolution(ScaledResolution resolution);
+ public abstract void setResolution(ScaledResolution resolution);
@Accessor(value = "mouseX", remap = false)
- void setMouseX(int mouseX);
+ public abstract void setMouseX(int mouseX);
@Accessor(value = "mouseY", remap = false)
- void setMouseY(int mouseY);
+ public abstract void setMouseY(int mouseY);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinRenderItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinRenderItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinRenderItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/hudcaching/MixinRenderItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/lighting/MixinWorld_FixLightUpdateLag.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/lighting/MixinWorld_FixLightUpdateLag.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/lighting/MixinWorld_FixLightUpdateLag.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/lighting/MixinWorld_FixLightUpdateLag.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlock.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlock.java
similarity index 58%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlock.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlock.java
index 2b7b67ea6..434edff3f 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlock.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlock.java
@@ -1,8 +1,9 @@
package com.gtnewhorizons.angelica.mixins.early.angelica.models;
-import com.gtnewhorizons.angelica.api.QuadProvider;
+import com.gtnewhorizon.gtnhlib.client.renderer.quad.QuadProvider;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
import com.gtnewhorizons.angelica.mixins.interfaces.ModeledBlock;
+import com.gtnewhorizons.angelica.models.VanillaModels;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.block.Block;
@@ -12,7 +13,6 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import static com.gtnewhorizons.angelica.models.VanillaModels.*;
@Mixin(Block.class)
public abstract class MixinBlock implements ModeledBlock {
@@ -27,12 +27,12 @@ public abstract class MixinBlock implements ModeledBlock {
if (!AngelicaConfig.injectQPRendering)
return;
- ((ModeledBlock) Blocks.stone).setModel(STONE);
- ((ModeledBlock) Blocks.glass).setModel(GLASS);
- ((ModeledBlock) Blocks.crafting_table).setModel(WORKBENCH);
- ((ModeledBlock) Blocks.leaves).setModel(OLD_LEAF);
- ((ModeledBlock) Blocks.leaves2).setModel(NEW_LEAF);
- ((ModeledBlock) Blocks.log).setModel(OLD_LOG);
- ((ModeledBlock) Blocks.log2).setModel(NEW_LOG);
+ ((ModeledBlock) Blocks.stone).setModel(VanillaModels.STONE);
+ ((ModeledBlock) Blocks.glass).setModel(VanillaModels.GLASS);
+ ((ModeledBlock) Blocks.crafting_table).setModel(VanillaModels.WORKBENCH);
+ ((ModeledBlock) Blocks.leaves).setModel(VanillaModels.OLD_LEAF);
+ ((ModeledBlock) Blocks.leaves2).setModel(VanillaModels.NEW_LEAF);
+ ((ModeledBlock) Blocks.log).setModel(VanillaModels.OLD_LOG);
+ ((ModeledBlock) Blocks.log2).setModel(VanillaModels.NEW_LOG);
}
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlockOldLeaf.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlockOldLeaf.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlockOldLeaf.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/models/MixinBlockOldLeaf.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/optimizations/MixinRendererLivingEntity.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/optimizations/MixinRendererLivingEntity.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/optimizations/MixinRendererLivingEntity.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/optimizations/MixinRendererLivingEntity.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/startup/MixinInitGLStateManager.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/startup/MixinInitGLStateManager.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/startup/MixinInitGLStateManager.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/startup/MixinInitGLStateManager.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureAtlasSprite.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureAtlasSprite.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureAtlasSprite.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureAtlasSprite.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil_OptimizeMipmap.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil_OptimizeMipmap.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil_OptimizeMipmap.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/MixinTextureUtil_OptimizeMipmap.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/ic2/MixinRenderLiquidCell.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/ic2/MixinRenderLiquidCell.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/ic2/MixinRenderLiquidCell.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/textures/ic2/MixinRenderLiquidCell.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinGLAllocation.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinGLAllocation.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinGLAllocation.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinGLAllocation.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinModelRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinModelRenderer.java
similarity index 85%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinModelRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinModelRenderer.java
index 16dbcfc31..9e0b5aaed 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinModelRenderer.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinModelRenderer.java
@@ -1,8 +1,9 @@
package com.gtnewhorizons.angelica.mixins.early.angelica.vbo;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
-import com.gtnewhorizons.angelica.glsm.VBOManager;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VBOManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
import net.minecraft.client.model.ModelRenderer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinRenderGlobal.java
similarity index 95%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinRenderGlobal.java
index 733bc4b5f..918fbcc99 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinRenderGlobal.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinRenderGlobal.java
@@ -1,9 +1,10 @@
package com.gtnewhorizons.angelica.mixins.early.angelica.vbo;
-import com.gtnewhorizons.angelica.compat.mojang.DefaultVertexFormat;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VBOManager;
+import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;
import com.gtnewhorizons.angelica.config.AngelicaConfig;
-import com.gtnewhorizons.angelica.glsm.TessellatorManager;
-import com.gtnewhorizons.angelica.glsm.VBOManager;
import com.gtnewhorizons.angelica.render.CloudRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.WorldClient;
diff --git a/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinWavefrontObject.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinWavefrontObject.java
new file mode 100644
index 000000000..8b8717228
--- /dev/null
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/angelica/vbo/MixinWavefrontObject.java
@@ -0,0 +1,21 @@
+package com.gtnewhorizons.angelica.mixins.early.angelica.vbo;
+
+import com.gtnewhorizon.gtnhlib.client.renderer.vbo.IModelCustomExt;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraftforge.client.model.obj.WavefrontObject;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Overwrite;
+
+@Mixin(value = WavefrontObject.class, remap = false)
+public abstract class MixinWavefrontObject {
+ /**
+ * @author mitchej123
+ * @reason Force all models to use VBOs
+ */
+ @SideOnly(Side.CLIENT)
+ @Overwrite
+ public void renderAll() {
+ ((IModelCustomExt) (Object)this).renderAllVBO();
+ }
+}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinAbstractTexture.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinAbstractTexture.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinAbstractTexture.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinAbstractTexture.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockGrass.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockGrass.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockGrass.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockGrass.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockMycelium.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockMycelium.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockMycelium.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinBlockMycelium.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinMinecraft.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinMinecraft.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinMinecraft.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinMinecraft.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinSimpleReloadableResourceManager.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinSimpleReloadableResourceManager.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinSimpleReloadableResourceManager.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinSimpleReloadableResourceManager.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinTextureAtlasSprite.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinTextureAtlasSprite.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinTextureAtlasSprite.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/base/MixinTextureAtlasSprite.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlock.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlock.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlock.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlock.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockDoublePlant.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockDoublePlant.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockDoublePlant.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockDoublePlant.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockGrass.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockGrass.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockGrass.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockGrass.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLeaves.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLeaves.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLeaves.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLeaves.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLilyPad.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLilyPad.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLilyPad.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLilyPad.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLiquid.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLiquid.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLiquid.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockLiquid.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockOldLeaf.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockOldLeaf.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockOldLeaf.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockOldLeaf.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockRedstoneWire.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockRedstoneWire.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockRedstoneWire.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockRedstoneWire.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockReed.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockReed.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockReed.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockReed.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockStem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockStem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockStem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockStem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockTallGrass.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockTallGrass.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockTallGrass.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockTallGrass.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockVine.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockVine.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockVine.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/MixinBlockVine.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/material/MixinMapColor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/material/MixinMapColor.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/material/MixinMapColor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/block/material/MixinMapColor.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityAuraFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityAuraFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityAuraFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityAuraFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityBubbleFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityBubbleFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityBubbleFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityBubbleFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityDropParticleFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityDropParticleFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityDropParticleFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityDropParticleFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityPortalFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityPortalFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityPortalFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityPortalFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRainFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRainFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRainFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRainFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRedDustFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRedDustFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRedDustFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntityRedDustFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySplashFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySplashFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySplashFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySplashFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySuspendFX.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySuspendFX.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySuspendFX.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/particle/MixinEntitySuspendFX.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinItemRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinItemRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinItemRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinItemRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderBlocks.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderBlocks.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderBlocks.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderBlocks.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderWolf.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderWolf.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderWolf.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderWolf.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderXPOrb.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderXPOrb.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderXPOrb.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/entity/MixinRenderXPOrb.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/tileentity/MixinTileEntitySignRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/tileentity/MixinTileEntitySignRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/tileentity/MixinTileEntitySignRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/client/renderer/tileentity/MixinTileEntitySignRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/entity/MixinEntityList.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/entity/MixinEntityList.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/entity/MixinEntityList.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/entity/MixinEntityList.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemArmor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemArmor.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemArmor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemArmor.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemBlock.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemBlock.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemBlock.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemBlock.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemMonsterPlacer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemMonsterPlacer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemMonsterPlacer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/MixinItemMonsterPlacer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/crafting/MixinRecipesArmorDyes.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/crafting/MixinRecipesArmorDyes.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/crafting/MixinRecipesArmorDyes.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/item/crafting/MixinRecipesArmorDyes.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotion.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotion.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotion.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotion.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotionHelper.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotionHelper.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotionHelper.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/potion/MixinPotionHelper.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorld.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorld.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorld.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorld.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProvider.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProvider.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProvider.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProvider.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderEnd.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderEnd.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderEnd.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderEnd.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderHell.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderHell.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderHell.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cc/world/MixinWorldProviderHell.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinItemRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinItemRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinItemRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinItemRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderBiped.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderBiped.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderBiped.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderBiped.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderEntityLiving.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderEntityLiving.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderEntityLiving.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderEntityLiving.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItemRenderDroppedItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItemRenderDroppedItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItemRenderDroppedItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderItemRenderDroppedItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderPlayer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderPlayer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderPlayer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderPlayer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderSnowball.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderSnowball.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderSnowball.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/client/renderer/entity/MixinRenderSnowball.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/entity/MixinEntityLivingBase.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/entity/MixinEntityLivingBase.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/entity/MixinEntityLivingBase.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/entity/MixinEntityLivingBase.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/item/MixinItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/item/MixinItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/item/MixinItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/item/MixinItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagCompound.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagCompound.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagCompound.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagCompound.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagList.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagList.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagList.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/nbt/MixinNBTTagList.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/world/MixinWorld.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/world/MixinWorld.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/world/MixinWorld.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/cit/world/MixinWorld.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm/MixinRenderBlocks.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm/MixinRenderBlocks.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm/MixinRenderBlocks.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm/MixinRenderBlocks.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocks.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocks.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocks.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocks.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCC.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCC.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCC.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCC.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCTM.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCTM.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCTM.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinRenderBlocksNoCTM.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinTextureMap.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinTextureMap.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinTextureMap.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/ctm_cc/MixinTextureMap.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinFontRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinFontRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinFontRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinFontRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureClock.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureClock.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureClock.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureClock.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureCompass.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureCompass.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureCompass.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureCompass.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureManager.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureManager.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureManager.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/hd/MixinTextureManager.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinEntityLivingBase.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinEntityLivingBase.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinEntityLivingBase.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinEntityLivingBase.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRender.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRender.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRender.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRender.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderEnderman.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderEnderman.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderEnderman.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderEnderman.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderFish.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderFish.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderFish.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderFish.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderLiving.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderLiving.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderLiving.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderLiving.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderMooshroom.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderMooshroom.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderMooshroom.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderMooshroom.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSheep.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSheep.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSheep.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSheep.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSnowMan.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSnowMan.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSnowMan.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSnowMan.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSpider.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSpider.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSpider.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderSpider.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderWolf.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderWolf.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderWolf.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/mob/MixinRenderWolf.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderBlocks.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderBlocks.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderBlocks.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderBlocks.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinWorldRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinWorldRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinWorldRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/renderpass/MixinWorldRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinEffectRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinEffectRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinEffectRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinEffectRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/mcpatcherforge/sky/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinGameSettings.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinGameSettings.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinGameSettings.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinGameSettings.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinWorldType.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinWorldType.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinWorldType.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/clouds/MixinWorldType.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlock.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlock.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlock.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlock.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCactus.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCactus.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCactus.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCactus.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCarpet.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCarpet.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCarpet.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockCarpet.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockEnchantmentTable.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockEnchantmentTable.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockEnchantmentTable.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockEnchantmentTable.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockFarmland.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockFarmland.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockFarmland.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockFarmland.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSlab.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSlab.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSlab.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSlab.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSnow.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSnow.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSnow.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockSnow.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockStairs.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockStairs.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockStairs.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinBlockStairs.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinRenderBlocks.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinRenderBlocks.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinRenderBlocks.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/faceculling/MixinRenderBlocks.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/fix/MixinRenderItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/fix/MixinRenderItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/fix/MixinRenderItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/fix/MixinRenderItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinItemRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinItemRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinItemRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinItemRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderBiped.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderBiped.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderBiped.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderBiped.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderPlayer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderPlayer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderPlayer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/glint/MixinRenderPlayer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/gui/MixinGuiSlot.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/gui/MixinGuiSlot.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/gui/MixinGuiSlot.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/gui/MixinGuiSlot.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/interpolatedtexturemap/MixinTextureMap.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/interpolatedtexturemap/MixinTextureMap.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/interpolatedtexturemap/MixinTextureMap.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/interpolatedtexturemap/MixinTextureMap.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeaves.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeaves.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeaves.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeaves.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeavesBase.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeavesBase.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeavesBase.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/leaves/MixinBlockLeavesBase.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/optimization/MixinRenderItemFrame.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/optimization/MixinRenderItemFrame.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/optimization/MixinRenderItemFrame.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/optimization/MixinRenderItemFrame.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinBlockEnchantmentTable.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinBlockEnchantmentTable.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinBlockEnchantmentTable.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinBlockEnchantmentTable.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinEffectRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinEffectRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinEffectRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinEffectRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinWorldClient.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinWorldClient.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinWorldClient.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/particles/MixinWorldClient.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/renderer/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/renderer/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/renderer/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/renderer/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer$RenderRainSnow.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer$RenderRainSnow.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer$RenderRainSnow.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer$RenderRainSnow.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinGuiIngame.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinGuiIngame.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinGuiIngame.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinGuiIngame.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRender.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRender.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRender.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRender.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRenderItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRenderItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRenderItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/notfine/toggle/MixinRenderItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinFramebuffer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinFramebuffer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinFramebuffer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinFramebuffer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinGuiIngameForge.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinGuiIngameForge.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinGuiIngameForge.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinGuiIngameForge.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinItem.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinItem.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinItem.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinItem.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinLocale.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinLocale.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinLocale.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinLocale.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinOpenGlHelper.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinOpenGlHelper.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinOpenGlHelper.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinOpenGlHelper.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRender.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRender.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRender.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRender.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderDragon.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderDragon.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderDragon.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderDragon.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderEnderman.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderEnderman.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderEnderman.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderEnderman.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderSpider.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderSpider.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderSpider.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRenderSpider.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRendererLivingEntity.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRendererLivingEntity.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRendererLivingEntity.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinRendererLivingEntity.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinTileEntityBeaconRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinTileEntityBeaconRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinTileEntityBeaconRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/MixinTileEntityBeaconRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/AnimationMetadataSectionAccessor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinAnimationMetadataSection.java
similarity index 54%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/AnimationMetadataSectionAccessor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinAnimationMetadataSection.java
index 83e260c16..eec0b06ec 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/AnimationMetadataSectionAccessor.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinAnimationMetadataSection.java
@@ -1,23 +1,24 @@
package com.gtnewhorizons.angelica.mixins.early.shaders.accessors;
+import com.gtnewhorizons.angelica.mixins.interfaces.AnimationMetadataSectionAccessor;
import net.minecraft.client.resources.data.AnimationMetadataSection;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(AnimationMetadataSection.class)
-public interface AnimationMetadataSectionAccessor {
+public abstract class MixinAnimationMetadataSection implements AnimationMetadataSectionAccessor {
@Accessor("frameWidth")
- int getFrameWidth();
+ public abstract int getFrameWidth();
@Mutable
@Accessor("frameWidth")
- void setFrameWidth(int frameWidth);
+ public abstract void setFrameWidth(int frameWidth);
@Accessor("frameHeight")
- int getFrameHeight();
+ public abstract int getFrameHeight();
@Mutable
@Accessor("frameHeight")
- void setFrameHeight(int frameHeight);
+ public abstract void setFrameHeight(int frameHeight);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/EntityRendererAccessor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinEntityRenderer.java
similarity index 54%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/EntityRendererAccessor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinEntityRenderer.java
index 1dbab0d41..8c813bbd3 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/EntityRendererAccessor.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinEntityRenderer.java
@@ -1,13 +1,14 @@
package com.gtnewhorizons.angelica.mixins.early.shaders.accessors;
+import com.gtnewhorizons.angelica.mixins.interfaces.EntityRendererAccessor;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.entity.player.EntityPlayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(EntityRenderer.class)
-public interface EntityRendererAccessor {
+public abstract class MixinEntityRenderer implements EntityRendererAccessor {
@Invoker
- float invokeGetNightVisionBrightness(EntityPlayer entityPlayer, float partialTicks);
+ public abstract float invokeGetNightVisionBrightness(EntityPlayer entityPlayer, float partialTicks);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MinecraftAccessor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinMinecraft.java
similarity index 61%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MinecraftAccessor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinMinecraft.java
index 767f185af..4ea712d0e 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MinecraftAccessor.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinMinecraft.java
@@ -1,12 +1,13 @@
package com.gtnewhorizons.angelica.mixins.early.shaders.accessors;
+import com.gtnewhorizons.angelica.mixins.interfaces.MinecraftAccessor;
import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import net.minecraft.util.Timer;
@Mixin(Minecraft.class)
-public interface MinecraftAccessor {
+public abstract class MixinMinecraft implements MinecraftAccessor {
@Accessor("timer")
- Timer getTimer();
+ public abstract Timer getTimer();
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/SimpleTextureAccessor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinSimpleTexture.java
similarity index 61%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/SimpleTextureAccessor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinSimpleTexture.java
index bc346ff60..d1063aee9 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/SimpleTextureAccessor.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinSimpleTexture.java
@@ -1,12 +1,13 @@
package com.gtnewhorizons.angelica.mixins.early.shaders.accessors;
+import com.gtnewhorizons.angelica.mixins.interfaces.SimpleTextureAccessor;
import net.minecraft.client.renderer.texture.SimpleTexture;
import net.minecraft.util.ResourceLocation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(SimpleTexture.class)
-public interface SimpleTextureAccessor {
+public abstract class MixinSimpleTexture implements SimpleTextureAccessor {
@Accessor("textureLocation")
- ResourceLocation getLocation();
+ public abstract ResourceLocation getLocation();
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/TextureAtlasSpriteAccessor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinTextureAtlasSprite.java
similarity index 54%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/TextureAtlasSpriteAccessor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinTextureAtlasSprite.java
index 75315a593..cd01150c1 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/TextureAtlasSpriteAccessor.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinTextureAtlasSprite.java
@@ -1,30 +1,30 @@
package com.gtnewhorizons.angelica.mixins.early.shaders.accessors;
+import com.gtnewhorizons.angelica.mixins.interfaces.TextureAtlasSpriteAccessor;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.data.AnimationMetadataSection;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
-import org.spongepowered.asm.mixin.gen.Invoker;
import java.util.List;
@Mixin(TextureAtlasSprite.class)
-public interface TextureAtlasSpriteAccessor {
+public abstract class MixinTextureAtlasSprite implements TextureAtlasSpriteAccessor {
@Accessor("animationMetadata")
- AnimationMetadataSection getMetadata();
+ public abstract AnimationMetadataSection getMetadata();
@Accessor("framesTextureData")
- List getFramesTextureData();
+ public abstract List getFramesTextureData();
@Accessor("frameCounter")
- int getFrame();
+ public abstract int getFrame();
@Accessor("frameCounter")
- void setFrame(int frame);
+ public abstract void setFrame(int frame);
@Accessor("tickCounter")
- int getSubFrame();
+ public abstract int getSubFrame();
@Accessor("tickCounter")
- void setSubFrame(int subFrame);
+ public abstract void setSubFrame(int subFrame);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/TextureMapAccessor.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinTextureMap.java
similarity index 64%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/TextureMapAccessor.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinTextureMap.java
index 1e34f880c..4d366534b 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/TextureMapAccessor.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/accessors/MixinTextureMap.java
@@ -8,18 +8,18 @@ import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.Map;
@Mixin(TextureMap.class)
-public interface TextureMapAccessor {
+public abstract class MixinTextureMap {
@Accessor("mapUploadedSprites")
- Map getMapUploadedSprites();
+ public abstract Map getMapUploadedSprites();
@Accessor("anisotropicFiltering")
- int getAnisotropicFiltering();
+ public abstract int getAnisotropicFiltering();
@Accessor("mipmapLevels")
- int getMipmapLevels();
+ public abstract int getMipmapLevels();
@Accessor("locationBlocksTexture")
- ResourceLocation getLocationBlocksTexture();
+ public abstract ResourceLocation getLocationBlocksTexture();
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinAbstractTexture.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinAbstractTexture.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinAbstractTexture.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinAbstractTexture.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGameSettings.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGameSettings.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGameSettings.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGameSettings.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGuiMainMenu.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGuiMainMenu.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGuiMainMenu.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinGuiMainMenu.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinInitRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinInitRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinInitRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinInitRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureAtlasSprite.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureAtlasSprite.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureAtlasSprite.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureAtlasSprite.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureMap.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureMap.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureMap.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/shaders/startup/MixinTextureMap.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/AccessorBiomeColorEvent.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/AccessorBiomeColorEvent.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/AccessorBiomeColorEvent.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/AccessorBiomeColorEvent.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBiomeGenBase.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBiomeGenBase.java
similarity index 93%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBiomeGenBase.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBiomeGenBase.java
index 8ea312f59..01da56fda 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBiomeGenBase.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBiomeGenBase.java
@@ -4,12 +4,9 @@ import com.gtnewhorizons.angelica.utils.EventUtils;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.event.terraingen.BiomeEvent;
import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(BiomeGenBase.class)
public class MixinBiomeGenBase {
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlock.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlock.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlock.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlock.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockFluidBase.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockFluidBase.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockFluidBase.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockFluidBase.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockLiquid.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockLiquid.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockLiquid.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinBlockLiquid.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunk.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunk.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunk.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunk.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderClient.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderClient.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderClient.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderClient.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderServer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderServer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderServer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinChunkProviderServer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinClientRegistry.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinClientRegistry.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinClientRegistry.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinClientRegistry.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEffectRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEffectRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEffectRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEffectRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntity.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntity.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntity.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntity.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntityRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntityRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntityRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinEntityRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinExtendedBlockStorage.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinExtendedBlockStorage.java
similarity index 51%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinExtendedBlockStorage.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinExtendedBlockStorage.java
index e444e7843..81f17dda4 100644
--- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinExtendedBlockStorage.java
+++ b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinExtendedBlockStorage.java
@@ -1,16 +1,17 @@
package com.gtnewhorizons.angelica.mixins.early.sodium;
+import com.gtnewhorizons.angelica.mixins.interfaces.ExtendedBlockStorageAccessor;
import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(ExtendedBlockStorage.class)
-public interface MixinExtendedBlockStorage {
+public abstract class MixinExtendedBlockStorage implements ExtendedBlockStorageAccessor {
@Accessor("yBase")
- int getYBase();
+ public abstract int getYBase();
@Accessor("blockRefCount")
- int getBlockRefCount();
+ public abstract int getBlockRefCount();
@Accessor("blockRefCount")
- void setBlockRefCount(int blockRefCount);
+ public abstract void setBlockRefCount(int blockRefCount);
}
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFMLClientHandler.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFMLClientHandler.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFMLClientHandler.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFMLClientHandler.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinForgeHooksClient.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinForgeHooksClient.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinForgeHooksClient.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinForgeHooksClient.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFrustrum.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFrustrum.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFrustrum.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinFrustrum.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinGameSettings.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinGameSettings.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinGameSettings.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinGameSettings.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinLongHashMap.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinLongHashMap.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinLongHashMap.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinLongHashMap.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMaterial.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMaterial.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMaterial.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMaterial.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMinecraft.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMinecraft.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMinecraft.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinMinecraft.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinNibbleArray.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinNibbleArray.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinNibbleArray.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinNibbleArray.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinPlayerManager.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinPlayerManager.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinPlayerManager.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinPlayerManager.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderBlocks.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderBlocks.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderBlocks.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderBlocks.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderGlobal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderGlobal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderGlobal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderGlobal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderManager.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderManager.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderManager.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderManager.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderingRegistry.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderingRegistry.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderingRegistry.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinRenderingRegistry.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntity.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntity.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntity.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntity.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntityRendererDispatcher.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntityRendererDispatcher.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntityRendererDispatcher.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinTileEntityRendererDispatcher.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldClient.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldClient.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldClient.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldClient.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/early/sodium/MixinWorldRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/client/campfirebackport/MixinRenderBlockCampfire.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/campfirebackport/MixinRenderBlockCampfire.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/client/campfirebackport/MixinRenderBlockCampfire.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/campfirebackport/MixinRenderBlockCampfire.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinIconConnectedTexture.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinIconConnectedTexture.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinIconConnectedTexture.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinIconConnectedTexture.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTextures.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTextures.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTextures.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTextures.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTexturesEthereal.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTexturesEthereal.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTexturesEthereal.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/extrautils/MixinRenderBlockConnectedTexturesEthereal.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/client/journeymap/MixinTileDrawStep.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/journeymap/MixinTileDrawStep.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/client/journeymap/MixinTileDrawStep.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/journeymap/MixinTileDrawStep.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/client/minefactoryreloaded/MixinRedNetCableRenderer.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/minefactoryreloaded/MixinRedNetCableRenderer.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/client/minefactoryreloaded/MixinRedNetCableRenderer.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/client/minefactoryreloaded/MixinRedNetCableRenderer.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockStoneDevice.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockStoneDevice.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockStoneDevice.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockStoneDevice.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockTable.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockTable.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockTable.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockTable.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockWoodenDevice.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockWoodenDevice.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockWoodenDevice.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/faceculling/thaumcraft/MixinBlockWoodenDevice.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinBerryBush.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinBerryBush.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinBerryBush.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinBerryBush.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinNetherBerryBush.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinNetherBerryBush.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinNetherBerryBush.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/natura/MixinNetherBerryBush.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/tconstruct/MixinOreberryBush.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/tconstruct/MixinOreberryBush.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/tconstruct/MixinOreberryBush.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/tconstruct/MixinOreberryBush.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/thaumcraft/MixinBlockMagicalLeaves.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/thaumcraft/MixinBlockMagicalLeaves.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/thaumcraft/MixinBlockMagicalLeaves.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/thaumcraft/MixinBlockMagicalLeaves.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves3.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves3.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves3.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFLeaves3.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFMagicLeaves.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFMagicLeaves.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFMagicLeaves.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/twilightforest/MixinBlockTFMagicLeaves.java
diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/witchery/MixinBlockWitchLeaves.java b/src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/witchery/MixinBlockWitchLeaves.java
similarity index 100%
rename from src/main/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/witchery/MixinBlockWitchLeaves.java
rename to src/mixin/java/com/gtnewhorizons/angelica/mixins/late/notfine/leaves/witchery/MixinBlockWitchLeaves.java
diff --git a/src/test/java/com/gtnewhorizons/angelica/glsm/GLSM_DisplayList_UnitTest.java b/src/test/java/com/gtnewhorizons/angelica/glsm/GLSM_DisplayList_UnitTest.java
index e6ac2dcb8..ea6f7a7a1 100644
--- a/src/test/java/com/gtnewhorizons/angelica/glsm/GLSM_DisplayList_UnitTest.java
+++ b/src/test/java/com/gtnewhorizons/angelica/glsm/GLSM_DisplayList_UnitTest.java
@@ -4,10 +4,8 @@ import com.gtnewhorizons.angelica.AngelicaExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL14;
-import org.lwjgl.opengl.GL20;
-import static com.gtnewhorizons.angelica.util.GLSMUtil.*;
+import static com.gtnewhorizons.angelica.util.GLSMUtil.verifyState;
@ExtendWith(AngelicaExtension.class)
class GLSM_DisplayList_UnitTest {