]> git.lizzy.rs Git - LightOverlay.git/commitdiff
1.16.2
authorshedaniel <daniel@shedaniel.me>
Tue, 11 Aug 2020 19:24:42 +0000 (03:24 +0800)
committershedaniel <daniel@shedaniel.me>
Tue, 11 Aug 2020 19:24:42 +0000 (03:24 +0800)
Signed-off-by: shedaniel <daniel@shedaniel.me>
build.gradle
fabric/build.gradle
fabric/src/main/java/me/shedaniel/lightoverlay/fabric/LOModMenuEntry.java
fabric/src/main/java/me/shedaniel/lightoverlay/fabric/LightOverlay.java
fabric/src/main/java/me/shedaniel/lightoverlay/fabric/mixin/MixinClientConnection.java
fabric/src/main/resources/lightoverlay.accesswidener
gradle.properties
settings.gradle

index 718020b88494f6584397ed0f24924b54e6a9dc24..6d70caeacade1917128c60b22abb154337700e08 100644 (file)
@@ -47,14 +47,14 @@ idea.project.settings {
             project = rootProject.project(":fabric")
             taskNames = Collections.singletonList("runServer")
         }
-        "Forge: Minecraft Client"(org.jetbrains.gradle.ext.Gradle) {
-            project = rootProject.project(":forge")
-            taskNames = Collections.singletonList("runClient")
-        }
-        "Forge: Minecraft Server"(org.jetbrains.gradle.ext.Gradle) {
-            project = rootProject.project(":forge")
-            taskNames = Collections.singletonList("runServer")
-        }
+//        "Forge: Minecraft Client"(org.jetbrains.gradle.ext.Gradle) {
+//            project = rootProject.project(":forge")
+//            taskNames = Collections.singletonList("runClient")
+//        }
+//        "Forge: Minecraft Server"(org.jetbrains.gradle.ext.Gradle) {
+//            project = rootProject.project(":forge")
+//            taskNames = Collections.singletonList("runServer")
+//        }
     }
 }
 
@@ -128,8 +128,9 @@ task buildMerged {
     }
 }
 
-buildMerged.mustRunAfter project(":fabric").tasks.getByName("build")
-buildMerged.mustRunAfter project(":forge").tasks.getByName("build")
+rootProject.subprojects.forEach {
+    buildMerged.mustRunAfter it.tasks.getByName("build")
+}
 
 static def compress(Path sourceDir, File zipFile) {
     try {
index c4e979dad728f2a3d99840cd7a2a56f77a709270..d85007da73b16f007f918b2db8ee956d3f083faa 100755 (executable)
@@ -1,5 +1,5 @@
 plugins {
-    id("fabric-loom") version "0.4-SNAPSHOT"
+    id("fabric-loom") version "0.5-SNAPSHOT"
 }
 
 minecraft {
@@ -27,7 +27,9 @@ dependencies {
     modCompile("me.shedaniel.cloth.api:cloth-client-events-v0:${rootProject.cloth_version}") {
         transitive = false
     }
-    modImplementation("me.shedaniel.cloth:config-2:${rootProject.cloth_config_version}")
+    modImplementation("me.shedaniel.cloth:config-2:${rootProject.cloth_config_version}") {
+        exclude(group: "net.fabricmc.fabric-api")
+    }
     modImplementation("io.github.prospector:modmenu:${rootProject.modmenu_version}") {
         transitive = false
     }
index 95cdcf870414e7bd60e6884daad08733b887e537..c7f4c852f9a3b7c82a40c8ba5bbf6b1570e7eb8f 100644 (file)
@@ -26,10 +26,10 @@ public class LOModMenuEntry implements ModMenuApi {
         
         ConfigEntryBuilder eb = builder.entryBuilder();
         ConfigCategory general = builder.getOrCreateCategory(new TranslatableText("config.lightoverlay.general"));
-        general.addEntry(eb.startTextDescription(Text.method_30163("§7" + I18n.translate("description.lightoverlay.caching"))).build());
+        general.addEntry(eb.startTextDescription(Text.of("§7" + I18n.translate("description.lightoverlay.caching"))).build());
         general.addEntry(eb.startBooleanToggle(new TranslatableText("config.lightoverlay.caching"), LightOverlay.caching).setDefaultValue(false).setSaveConsumer(bool -> LightOverlay.caching = bool).build());
-        general.addEntry(eb.startIntSlider(new TranslatableText("config.lightoverlay.reach"), LightOverlay.reach, 1, 64).setDefaultValue(12).setTextGetter(integer -> Text.method_30163("Reach: " + integer + " Blocks")).setSaveConsumer(integer -> LightOverlay.reach = integer).build());
-        IntegerSliderEntry crossLevel = eb.startIntSlider(new TranslatableText("config.lightoverlay.crossLevel"), LightOverlay.crossLevel, 0, 15).setDefaultValue(7).setTextGetter(integer -> Text.method_30163("Cross Level: " + integer)).setSaveConsumer(integer -> LightOverlay.crossLevel = integer).build();
+        general.addEntry(eb.startIntSlider(new TranslatableText("config.lightoverlay.reach"), LightOverlay.reach, 1, 64).setDefaultValue(12).setTextGetter(integer -> Text.of("Reach: " + integer + " Blocks")).setSaveConsumer(integer -> LightOverlay.reach = integer).build());
+        IntegerSliderEntry crossLevel = eb.startIntSlider(new TranslatableText("config.lightoverlay.crossLevel"), LightOverlay.crossLevel, 0, 15).setDefaultValue(7).setTextGetter(integer -> Text.of("Cross Level: " + integer)).setSaveConsumer(integer -> LightOverlay.crossLevel = integer).build();
         general.addEntry(crossLevel);
         general.addEntry(eb.startIntSlider(new TranslatableText("config.lightoverlay.secondaryLevel"), LightOverlay.secondaryLevel, -1, 15)
                 .setErrorSupplier(integer -> {
index d3ea3441d707062c1e9fecd3b3ff234bf924dc76..dc273c996caf119f9fb641be1c22cd97ed80ba5b 100644 (file)
@@ -4,6 +4,8 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.systems.RenderSystem;
+import it.unimi.dsi.fastutil.longs.Long2ReferenceMap;
+import it.unimi.dsi.fastutil.longs.Long2ReferenceOpenHashMap;
 import me.shedaniel.cloth.api.client.events.v0.ClothClientHooks;
 import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
@@ -33,7 +35,7 @@ import net.minecraft.util.shape.VoxelShape;
 import net.minecraft.world.BlockView;
 import net.minecraft.world.LightType;
 import net.minecraft.world.World;
-import net.minecraft.world.biome.Biome;
+import net.minecraft.world.biome.SpawnSettings;
 import net.minecraft.world.chunk.ChunkStatus;
 import net.minecraft.world.chunk.WorldChunk;
 import net.minecraft.world.chunk.light.ChunkLightingView;
@@ -65,7 +67,7 @@ public class LightOverlay implements ClientModInitializer {
     static boolean underwater = false;
     static float lineWidth = 1.0F;
     static int yellowColor = 0xFFFF00, redColor = 0xFF0000, secondaryColor = 0x0000FF;
-    static File configFile = new File(FabricLoader.getInstance().getConfigDirectory(), "lightoverlay.properties");
+    static File configFile = new File(FabricLoader.getInstance().getConfigDir().toFile(), "lightoverlay.properties");
     private static final KeyBinding ENABLE_OVERLAY = createKeyBinding(ENABLE_OVERLAY_KEYBIND, InputUtil.Type.KEYSYM, 296, KEYBIND_CATEGORY);
     private static boolean enabled = false;
     private static EntityType<Entity> testingEntityType;
@@ -76,7 +78,7 @@ public class LightOverlay implements ClientModInitializer {
         return thread;
     });
     private static final List<ChunkPos> POS = Lists.newCopyOnWriteArrayList();
-    private static final Map<ChunkPos, Map<Long, Object>> CHUNK_MAP = Maps.newConcurrentMap();
+    private static final Map<ChunkPos, Long2ReferenceMap<Object>> CHUNK_MAP = Maps.newConcurrentMap();
     private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
     private static long ticks = 0;
     
@@ -100,14 +102,14 @@ public class LightOverlay implements ClientModInitializer {
                         BlockPos.Mutable downPos = new BlockPos.Mutable();
                         Iterable<BlockPos> iterate = BlockPos.iterate(playerPos.getX() - reach, playerPos.getY() - reach, playerPos.getZ() - reach,
                                 playerPos.getX() + reach, playerPos.getY() + reach, playerPos.getZ() + reach);
-                        HashMap<Long, Object> map = Maps.newHashMap();
+                        Long2ReferenceMap<Object> map = new Long2ReferenceOpenHashMap<>();
                         CHUNK_MAP.put(new ChunkPos(0, 0), map);
                         for (BlockPos blockPos : iterate) {
                             downPos.set(blockPos.getX(), blockPos.getY() - 1, blockPos.getZ());
                             if (showNumber) {
                                 int level = getCrossLevel(blockPos, downPos, world, block, entityContext);
                                 if (level >= 0) {
-                                    map.put(blockPos.asLong(), level);
+                                    map.put(blockPos.asLong(), Integer.valueOf(level));
                                 }
                             } else {
                                 CrossType type = getCrossType(blockPos, downPos, world, block, sky, entityContext);
@@ -132,33 +134,34 @@ public class LightOverlay implements ClientModInitializer {
                                 }
                             }
                         }
-                        if (!POS.isEmpty()) {
-                            if (playerPos[0] == null) {
-                                playerPos[0] = player.getPos();
-                            }
-                            ChunkPos pos = POS.stream().min(Comparator.comparingDouble(value -> value.toBlockPos(8, 0, 8).getSquaredDistance(playerPos[0].x, 0, playerPos[0].z, false))).get();
-                            POS.remove(pos);
-                            EXECUTOR.submit(() -> {
-                                if (MathHelper.abs(pos.x - playerPosX) <= getChunkRange() && MathHelper.abs(pos.z - playerPosZ) <= getChunkRange()) {
-                                    calculateChunk(world.getChunkManager().getChunk(pos.x, pos.z, ChunkStatus.FULL, false), world, pos, entityContext);
-                                } else {
-                                    CHUNK_MAP.remove(pos);
+                        POS.removeIf(pos -> MathHelper.abs(pos.x - playerPosX) > getChunkRange() || MathHelper.abs(pos.z - playerPosZ) > getChunkRange());
+                        for (int k = 0; k < 2; k++) {
+                            if (!POS.isEmpty()) {
+                                if (playerPos[0] == null) {
+                                    playerPos[0] = player.getPos();
                                 }
-                            });
+                                ChunkPos pos = POS.stream().min(Comparator.comparingDouble(value -> {
+                                    int i = Math.abs(value.x - playerPosX);
+                                    int j = Math.abs(value.z - playerPosZ);
+                                    return i * i + j * j;
+                                })).get();
+                                POS.remove(pos);
+                                EXECUTOR.submit(() -> {
+                                    try {
+                                        calculateChunk(world.getChunkManager().getChunk(pos.x, pos.z, ChunkStatus.FULL, false), world, pos, entityContext);
+                                    } catch (Throwable throwable) {
+                                        LogManager.getLogger().throwing(throwable);
+                                    }
+                                });
+                            }
                         }
                         if (ticks % 50 == 0) {
-                            Iterator<Map.Entry<ChunkPos, Map<Long, Object>>> chunkMapIterator = CHUNK_MAP.entrySet().iterator();
-                            while (chunkMapIterator.hasNext()) {
-                                Map.Entry<ChunkPos, Map<Long, Object>> pos = chunkMapIterator.next();
-                                if (MathHelper.abs(pos.getKey().x - playerPosX) > getChunkRange() * 2 || MathHelper.abs(pos.getKey().z - playerPosZ) > getChunkRange() * 2) {
-                                    chunkMapIterator.remove();
-                                }
-                            }
+                            CHUNK_MAP.entrySet().removeIf(pos -> MathHelper.abs(pos.getKey().x - playerPosX) > getChunkRange() * 2 || MathHelper.abs(pos.getKey().z - playerPosZ) > getChunkRange() * 2);
                         }
                     }
                 }
-            } catch (Exception e) {
-                LogManager.getLogger().throwing(e);
+            } catch (Throwable throwable) {
+                LogManager.getLogger().throwing(throwable);
             }
         });
     }
@@ -182,8 +185,8 @@ public class LightOverlay implements ClientModInitializer {
     }
     
     private static void calculateChunk(WorldChunk chunk, World world, ChunkPos chunkPos, EntityContext entityContext) {
-        Map<Long, Object> map = Maps.newHashMap();
-        if (world != null) {
+        if (world != null && chunk != null) {
+            Long2ReferenceMap<Object> map = new Long2ReferenceOpenHashMap<>();
             ChunkLightingView block = world.getLightingProvider().get(LightType.BLOCK);
             ChunkLightingView sky = showNumber ? null : world.getLightingProvider().get(LightType.SKY);
             for (BlockPos pos : BlockPos.iterate(chunkPos.getStartX(), 0, chunkPos.getStartZ(), chunkPos.getEndX(), 256, chunkPos.getEndZ())) {
@@ -191,11 +194,11 @@ public class LightOverlay implements ClientModInitializer {
                 if (showNumber) {
                     int level = LightOverlay.getCrossLevel(pos, down, chunk, block, entityContext);
                     if (level >= 0) {
-                        map.put(pos.asLong(), level);
+                        map.put(pos.asLong(), Integer.valueOf(level));
                     }
                 } else {
-                    Biome biome = world.getBiomeAccess().getBiome(pos);
-                    if (biome.getMaxSpawnLimit() > 0 && !biome.getEntitySpawnList(EntityCategory.MONSTER).isEmpty()) {
+                    SpawnSettings spawnSettings = world.getBiomeAccess().getBiome(pos).getSpawnSettings();
+                    if (spawnSettings.getCreatureSpawnProbability() > 0 && !spawnSettings.getSpawnEntry(EntityCategory.MONSTER).isEmpty()) {
                         CrossType type = LightOverlay.getCrossType(pos, down, chunk, block, sky, entityContext);
                         if (type != CrossType.NONE) {
                             map.put(pos.asLong(), type);
@@ -203,8 +206,10 @@ public class LightOverlay implements ClientModInitializer {
                     }
                 }
             }
+            CHUNK_MAP.put(chunkPos, map);
+        } else {
+            CHUNK_MAP.remove(chunkPos);
         }
-        CHUNK_MAP.put(chunkPos, map);
     }
     
     public static CrossType getCrossType(BlockPos pos, BlockPos down, BlockView world, ChunkLightingView block, ChunkLightingView sky, EntityContext entityContext) {
@@ -432,13 +437,13 @@ public class LightOverlay implements ClientModInitializer {
                     RenderSystem.enableTexture();
                     RenderSystem.depthMask(true);
                     BlockPos.Mutable mutable = new BlockPos.Mutable();
-                    for (Map.Entry<ChunkPos, Map<Long, Object>> entry : CHUNK_MAP.entrySet()) {
+                    for (Map.Entry<ChunkPos, Long2ReferenceMap<Object>> entry : CHUNK_MAP.entrySet()) {
                         if (caching && (MathHelper.abs(entry.getKey().x - playerPosX) > getChunkRange() || MathHelper.abs(entry.getKey().z - playerPosZ) > getChunkRange())) {
                             continue;
                         }
-                        for (Map.Entry<Long, Object> objectEntry : entry.getValue().entrySet()) {
+                        for (Long2ReferenceMap.Entry<Object> objectEntry : entry.getValue().long2ReferenceEntrySet()) {
                             if (objectEntry.getValue() instanceof Integer) {
-                                mutable.set(BlockPos.unpackLongX(objectEntry.getKey()), BlockPos.unpackLongY(objectEntry.getKey()), BlockPos.unpackLongZ(objectEntry.getKey()));
+                                mutable.set(BlockPos.unpackLongX(objectEntry.getLongKey()), BlockPos.unpackLongY(objectEntry.getLongKey()), BlockPos.unpackLongZ(objectEntry.getLongKey()));
                                 if (mutable.isWithinDistance(playerPos, reach)) {
                                     BlockPos down = mutable.down();
                                     LightOverlay.renderLevel(CLIENT, camera, world, mutable, down, (Integer) objectEntry.getValue(), entityContext);
@@ -456,15 +461,14 @@ public class LightOverlay implements ClientModInitializer {
                     GL11.glLineWidth(lineWidth);
                     GL11.glBegin(GL11.GL_LINES);
                     BlockPos.Mutable mutable = new BlockPos.Mutable();
-                    for (Map.Entry<ChunkPos, Map<Long, Object>> entry : CHUNK_MAP.entrySet()) {
+                    for (Map.Entry<ChunkPos, Long2ReferenceMap<Object>> entry : CHUNK_MAP.entrySet()) {
                         if (caching && (MathHelper.abs(entry.getKey().x - playerPosX) > getChunkRange() || MathHelper.abs(entry.getKey().z - playerPosZ) > getChunkRange())) {
                             continue;
                         }
-                        for (Map.Entry<Long, Object> objectEntry : entry.getValue().entrySet()) {
+                        for (Long2ReferenceMap.Entry<Object> objectEntry : entry.getValue().long2ReferenceEntrySet()) {
                             if (objectEntry.getValue() instanceof CrossType) {
-                                mutable.set(BlockPos.unpackLongX(objectEntry.getKey()), BlockPos.unpackLongY(objectEntry.getKey()), BlockPos.unpackLongZ(objectEntry.getKey()));
+                                mutable.set(BlockPos.unpackLongX(objectEntry.getLongKey()), BlockPos.unpackLongY(objectEntry.getLongKey()), BlockPos.unpackLongZ(objectEntry.getLongKey()));
                                 if (mutable.isWithinDistance(playerPos, reach)) {
-                                    BlockPos down = mutable.down();
                                     int color = objectEntry.getValue() == CrossType.RED ? redColor : objectEntry.getValue() == CrossType.YELLOW ? yellowColor : secondaryColor;
                                     LightOverlay.renderCross(camera, world, mutable, color, entityContext);
                                 }
index fad16dc4ba88014670753c925f24a7176b28692e..4fed3aa0fdc52d6f7a8e339356ec5abde25a49d2 100644 (file)
@@ -23,7 +23,7 @@ public class MixinClientConnection {
         } else if (packet instanceof ChunkDataS2CPacket) {
             LightOverlay.queueChunkAndNear(new ChunkPos(((ChunkDataS2CPacket) packet).getX(), ((ChunkDataS2CPacket) packet).getZ()));
         } else if (packet instanceof ChunkDeltaUpdateS2CPacket) {
-            LightOverlay.queueChunkAndNear(new ChunkPos(((ChunkDeltaUpdateS2CPacket) packet).chunkPos.x, ((ChunkDeltaUpdateS2CPacket) packet).chunkPos.z));
+            LightOverlay.queueChunkAndNear(new ChunkPos(((ChunkDeltaUpdateS2CPacket) packet).sectionPos.getSectionX(), ((ChunkDeltaUpdateS2CPacket) packet).sectionPos.getSectionZ()));
         } else if (packet instanceof LightUpdateS2CPacket) {
             LightOverlay.queueChunk(new ChunkPos(((LightUpdateS2CPacket) packet).getChunkX(), ((LightUpdateS2CPacket) packet).getChunkZ()));
         }
index 5270ef9c36e31a9eec509e0a9891af288c064d79..860a467cf2e7f6a909c7fa08df722ca5a20bd33b 100644 (file)
@@ -1,2 +1,2 @@
 accessWidener  v1  named
-accessible  field  net/minecraft/network/packet/s2c/play/ChunkDeltaUpdateS2CPacket chunkPos Lnet/minecraft/util/math/ChunkPos;
\ No newline at end of file
+accessible  field  net/minecraft/network/packet/s2c/play/ChunkDeltaUpdateS2CPacket sectionPos Lnet/minecraft/util/math/ChunkSectionPos;
\ No newline at end of file
index 30329941e45de7dc13fd419120939003fd2abf00..d05f45ac83733de440b271807132bae291bbb728 100755 (executable)
@@ -1,16 +1,16 @@
 org.gradle.jvmargs=-Xmx3G
 org.gradle.daemon=false
 
-mod_version=5.4.1
+mod_version=5.5.0
 
 # fabric
-fabric_minecraft_version=1.16.1
-yarn_build=1.16.1+build.4+legacy.20w09a+build.8
-fabric_loader_version=0.8.8+build.202
-fabric_api_version=0.14.0+build.371-1.16
-cloth_version=1.0.4
-cloth_config_version=4.5.5
-modmenu_version=1.12.2+build.17
+fabric_minecraft_version=1.16.2
+yarn_build=1.16.2+build.1+legacy.20w09a+build.8
+fabric_loader_version=0.9.1+build.205
+fabric_api_version=0.17.2+build.396-1.16
+cloth_version=1.0.8
+cloth_config_version=4.7.0-unstable
+modmenu_version=1.14.6+build.31
 
 # forge
 mcp_snapshot=20200514-1.16
index baec76af7dc178ca51b90dc33cf034739cc9ca8d..24884136a9e28e7a76aa3a64d116588eccd34ba8 100644 (file)
@@ -12,4 +12,4 @@ pluginManagement {
 rootProject.name="light-overlay"
 
 include("fabric")
-include("forge")
+//include("forge")