diff --git a/src/main/java/dan200/computercraft/ComputerCraft.java b/src/main/java/dan200/computercraft/ComputerCraft.java index d712dc914..fe522ed8a 100644 --- a/src/main/java/dan200/computercraft/ComputerCraft.java +++ b/src/main/java/dan200/computercraft/ComputerCraft.java @@ -82,6 +82,7 @@ public final class ComputerCraft public static int modemHighAltitudeRangeDuringStorm = 384; public static int maxNotesPerTick = 8; public static MonitorRenderer monitorRenderer = MonitorRenderer.BEST; + public static double monitorDistanceSq = 4096; public static long monitorBandwidth = 1_000_000; public static boolean turtlesNeedFuel = true; diff --git a/src/main/java/dan200/computercraft/shared/Config.java b/src/main/java/dan200/computercraft/shared/Config.java index 812ef4c9c..f93bc5a0a 100644 --- a/src/main/java/dan200/computercraft/shared/Config.java +++ b/src/main/java/dan200/computercraft/shared/Config.java @@ -85,6 +85,7 @@ public final class Config private static final ConfigValue genericPeripheral; private static final ConfigValue monitorRenderer; + private static final ConfigValue monitorDistance; private static final ForgeConfigSpec serverSpec; private static final ForgeConfigSpec clientSpec; @@ -311,6 +312,10 @@ private Config() {} .comment( "The renderer to use for monitors. Generally this should be kept at \"best\" - if " + "monitors have performance issues, you may wish to experiment with alternative renderers." ) .defineEnum( "monitor_renderer", MonitorRenderer.BEST ); + monitorDistance = clientBuilder + .comment( "The maximum distance monitors will render at. This defaults to the standard tile entity limit, " + + "but may be extended if you wish to build larger monitors." ) + .defineInRange( "monitor_distance", 64, 16, 1024 ); clientSpec = clientBuilder.build(); } @@ -379,6 +384,7 @@ public static void sync() // Client ComputerCraft.monitorRenderer = monitorRenderer.get(); + ComputerCraft.monitorDistanceSq = monitorDistance.get() * monitorDistance.get(); } @SubscribeEvent diff --git a/src/main/java/dan200/computercraft/shared/peripheral/monitor/TileMonitor.java b/src/main/java/dan200/computercraft/shared/peripheral/monitor/TileMonitor.java index 129f5f783..e9ba5e304 100644 --- a/src/main/java/dan200/computercraft/shared/peripheral/monitor/TileMonitor.java +++ b/src/main/java/dan200/computercraft/shared/peripheral/monitor/TileMonitor.java @@ -688,4 +688,10 @@ public AxisAlignedBB getRenderBoundingBox() return new AxisAlignedBB( pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1 ); } } + + @Override + public double getMaxRenderDistanceSquared() + { + return ComputerCraft.monitorDistanceSq; + } }