From 86e4ab7e83dc466d7a7a0ed87996f5679ecbf0b5 Mon Sep 17 00:00:00 2001 From: Morippi Date: Wed, 7 Jul 2021 20:22:05 +0200 Subject: [PATCH] Map works correctly --- build.gradle | 3 + .../lod/objects/quadTree/QuadTreeImage.java | 95 ++- .../com/seibel/lod/util/BiomeColorsUtils.java | 581 ++++++++++++++++++ 3 files changed, 626 insertions(+), 53 deletions(-) create mode 100644 src/main/java/com/seibel/lod/util/BiomeColorsUtils.java diff --git a/build.gradle b/build.gradle index c253ceb27..36e41725f 100644 --- a/build.gradle +++ b/build.gradle @@ -146,6 +146,9 @@ dependencies { compile('com.github.KaptainWutax:NoiseUtils:1.0.0') { transitive = false } + compile('com.github.KaptainWutax:MathUtils:-SNAPSHOT') { + transitive = false + } compile('com.github.KaptainWutax:TerrainUtils:1.0.0') { transitive = false } diff --git a/src/main/java/com/seibel/lod/objects/quadTree/QuadTreeImage.java b/src/main/java/com/seibel/lod/objects/quadTree/QuadTreeImage.java index 0c1785854..1915834d1 100644 --- a/src/main/java/com/seibel/lod/objects/quadTree/QuadTreeImage.java +++ b/src/main/java/com/seibel/lod/objects/quadTree/QuadTreeImage.java @@ -1,5 +1,8 @@ package com.seibel.lod.objects.quadTree; - +import com.seibel.lod.util.BiomeColorsUtils; +import kaptainwutax.biomeutils.biome.Biome; +import kaptainwutax.biomeutils.source.OverworldBiomeSource; +import kaptainwutax.mcutils.version.MCVersion; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; @@ -65,44 +68,42 @@ public class QuadTreeImage extends JPanel { private static void createAndShowGui( ) { LodQuadTree lodQuadTree = new LodQuadTree(0,0); + OverworldBiomeSource biomeSource = new OverworldBiomeSource(MCVersion.v1_16_5, 0); + for(int i = 0; i<9; i++){ + for(int j = 0; j<8; j++) { + List> levelToGenerate = lodQuadTree.getLevelToGenerate(150, 260, (byte) (9-i), (int) 50 * (9 - i), 0); + boolean bw = true; + //System.out.println(levelToGenerate); + for (AbstractMap.SimpleEntry levelDist : levelToGenerate) { + LodQuadTree level = levelDist.getKey(); + Color color; + int startX = level.getLodNodeData().startX; + int startZ = level.getLodNodeData().startZ; + int endX = level.getLodNodeData().endX; + int endZ = level.getLodNodeData().endZ; + int width = level.getLodNodeData().width; + byte otherLevel = LodNodeData.BLOCK_LEVEL; + int otherWidth = LodNodeData.BLOCK_WIDTH; + int posX = 2 * startX / otherWidth; + int posZ = 2 * startZ / otherWidth; + color = BiomeColorsUtils.getColorFromIdCB(biomeSource.getBiome(posZ,0,posX).getId()); + lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color, true), true); - for(int i = 0; i<6; i++){ - List> levelToGenerate= lodQuadTree.getLevelToGenerate(0,0,(byte) (7),350,0); - boolean bw= true; - System.out.println(levelToGenerate); - for(AbstractMap.SimpleEntry levelDist : levelToGenerate){ - LodQuadTree level = levelDist.getKey(); - Color color ; - if(bw){ - color = Color.red; - bw = false; - }else{ - color = Color.blue; - bw = true; + posX = 2 * endX / otherWidth; + posZ = 2 * startZ / otherWidth; + color = BiomeColorsUtils.getColorFromIdCB(biomeSource.getBiome(posZ,0,posX).getId()); + lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color, true), true); + + posX = 2 * startX / otherWidth; + posZ = 2 * endZ / otherWidth; + color = BiomeColorsUtils.getColorFromIdCB(biomeSource.getBiome(posZ,0,posX).getId()); + lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color, true), true); + + posX = 2 * endX / otherWidth; + posZ = 2 * endZ / otherWidth; + color = BiomeColorsUtils.getColorFromIdCB(biomeSource.getBiome(posZ,0,posX).getId()); + lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color, true), true); } - - int startX = level.getLodNodeData().startX; - int startZ = level.getLodNodeData().startZ; - int endX = level.getLodNodeData().endX; - int endZ = level.getLodNodeData().endZ; - int width = level.getLodNodeData().width; - byte otherLevel = LodNodeData.BLOCK_LEVEL; - int otherWidth = LodNodeData.BLOCK_WIDTH; - int posZ = 2*startX/otherWidth; - int posX = 2*startZ/otherWidth; - lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color,true),true); - - posZ = 2*endX/otherWidth; - posX = 2*startZ/otherWidth; - lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color,true),true); - - posZ = 2*startX/otherWidth; - posX = 2*endZ/otherWidth; - lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color,true),true); - - posZ = 2*endX/otherWidth; - posX = 2*endZ/otherWidth; - lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color,true),true); } } System.out.println(lodQuadTree.getNodeList(false,false,false)); @@ -124,21 +125,9 @@ public class QuadTreeImage extends JPanel { frame.setLocationByPlatform(true); frame.setVisible(true); - int timerDelay = 1; - new Timer(timerDelay, new ActionListener() { - private int drawCount = 0; - - @Override - public void actionPerformed(ActionEvent e) { - if (drawCount >= myDrawables.size()) { - drawCount = 0; - quadTreeImage.clearAll(); - } else { - quadTreeImage.addMyDrawable(myDrawables.get(drawCount)); - drawCount++; - } - } - }).start(); + for(int i=0; i