aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authormakamys <makamys@outlook.com>2022-06-24 09:59:15 +0200
committermakamys <makamys@outlook.com>2022-06-25 07:27:12 +0200
commitd5d08eb64a91c1a5b74e401037628260cfd8059c (patch)
treebf28db78fa10f92a28e82639943fe3cc409ee514 /src/main
parent41c8ac491b8e168f871e8d5eec1a13208e272410 (diff)
downloadNeodymium-d5d08eb64a91c1a5b74e401037628260cfd8059c.tar.gz
Neodymium-d5d08eb64a91c1a5b74e401037628260cfd8059c.tar.bz2
Neodymium-d5d08eb64a91c1a5b74e401037628260cfd8059c.zip
DESTROOOOY
Delete unused LOD stuff. I can always restore it from Git history if I need it later.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/makamys/neodymium/Config.java39
-rw-r--r--src/main/java/makamys/neodymium/MixinConfigPlugin.java31
-rw-r--r--src/main/java/makamys/neodymium/Neodymium.java44
-rw-r--r--src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java72
-rw-r--r--src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java29
-rw-r--r--src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java32
-rw-r--r--src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java25
-rw-r--r--src/main/java/makamys/neodymium/renderer/ChunkMesh.java84
-rw-r--r--src/main/java/makamys/neodymium/renderer/GPUMemoryManager.java21
-rw-r--r--src/main/java/makamys/neodymium/renderer/MeshQuad.java19
-rw-r--r--src/main/java/makamys/neodymium/renderer/NeoChunk.java97
-rw-r--r--src/main/java/makamys/neodymium/renderer/NeoRegion.java104
-rw-r--r--src/main/java/makamys/neodymium/renderer/NeoRenderer.java194
-rw-r--r--src/main/java/makamys/neodymium/renderer/SimpleChunkMesh.java336
-rw-r--r--src/main/java/makamys/neodymium/renderer/lod/FarChunkCache.java13
-rw-r--r--src/main/java/makamys/neodymium/renderer/lod/FarWorldRenderer.java15
-rw-r--r--src/main/java/makamys/neodymium/util/OFUtil.java11
-rw-r--r--src/main/java/makamys/neodymium/util/SpriteUtil.java55
18 files changed, 40 insertions, 1181 deletions
diff --git a/src/main/java/makamys/neodymium/Config.java b/src/main/java/makamys/neodymium/Config.java
index 48f46c9..6c72fde 100644
--- a/src/main/java/makamys/neodymium/Config.java
+++ b/src/main/java/makamys/neodymium/Config.java
@@ -21,10 +21,6 @@ import java.nio.file.Files;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
import org.lwjgl.input.Keyboard;
@@ -64,18 +60,6 @@ public class Config {
@ConfigBoolean(cat="debug", def=false)
public static boolean wireframe;
- // Unused LOD stuff
- public static int chunkLoadsPerTick = 64;
- public static List<Class<?>> blockClassBlacklist = Arrays.asList();
- public static double fogStart = 0.25f;
- public static double fogEnd = 1f;
- public static double farPlaneDistanceMultiplier = 1;
- public static boolean forceVanillaBiomeTemperature = false;
- public static boolean hideUnderVanillaChunks = false;
- public static boolean disableChunkMeshes = false;
- public static boolean disableSimpleMeshes = true;
- public static boolean saveMeshes = false;
-
private static File configFile = new File(Launch.minecraftHome, "config/" + MODID + ".cfg");
private static WatchService watcher;
@@ -169,29 +153,6 @@ public class Config {
return needReload;
}
- // Unused
- public static void loadConfigLOD(Configuration config) {
- chunkLoadsPerTick = config.get("General", "chunkLoadsPerTick", 64).getInt();
- blockClassBlacklist = Arrays.stream(config.get("General", "blockClassBlacklist", "net.minecraft.block.BlockRotatedPillar;biomesoplenty.common.blocks.BlockBOPLog;gregapi.block.multitileentity.MultiTileEntityBlock").getString().split(";"))
- .map(className -> {
- try {
- return Class.forName(className);
- } catch (ClassNotFoundException e) {
- return null;
- }
- })
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- fogStart = config.get("Fog", "fogStart", "0.4").getDouble();
- fogEnd = config.get("Fog", "fogEnd", "0.8").getDouble();
- farPlaneDistanceMultiplier = config.get("Fog", "farPlaneDistanceMultiplier", "1.0").getDouble();
- forceVanillaBiomeTemperature = config.get("Simple mesh generation", "forceVanillaBiomeTemperature", true).getBoolean();
- hideUnderVanillaChunks = config.getBoolean("hideUnderVanillaChunks", "render", true, "");
- disableChunkMeshes = config.getBoolean("disableChunkMeshes", "render", true, "");
- disableSimpleMeshes = config.getBoolean("disableSimpleMeshes", "render", false, "");
- saveMeshes = config.getBoolean("saveMeshes", "render", false, "");
- }
-
public static boolean reloadIfChanged(ReloadInfo info) {
boolean reloaded = false;
if(watcher != null) {
diff --git a/src/main/java/makamys/neodymium/MixinConfigPlugin.java b/src/main/java/makamys/neodymium/MixinConfigPlugin.java
index a2357d4..38d6304 100644
--- a/src/main/java/makamys/neodymium/MixinConfigPlugin.java
+++ b/src/main/java/makamys/neodymium/MixinConfigPlugin.java
@@ -9,19 +9,15 @@ import org.spongepowered.asm.lib.tree.ClassNode;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
+import makamys.neodymium.util.OFUtil;
+
public class MixinConfigPlugin implements IMixinConfigPlugin {
- private static boolean isOptiFinePresent = MixinConfigPlugin.class.getResource("/optifine/OptiFineTweaker.class") != null;
-
@Override
- public void onLoad(String mixinPackage) {
- // TODO Auto-generated method stub
-
- }
+ public void onLoad(String mixinPackage) {}
@Override
public String getRefMapperConfig() {
- // TODO Auto-generated method stub
return null;
}
@@ -31,10 +27,7 @@ public class MixinConfigPlugin implements IMixinConfigPlugin {
}
@Override
- public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {
- // TODO Auto-generated method stub
-
- }
+ public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {}
@Override
public List<String> getMixins() {
@@ -43,7 +36,7 @@ public class MixinConfigPlugin implements IMixinConfigPlugin {
"MixinRenderGlobal",
"MixinWorldRenderer"));
- if (isOptiFinePresent()) {
+ if (OFUtil.isOptiFinePresent()) {
System.out.println("Detected OptiFine");
mixins.add("MixinRenderGlobal_OptiFine");
}
@@ -52,19 +45,9 @@ public class MixinConfigPlugin implements IMixinConfigPlugin {
}
@Override
- public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
- // TODO Auto-generated method stub
-
- }
+ public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {}
@Override
- public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
- // TODO Auto-generated method stub
-
- }
-
- public static boolean isOptiFinePresent() {
- return isOptiFinePresent;
- }
+ public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {}
}
diff --git a/src/main/java/makamys/neodymium/Neodymium.java b/src/main/java/makamys/neodymium/Neodymium.java
index 4a59426..e8a0c5c 100644
--- a/src/main/java/makamys/neodymium/Neodymium.java
+++ b/src/main/java/makamys/neodymium/Neodymium.java
@@ -1,16 +1,9 @@
package makamys.neodymium;
-import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.lwjgl.input.Keyboard;
-
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
@@ -25,18 +18,16 @@ import cpw.mods.fml.relauncher.SideOnly;
import makamys.mclib.core.MCLib;
import makamys.mclib.core.MCLibModules;
import makamys.neodymium.renderer.NeoRenderer;
-import makamys.neodymium.util.SpriteUtil;
+import makamys.neodymium.util.OFUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
-import net.minecraftforge.client.event.EntityViewRenderEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.event.world.ChunkEvent;
import net.minecraftforge.event.world.WorldEvent;
@Mod(modid = Neodymium.MODID, version = Neodymium.VERSION)
@@ -51,8 +42,6 @@ public class Neodymium
public static NeoRenderer renderer;
- public static boolean fogEventWasPosted;
-
public static boolean ofFastRender;
private static Method ofIsFastRenderMethod;
@@ -84,9 +73,6 @@ public class Neodymium
private void onPlayerWorldChanged(World newWorld) {
if(getRendererWorld() == null && newWorld != null) {
Config.reloadConfig();
- if(Config.enabled) {
- SpriteUtil.init();
- }
}
if(renderer != null) {
renderer.destroy();
@@ -107,15 +93,6 @@ public class Neodymium
}
}
- @SubscribeEvent
- public void onChunkLoad(ChunkEvent.Load event) {
- if(!event.world.isRemote) return;
-
- if(isActive()) {
- renderer.onChunkLoad(event);
- }
- }
-
public static boolean isActive() {
return renderer != null && renderer.hasInited && !renderer.destroyPending;
}
@@ -142,22 +119,11 @@ public class Neodymium
}
@SubscribeEvent
- public void onServerTick(TickEvent.ServerTickEvent event) {
- if(!Config.enabled) return;
-
- if(event.phase == TickEvent.Phase.START) {
- if(isActive()) {
- renderer.serverTick();
- }
- }
- }
-
- @SubscribeEvent
public void onRenderTick(TickEvent.RenderTickEvent event) {
if(!Config.enabled) return;
if(event.phase == TickEvent.Phase.START) {
- if(MixinConfigPlugin.isOptiFinePresent()) {
+ if(OFUtil.isOptiFinePresent()) {
try {
if(ofIsFastRenderMethod == null) {
ofIsFastRenderMethod = Class.forName("Config").getMethod("isFastRender");
@@ -199,12 +165,6 @@ public class Neodymium
}
}
-
- @SubscribeEvent
- public void onRenderFog(EntityViewRenderEvent.RenderFogEvent event) {
- fogEventWasPosted = true;
- }
-
public static boolean shouldRenderVanillaWorld() {
return !isActive() || (isActive() && renderer.renderWorld && !renderer.rendererActive);
}
diff --git a/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java b/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java
index 997ac67..a45257f 100644
--- a/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java
+++ b/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java
@@ -3,46 +3,28 @@ package makamys.neodymium.mixin;
import java.util.ArrayList;
import java.util.List;
-import org.lwjgl.opengl.GL11;
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 makamys.neodymium.Config;
import makamys.neodymium.Neodymium;
import makamys.neodymium.ducks.IWorldRenderer;
import makamys.neodymium.renderer.ChunkMesh;
import makamys.neodymium.renderer.NeoRenderer;
-import makamys.neodymium.renderer.lod.FarChunkCache;
-import makamys.neodymium.renderer.lod.FarWorldRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
-import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.util.AxisAlignedBB;
-import net.minecraft.world.ChunkCache;
-import net.minecraft.world.World;
/** Inserts hooks in WorldRenderer to listen for changes, and to grab the tessellator data right before rendering. */
@Mixin(WorldRenderer.class)
abstract class MixinWorldRenderer implements IWorldRenderer {
@Shadow
- public int posX;
- @Shadow
- public int posY;
- @Shadow
- public int posZ;
-
- @Shadow
private boolean isInFrustum;
@Shadow
public boolean[] skipRenderPass;
- @Shadow
- private int glRenderList;
@Shadow
public boolean needsUpdate;
@@ -52,22 +34,6 @@ abstract class MixinWorldRenderer implements IWorldRenderer {
public List<ChunkMesh> chunkMeshes;
- @Redirect(method = "setPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/RenderItem;renderAABB(Lnet/minecraft/util/AxisAlignedBB;)V"))
- private void redirectRenderAABB(AxisAlignedBB p1) {
- if(!FarWorldRenderer.class.isInstance(this.getClass())) {
- RenderItem.renderAABB(p1);
- }
- }
-
- @Redirect(method = "updateRenderer", at = @At(value = "NEW", target = "Lnet/minecraft/world/ChunkCache;"))
- private ChunkCache redirectConstructChunkCache(World p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8) {
- if(!FarWorldRenderer.class.isInstance(this.getClass())) {
- return new ChunkCache(p1, p2, p3, p4, p5, p6, p7, p8);
- } else {
- return new FarChunkCache(p1, p2, p3, p4, p5, p6, p7, p8);
- }
- }
-
@Inject(method = "updateRenderer", at = @At(value = "HEAD"))
private void preUpdateRenderer(CallbackInfo ci) {
saveDrawnStatus();
@@ -101,49 +67,13 @@ abstract class MixinWorldRenderer implements IWorldRenderer {
@Inject(method = "postRenderBlocks", at = @At(value = "HEAD"))
private void prePostRenderBlocks(int pass, EntityLivingBase entity, CallbackInfo ci) {
- if(insideUpdateRenderer && Neodymium.isActive() && !Config.disableChunkMeshes) {
+ if(insideUpdateRenderer && Neodymium.isActive()) {
if(chunkMeshes != null) {
chunkMeshes.add(ChunkMesh.fromTessellator(pass, WorldRenderer.class.cast(this), Tessellator.instance));
}
}
}
- @Redirect(method = "postRenderBlocks", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()I"))
- private int redirectPostRenderBlocksDraw() {
- if(!FarWorldRenderer.class.isInstance(this.getClass())) {
- return Tessellator.instance.draw();
- } else {
- Tessellator.instance.reset();
- return 0;
- }
- }
-
- // There's probably a nicer way to do this
-
- @Redirect(method = "postRenderBlocks", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glPopMatrix()V"))
- private void redirectPostRenderBlocksGL1() {
- if(!FarWorldRenderer.class.isInstance(this.getClass())) {
- GL11.glPopMatrix();
- }
- }
-
- @Redirect(method = "postRenderBlocks", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glEndList()V"))
- private void redirectPostRenderBlocksGL2() {
- if(!FarWorldRenderer.class.isInstance(this.getClass())) {
- GL11.glEndList();
- }
- }
-
- // XXX this is inconsistent, Forge callbacks are preserved in postRenderBlocks but not preRenderBlocks
-
- @Inject(method = "preRenderBlocks", at = @At(value = "HEAD"))
- private void preRenderBlocksInjector(CallbackInfo ci) {
- if(FarWorldRenderer.class.isInstance(this.getClass())) {
- Tessellator.instance.setTranslation((double)(-this.posX), (double)(-this.posY), (double)(-this.posZ));
- ci.cancel();
- }
- }
-
@Inject(method = "setDontDraw", at = @At(value = "HEAD"))
private void preSetDontDraw(CallbackInfo ci) {
if(Neodymium.isActive()) {
diff --git a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java
deleted file mode 100644
index 98dce9d..0000000
--- a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package makamys.neodymium.mixin.unused.lod;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Redirect;
-
-import makamys.neodymium.Neodymium;
-import makamys.neodymium.renderer.lod.FarChunkCache;
-import net.minecraft.world.ChunkCache;
-import net.minecraft.world.World;
-import net.minecraft.world.chunk.Chunk;
-
-/** Unused remnant from LODMod. Handles reusage of Chunks when a LOD chunk becomes loaded. */
-@Mixin(ChunkCache.class)
-abstract class MixinChunkCache {
-
- @Redirect(method = "<init>*", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;getChunkFromChunkCoords(II)Lnet/minecraft/world/chunk/Chunk;"))
- private Chunk redirectGetChunkFromChunkCoords(World world, int p1, int p2) {
- Chunk chunk = world.getChunkFromChunkCoords(p1, p2);
- if(Neodymium.isActive() && FarChunkCache.class.isInstance(this.getClass()) && chunk.isEmpty()) {
- Chunk myChunk = Neodymium.renderer.getChunkFromChunkCoords(p1, p2);
- if(myChunk != null) {
- chunk = myChunk;
- }
- }
- return chunk;
- }
-
-}
diff --git a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java
deleted file mode 100644
index 7ddade1..0000000
--- a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package makamys.neodymium.mixin.unused.lod;
-
-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.callback.CallbackInfo;
-
-import makamys.neodymium.Neodymium;
-import net.minecraft.client.renderer.EntityRenderer;
-
-/** Unused remnant from LODMod. Handles changing fog distance. */
-@Mixin(EntityRenderer.class)
-abstract class MixinEntityRenderer {
-
- @Shadow
- private float farPlaneDistance;
-
- @Inject(method = "setupCameraTransform", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/EntityRenderer;farPlaneDistance:F", shift = At.Shift.AFTER, ordinal = 1))
- private void onConstructed(CallbackInfo ci) {
- if(Neodymium.isActive()) {
- farPlaneDistance *= Neodymium.renderer.getFarPlaneDistanceMultiplier();
- }
- }
-
- @Inject(method = "setupFog", at = @At(value = "RETURN"))
- private void afterSetupFog(int mode, float alpha, CallbackInfo ci) {
- if(Neodymium.isActive()) {
- Neodymium.renderer.afterSetupFog(mode, alpha, farPlaneDistance);
- }
- }
-}
diff --git a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java
deleted file mode 100644
index 0af9799..0000000
--- a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package makamys.neodymium.mixin.unused.lod;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Redirect;
-
-import makamys.neodymium.Neodymium;
-import net.minecraft.block.Block;
-import net.minecraft.client.renderer.RenderBlocks;
-import net.minecraft.world.IBlockAccess;
-
-/** Unused remnant from LODMod. Disables a wall being drawn on the edges of chunks facing unloaded chunks. */
-@Mixin(RenderBlocks.class)
-abstract class MixinRenderBlocks {
-
- @Redirect(method = "renderBlockLiquid", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;shouldSideBeRendered(Lnet/minecraft/world/IBlockAccess;IIII)Z"))
- public boolean shouldSideBeRendered(Block block, IBlockAccess ba, int x, int y, int z, int w) {
- if(Neodymium.isActive()) {
- return Neodymium.renderer.shouldSideBeRendered(block, ba, x, y, z, w);
- } else {
- return block.shouldSideBeRendered(ba, x, y, z, w);
- }
- }
-
-}
diff --git a/src/main/java/makamys/neodymium/renderer/ChunkMesh.java b/src/main/java/makamys/neodymium/renderer/ChunkMesh.java
index c1616f2..47c082e 100644
--- a/src/main/java/makamys/neodymium/renderer/ChunkMesh.java
+++ b/src/main/java/makamys/neodymium/renderer/ChunkMesh.java
@@ -1,35 +1,24 @@
package makamys.neodymium.renderer;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.nio.FloatBuffer;
import java.nio.IntBuffer;
-import java.nio.ShortBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
-import java.util.stream.Collectors;
-
import org.lwjgl.BufferUtils;
import makamys.neodymium.Config;
-import makamys.neodymium.MixinConfigPlugin;
import makamys.neodymium.Neodymium;
import makamys.neodymium.ducks.IWorldRenderer;
import makamys.neodymium.util.BufferWriter;
+import makamys.neodymium.util.OFUtil;
import makamys.neodymium.util.RecyclingList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.Entity;
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.nbt.NBTTagByteArray;
import net.minecraft.tileentity.TileEntity;
/** A mesh for a 16x16x16 region of the world. */
@@ -39,9 +28,6 @@ public class ChunkMesh extends Mesh {
private int[] subMeshStart = new int[NORMAL_ORDER.length];
- // TODO move this somewhere else
- List<String> nameList = (List<String>) ((TextureMap)Minecraft.getMinecraft().getTextureManager().getTexture(TextureMap.locationBlocksTexture)).mapUploadedSprites.keySet().stream().collect(Collectors.toList());
-
public static int usedRAM = 0;
public static int instances = 0;
@@ -76,9 +62,6 @@ public class ChunkMesh extends Mesh {
instances++;
}
- private static int totalOriginalQuadCount = 0;
- private static int totalSimplifiedQuadCount = 0;
-
public static ChunkMesh fromTessellator(int pass, WorldRenderer wr, Tessellator t) {
if(t.vertexCount % 4 != 0) {
System.out.println("Error: Vertex count is not a multiple of 4");
@@ -89,7 +72,7 @@ public class ChunkMesh extends Mesh {
int yOffset = wr.posY;
int zOffset = wr.posZ;
- boolean fr = MixinConfigPlugin.isOptiFinePresent() && Neodymium.ofFastRender;
+ boolean fr = OFUtil.isOptiFinePresent() && Neodymium.ofFastRender;
int tessellatorXOffset = fr ? 0 : xOffset;
int tessellatorYOffset = fr ? 0 : yOffset;
int tessellatorZOffset = fr ? 0 : zOffset;
@@ -134,10 +117,6 @@ public class ChunkMesh extends Mesh {
int quadCount = countValidQuads(quads);
- totalOriginalQuadCount += quads.size();
- totalSimplifiedQuadCount += quadCount;
- //System.out.println("simplified quads " + totalOriginalQuadCount + " -> " + totalSimplifiedQuadCount + " (ratio: " + ((float)totalSimplifiedQuadCount / (float)totalOriginalQuadCount) + ") totalMergeCountByPlane: " + Arrays.toString(totalMergeCountByPlane));
-
if(quadCount > 0) {
return new ChunkMesh(
(int)(xOffset / 16), (int)(yOffset / 16), (int)(zOffset / 16),
@@ -248,69 +227,10 @@ public class ChunkMesh extends Mesh {
destroy();
}
- public void update() {
- }
-
- // Java is weird.
- public static short readShortAt(DataInputStream in, int offset) {
- try {
- in.reset();
- in.skip(offset);
- return in.readShort();
- } catch(IOException e) {
- return -1;
- }
- }
-
- public static short readShortAt(byte[] data, int offset) {
- return (short)(Byte.toUnsignedInt(data[offset]) << 8 | Byte.toUnsignedInt(data[offset + 1]));
- }
-
- public static int readIntAt(DataInputStream in, int offset) {
- try {
- in.reset();
- in.skip(offset);
- return in.readInt();
- } catch(IOException e) {
- return -1;
- }
- }
-
- public static int readIntAt(byte[] data, int offset) {
- return (int)(Byte.toUnsignedLong(data[offset]) << 24 | Byte.toUnsignedLong(data[offset + 1]) << 16 | Byte.toUnsignedLong(data[offset + 2]) << 8 | Byte.toUnsignedLong(data[offset + 3]));
- }
-
public int getStride() {
return MeshQuad.getStride();
}
- static void saveChunks(List<Integer> coords) {
- System.out.println("saving " + (coords.size() / 3) + " cchunks");
- for(int i = 0; i < coords.size(); i += 3) {
- if(i % 300 == 0) {
- System.out.println((i / 3) + " / " + (coords.size() / 3));
- }
- int theX = coords.get(i);
- int theY = coords.get(i + 1);
- int theZ = coords.get(i + 2);
-
- WorldRenderer wr = new WorldRenderer(Minecraft.getMinecraft().theWorld, new ArrayList<TileEntity>(), theX * 16, theY * 16, theZ * 16, 100000);
- /*
- if (this.occlusionEnabled)
- {
- this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].glOcclusionQuery = this.glOcclusionQueryBase.get(var3);
- }*/
-
- wr.isWaitingOnOcclusionQuery = false;
- wr.isVisible = true;
- wr.isInFrustum = true;
- wr.chunkIndex = 0;
- wr.markDirty();
- wr.updateRenderer(Minecraft.getMinecraft().thePlayer);
- }
- //Tessellator.endSave();
- }
-
static List<ChunkMesh> getChunkMesh(int theX, int theY, int theZ) {
WorldRenderer wr = new WorldRenderer(Minecraft.getMinecraft().theWorld, new ArrayList<TileEntity>(), theX * 16, theY * 16, theZ * 16, 100000);
diff --git a/src/main/java/makamys/neodymium/renderer/GPUMemoryManager.java b/src/main/java/makamys/neodymium/renderer/GPUMemoryManager.java
index 882b0c6..cb08c43 100644
--- a/src/main/java/makamys/neodymium/renderer/GPUMemoryManager.java
+++ b/src/main/java/makamys/neodymium/renderer/GPUMemoryManager.java
@@ -85,27 +85,6 @@ public class GPUMemoryManager {
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
- private int malloc(int size) {
- int nextBase = 0;
- if(!sentMeshes.isEmpty()) {
- if(nextMesh < sentMeshes.size() - 1) {
- Mesh next = sentMeshes.get(nextMesh);
- Mesh nextnext = sentMeshes.get(nextMesh + 1);
- if(nextnext.offset - next.getEnd() >= size) {
- return next.getEnd();
- }
- }
-
- nextBase = sentMeshes.get(sentMeshes.size() - 1).getEnd();
- }
-
- if(nextBase + size >= bufferSize) {
- return -1;
- } else {
- return nextBase;
- }
- }
-
private int end() {
return (sentMeshes.isEmpty() ? 0 : sentMeshes.get(sentMeshes.size() - 1).getEnd());
}
diff --git a/src/main/java/makamys/neodymium/renderer/MeshQuad.java b/src/main/java/makamys/neodymium/renderer/MeshQuad.java
index 1d2c196..71daf1a 100644
--- a/src/main/java/makamys/neodymium/renderer/MeshQuad.java
+++ b/src/main/java/makamys/neodymium/renderer/MeshQuad.java
@@ -66,21 +66,6 @@ public class MeshQuad {
private static Vector3f vectorB = new Vector3f();
private static Vector3f vectorC = new Vector3f();
- private int minPositive(int a, int b) {
- if(a == -1) {
- return b;
- } else {
- return a < b ? a : b;
- }
- }
- private int maxPositive(int a, int b) {
- if(a == -1) {
- return b;
- } else {
- return a > b ? a : b;
- }
- }
-
private void read(int[] rawBuffer, int offset, int offsetX, int offsetY, int offsetZ) {
for(int vi = 0; vi < 4; vi++) {
int i = offset + vi * 8;
@@ -146,10 +131,6 @@ public class MeshQuad {
mergeReference = null;
}
- public MeshQuad() {
-
- }
-
public void writeToBuffer(BufferWriter out) throws IOException {
for(int vertexI = 0; vertexI < 4; vertexI++) {
int vi = vertexI;
diff --git a/src/main/java/makamys/neodymium/renderer/NeoChunk.java b/src/main/java/makamys/neodymium/renderer/NeoChunk.java
index e7c3cab..b5e544b 100644
--- a/src/main/java/makamys/neodymium/renderer/NeoChunk.java
+++ b/src/main/java/makamys/neodymium/renderer/NeoChunk.java
@@ -2,10 +2,8 @@ package makamys.neodymium.renderer;
import java.util.List;
-import makamys.neodymium.Config;
import makamys.neodymium.Neodymium;
import net.minecraft.entity.Entity;
-import net.minecraft.world.chunk.Chunk;
/** A container for the meshes that compose a chunk (16x256x16 region). It keeps track of which meshes should be made visible and which ones should not. */
public class NeoChunk {
@@ -18,7 +16,6 @@ public class NeoChunk {
boolean discardedMesh;
NeoRegion region;
- SimpleChunkMesh[] simpleMeshes = new SimpleChunkMesh[2];
ChunkMesh[] chunkMeshes = new ChunkMesh[32];
public boolean[] isSectionVisible = new boolean[16];
@@ -30,25 +27,7 @@ public class NeoChunk {
this.z = z;
this.region = region;
}
- /*
- public LODChunk(NBTTagCompound nbt, List<String> spriteList) {
- this.x = nbt.getInteger("x");
- this.z = nbt.getInteger("z");
-
- loadChunkMeshesNBT(nbt.getCompoundTag("chunkMeshes"), spriteList);
- }
- private void loadChunkMeshesNBT(NBTTagCompound chunkMeshesCompound, List<String> spriteList) {
- for(Object o : chunkMeshesCompound.func_150296_c()) {
- String key = (String)o;
- int keyInt = Integer.parseInt(key);
-
- byte[] data = chunkMeshesCompound.getByteArray(key);
-
- chunkMeshes[keyInt] = new ChunkMesh(x, keyInt / 2, z, new ChunkMesh.Flags(true, true, true, false), data.length / (2 + 4 * (3 + 2 + 2 + 4)), data, spriteList, keyInt % 2);
- }
- }
- */
@Override
public String toString() {
return "LODChunk(" + x + ", " + z + ")";
@@ -64,9 +43,7 @@ public class NeoChunk {
if(chunkMeshes[cy * 2 + i] != null) {
if(newChunkMesh != null) {
// ??? why is this needed?
- if(newChunkMesh != null) {
- newChunkMesh.pass = i;
- }
+ newChunkMesh.pass = i;
}
renderer.removeMesh(chunkMeshes[cy * 2 + i]);
@@ -81,23 +58,6 @@ public class NeoChunk {
discardedMesh = false;
}
- // nice copypasta
- public void putSimpleMeshes(List<SimpleChunkMesh> newSimpleMeshes) {
- for(int i = 0; i < 2; i++) {
- SimpleChunkMesh newSimpleMesh = newSimpleMeshes.size() > i ? newSimpleMeshes.get(i) : null;
- if(simpleMeshes[i] != null) {
- if(newSimpleMesh != null) {
- newSimpleMesh.pass = i;
- }
-
- renderer.setMeshVisible(simpleMeshes[i], false);
- simpleMeshes[i].destroy();
- }
- simpleMeshes[i] = newSimpleMesh;
- }
- Neodymium.renderer