diff --git a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/AbstractLodNodeTemplate.java b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/AbstractLodNodeTemplate.java index adf2f61f5..49f564e53 100644 --- a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/AbstractLodNodeTemplate.java +++ b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/AbstractLodNodeTemplate.java @@ -17,8 +17,11 @@ */ package com.seibel.lod.builders.lodNodeTemplates; +import java.awt.Color; + import com.seibel.lod.objects.LodQuadTreeDimension; import com.seibel.lod.objects.LodQuadTreeNode; +import com.seibel.lod.util.LodUtil; import net.minecraft.client.renderer.BufferBuilder; @@ -32,9 +35,9 @@ import net.minecraft.client.renderer.BufferBuilder; public abstract class AbstractLodNodeTemplate { public abstract void addLodToBuffer(BufferBuilder buffer, - LodQuadTreeDimension lodDim, LodQuadTreeNode lod, - double xOffset, double yOffset, double zOffset, - boolean debugging); + LodQuadTreeDimension lodDim, LodQuadTreeNode lod, + double xOffset, double yOffset, double zOffset, + boolean debugging); /** add the given position and color to the buffer */ protected void addPosAndColor(BufferBuilder buffer, @@ -46,8 +49,20 @@ public abstract class AbstractLodNodeTemplate /** Returns in bytes how much buffer memory is required * for one LOD object */ - public abstract int getBufferMemoryForSingleLod(int level); + public abstract int getBufferMemoryForSingleNode(int level); + /** + * Edit the given color as a HSV (Hue Saturation Value) color. + */ + protected Color applySaturationAndBrightnessMultipliers(Color color, float saturationMultiplier, float brightnessMultiplier) + { + float[] hsv = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); + return Color.getHSBColor( + hsv[0], // hue + LodUtil.clamp(0.0f, hsv[1] * saturationMultiplier, 1.0f), + LodUtil.clamp(0.0f, hsv[2] * brightnessMultiplier, 1.0f)); + } + } diff --git a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/CubicLodNodeTemplate.java b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/CubicLodNodeTemplate.java index 19e2abcaf..b82324582 100644 --- a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/CubicLodNodeTemplate.java +++ b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/CubicLodNodeTemplate.java @@ -22,7 +22,6 @@ import com.seibel.lod.enums.ShadingMode; import com.seibel.lod.handlers.LodConfig; import com.seibel.lod.objects.LodQuadTreeDimension; import com.seibel.lod.objects.LodQuadTreeNode; -import com.seibel.lod.util.LodUtil; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.util.math.AxisAlignedBB; @@ -107,7 +106,7 @@ public class CubicLodNodeTemplate extends AbstractLodNodeTemplate northSouthColor = new Color(Math.max(0, c.getRed() - northSouthDarkenAmount), Math.max(0, c.getGreen() - northSouthDarkenAmount), Math.max(0, c.getBlue() - northSouthDarkenAmount), c.getAlpha()); eastWestColor = new Color(Math.max(0, c.getRed() - eastWestDarkenAmount), Math.max(0, c.getGreen() - eastWestDarkenAmount), Math.max(0, c.getBlue() - eastWestDarkenAmount), c.getAlpha()); bottomColor = new Color(Math.max(0, c.getRed() - bottomDarkenAmount), Math.max(0, c.getGreen() - bottomDarkenAmount), Math.max(0, c.getBlue() - bottomDarkenAmount), c.getAlpha()); - } + } // apply the user specified saturation and brightness @@ -153,29 +152,14 @@ public class CubicLodNodeTemplate extends AbstractLodNodeTemplate addPosAndColor(buffer, bb.maxX, bb.minY, bb.maxZ, eastWestColor.getRed(), eastWestColor.getGreen(), eastWestColor.getBlue(), eastWestColor.getAlpha()); addPosAndColor(buffer, bb.maxX, bb.minY, bb.minZ, eastWestColor.getRed(), eastWestColor.getGreen(), eastWestColor.getBlue(), eastWestColor.getAlpha()); } - - - /** - * Edit the given color as a HSV (Hue Saturation Value) color. - */ - private Color applySaturationAndBrightnessMultipliers(Color color, float saturationMultiplier, float brightnessMultiplier) - { - float[] hsv = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); - return Color.getHSBColor( - hsv[0], // hue - LodUtil.clamp(0.0f, hsv[1] * saturationMultiplier, 1.0f), - LodUtil.clamp(0.0f, hsv[2] * brightnessMultiplier, 1.0f)); - } - - + + + @Override - public int getBufferMemoryForSingleLod(int detailLevel) // TODO maybe multiply by how many would be per chunk? + public int getBufferMemoryForSingleNode(int detailLevel) { // (sidesOnACube * pointsInASquare * (positionPoints + colorPoints))) * howManyPointsPerLodChunk return (6 * 4 * (3 + 4)); } - - - - + } diff --git a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/DynamicLodNodeTemplate.java b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/DynamicLodNodeTemplate.java index 3ea42d1b1..8b179fd21 100644 --- a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/DynamicLodNodeTemplate.java +++ b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/DynamicLodNodeTemplate.java @@ -43,7 +43,7 @@ public class DynamicLodNodeTemplate extends AbstractLodNodeTemplate } @Override - public int getBufferMemoryForSingleLod(int detailLevel) + public int getBufferMemoryForSingleNode(int detailLevel) { // TODO Auto-generated method stub return 0; diff --git a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/TriangularLodNodeTemplate.java b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/TriangularLodNodeTemplate.java index 5c4562d31..a03771e6c 100644 --- a/src/main/java/com/seibel/lod/builders/lodNodeTemplates/TriangularLodNodeTemplate.java +++ b/src/main/java/com/seibel/lod/builders/lodNodeTemplates/TriangularLodNodeTemplate.java @@ -41,7 +41,7 @@ public class TriangularLodNodeTemplate extends AbstractLodNodeTemplate } @Override - public int getBufferMemoryForSingleLod(int detailLevel) + public int getBufferMemoryForSingleNode(int detailLevel) { // TODO Auto-generated method stub return 0; diff --git a/src/main/java/com/seibel/lod/builders/lodTemplates/CubicLodTemplate.java b/src/main/java/com/seibel/lod/builders/lodTemplates/CubicLodTemplate.java index 2040a29ac..9d8631b0a 100644 --- a/src/main/java/com/seibel/lod/builders/lodTemplates/CubicLodTemplate.java +++ b/src/main/java/com/seibel/lod/builders/lodTemplates/CubicLodTemplate.java @@ -33,7 +33,7 @@ import net.minecraft.util.math.AxisAlignedBB; * Builds LODs as rectangular prisms. * * @author James Seibel - * @version 07-25-2021 + * @version 8-8-2021 */ public class CubicLodTemplate extends AbstractLodTemplate { diff --git a/src/main/java/com/seibel/lod/enums/LodTemplate.java b/src/main/java/com/seibel/lod/enums/LodTemplate.java index 790beecad..397807028 100644 --- a/src/main/java/com/seibel/lod/enums/LodTemplate.java +++ b/src/main/java/com/seibel/lod/enums/LodTemplate.java @@ -56,6 +56,6 @@ public enum LodTemplate public int getBufferMemoryForSingleLod(int detailLevel) { - return template.getBufferMemoryForSingleLod(detailLevel); + return template.getBufferMemoryForSingleNode(detailLevel); } } diff --git a/src/main/java/com/seibel/lod/objects/LodQuadTreeNode.java b/src/main/java/com/seibel/lod/objects/LodQuadTreeNode.java index b2764b8af..c3457229a 100644 --- a/src/main/java/com/seibel/lod/objects/LodQuadTreeNode.java +++ b/src/main/java/com/seibel/lod/objects/LodQuadTreeNode.java @@ -222,6 +222,7 @@ public class LodQuadTreeNode throw new IllegalArgumentException("LodQuadTreeNode constructor givin an invalid string. The data given had " + count + " delimiters when it should have had " + DATA_DELIMITER_COUNT + "."); + // start reading the data string int index = 0; int lastIndex = 0; diff --git a/src/main/java/com/seibel/lod/util/LodUtil.java b/src/main/java/com/seibel/lod/util/LodUtil.java index 21d4a1acb..49dabae19 100644 --- a/src/main/java/com/seibel/lod/util/LodUtil.java +++ b/src/main/java/com/seibel/lod/util/LodUtil.java @@ -138,39 +138,34 @@ public class LodUtil - public static String getCurrentDimensionID() + /** + * If on single player this will return the name of the user's + * world, if in multiplayer it will return the server name, IP, + * and game version. + */ + public static String getWorldID(IWorld world) { - - Minecraft mc = Minecraft.getInstance(); - if(mc.hasSingleplayerServer()) { - // this will return the world save location - // and the dimension folder + // chop off the dimension ID as it is not needed/wanted + String dimId = getDimensionIDFromWorld(world); - if(mc.level == null) - return ""; - - ServerWorld serverWorld = LodUtil.getServerWorldFromDimension(mc.level.dimensionType()); - if(serverWorld == null) - return ""; - - ServerChunkProvider provider = serverWorld.getChunkSource(); - if(provider == null) - return ""; - - return provider.dataStorage.dataFolder.toString(); + // get the world name + int saveIndex = dimId.indexOf("saves") + 1 + "saves".length(); + int slashIndex = dimId.indexOf(File.separatorChar, saveIndex); + dimId = dimId.substring(saveIndex, slashIndex); + return dimId; } else { ServerData server = mc.getCurrentServer(); return server.name + ", IP " + server.ip + ", GameVersion " + - server.version.getString() + File.separatorChar - + "dim_" + mc.level.dimensionType().effectsLocation().getPath() + File.separatorChar; + server.version.getString(); } } - + + /** * If on single player this will return the name of the user's @@ -209,33 +204,6 @@ public class LodUtil } } - /** - * If on single player this will return the name of the user's - * world, if in multiplayer it will return the server name - * and game version. - */ - public static String getWorldID(IWorld world) - { - if(mc.hasSingleplayerServer()) - { - // chop off the dimension ID as it is not needed/wanted - String dimId = getDimensionIDFromWorld(world); - - // get the world name - int saveIndex = dimId.indexOf("saves") + 1 + "saves".length(); - int slashIndex = dimId.indexOf(File.separatorChar, saveIndex); - dimId = dimId.substring(saveIndex, slashIndex); - return dimId; - } - else - { - ServerData server = mc.getCurrentServer(); - return server.name + ", IP " + - server.ip + ", GameVersion " + - server.version.getString(); - } - } - /**