Skip to content

Commit

Permalink
Merge pull request #495 from mircokroon/1.19-ext-render-dist
Browse files Browse the repository at this point in the history
Auth issues, render distance
  • Loading branch information
mircokroon authored Mar 14, 2023
2 parents 7d86fa8 + 11b184f commit 90ad0c9
Show file tree
Hide file tree
Showing 56 changed files with 932 additions and 498 deletions.
36 changes: 11 additions & 25 deletions src/main/java/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import packets.builder.PacketBuilder;
import proxy.ConnectionDetails;
import proxy.ConnectionManager;
import proxy.PacketInjector;
import proxy.auth.AuthDetails;
import proxy.auth.AuthenticationMethod;
import proxy.auth.MicrosoftAuthHandler;
Expand All @@ -35,7 +36,7 @@ public class Config {
private static final int DEFAULT_VERSION = 340;
private static Path configPath;

private static Consumer<PacketBuilder> injector;
private static PacketInjector injector;
private static Config instance;

// fields marked transient so they are not written to JSON file
Expand Down Expand Up @@ -327,11 +328,11 @@ private boolean writeChunks() {
/**
* Packet injector allows new packets to be sent to the client.
*/
public static void registerPacketInjector(Consumer<PacketBuilder> injector) {
public static void registerPacketInjector(PacketInjector injector) {
Config.injector = injector;
}

public static Consumer<PacketBuilder> getPacketInjector() {
public static PacketInjector getPacketInjector() {
return injector;
}

Expand Down Expand Up @@ -365,10 +366,6 @@ public static Consumer<PacketBuilder> getPacketInjector() {
usage = "When set, send downloaded chunks to client to extend render distance to given amount.")
public int extendedRenderDistance = 0;

@Option(name = "--measure-render-distance", depends = "--extended-render-distance",
usage = "When set, ignores the server's render distance value and measure it by looking at loaded chunks.")
public boolean measureRenderDistance = false;

@Option(name = "--seed",
usage = "Numeric level seed for output world.")
public long levelSeed = 0;
Expand All @@ -385,10 +382,6 @@ public static Consumer<PacketBuilder> getPacketInjector() {
usage = "Offsets output world. Given center Z coordinate will be put at world origin (0, 0). Rounded to multiples of 512 blocks.")
public int centerZ = 0;

@Option(name = "--overview-zoom", aliases = "-z",
usage = "Render distance (in chunks) of the overview map. Can also be changed by scrolling on GUI.")
public int zoomLevel = 75;

@Option(name = "--render-players",
usage = "Show other players in the overview map.")
public boolean renderOtherPlayers = false;
Expand Down Expand Up @@ -441,18 +434,18 @@ public static Consumer<PacketBuilder> getPacketInjector() {
usage = "Disable various info messages (e.g. chest saving).")
public boolean disableInfoMessages = false;

// not really important enough to have an option in the GUI
@Option(name = "--draw-extended-chunks",
usage = "Draw extended chunks to map")
public boolean drawExtendedChunks = false;

// not really important enough to have an option for, can change it in config file
public boolean smoothZooming = true;

// getters
public static int getExtendedRenderDistance() {
return instance.extendedRenderDistance;
}

public static boolean doMeasureRenderDistance() {
return instance.measureRenderDistance;
}

public static long getLevelSeed() {
return instance.levelSeed;
}
Expand All @@ -461,10 +454,6 @@ public static String getWorldOutputDir() {
return instance.worldOutputDir;
}

public static int getZoomLevel() {
return instance.zoomLevel;
}

public static boolean isInDevMode() {
return instance.devMode;
}
Expand Down Expand Up @@ -506,6 +495,8 @@ public static boolean handleBlockChanges() {

public static boolean sendInfoMessages() { return !instance.disableInfoMessages; }

public static boolean drawExtendedChunks() { return instance.drawExtendedChunks; }

public static boolean smoothZooming() {
return instance.smoothZooming;
}
Expand All @@ -514,11 +505,6 @@ public static boolean markOldChunks() {
return instance.markOldChunks;
}

// setters
public static void setZoomLevel(int val) {
instance.zoomLevel = val;
}

public static MicrosoftAuthHandler getMicrosoftAuth() {
return instance.microsoftAuth;
}
Expand Down
49 changes: 49 additions & 0 deletions src/main/java/game/data/CircleGenerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package game.data;

import game.data.coordinates.Coordinate2D;
import java.util.ArrayList;
import java.util.List;

/**
* Generate lists of coordinates for chunks per radius distance.
*/
public class CircleGenerator {
private final List<List<Coordinate2D>> circles = new ArrayList<>();

public void computeUpToRadius(int radius) {
for (int i = 0; i < radius + 1; i++) {
circles.add(new ArrayList<>());
}

int grid = radius * 2 + 1;
for (int x = 0; x < grid; x++) {
for (int z = 0; z < grid; z++) {
int centerX = x - radius;
int centerZ = z - radius;

int dist = distance(centerX, centerZ);

if (centerX == 0 || centerZ == 0) {
dist += 1;
}

// skip small radius
if (dist > radius || dist < 3) {
continue;
}

circles.get(dist).add(new Coordinate2D(centerX, centerZ));
}
}
}

private int distance(int x, int z) {
double dist = Math.sqrt(x * x + z * z);

return (int) Math.ceil(dist);
}

public List<List<Coordinate2D>> getResult() {
return circles;
}
}
Loading

0 comments on commit 90ad0c9

Please sign in to comment.