From 3663b9f957c20bdb465913ab7abd3cb22c536791 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Thu, 3 Sep 2020 00:09:31 -0400 Subject: [PATCH] Fixes --- .../iris/gen/atomics/AtomicWorldData.java | 4 ++-- .../com/volmit/iris/object/IrisEntity.java | 10 --------- .../com/volmit/iris/object/IrisObject.java | 4 ++-- .../volmit/iris/object/IrisPotionEffect.java | 1 + src/main/java/com/volmit/iris/util/B.java | 21 +++++++++++++++++++ .../java/com/volmit/iris/util/IrisLock.java | 6 +++--- .../java/com/volmit/iris/util/PregenJob.java | 14 +++++++++++-- 7 files changed, 41 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/volmit/iris/gen/atomics/AtomicWorldData.java b/src/main/java/com/volmit/iris/gen/atomics/AtomicWorldData.java index dcc78450d..df9030c07 100644 --- a/src/main/java/com/volmit/iris/gen/atomics/AtomicWorldData.java +++ b/src/main/java/com/volmit/iris/gen/atomics/AtomicWorldData.java @@ -278,7 +278,7 @@ public class AtomicWorldData break; } - if(M.ms() - lastRegion.get(i) > 60000) + if(M.ms() - lastRegion.get(i) > 30000) { unloadRegions.add(i); m++; @@ -311,7 +311,7 @@ public class AtomicWorldData break; } - if(M.ms() - lastChunk.get(i) > 60000) + if(M.ms() - lastChunk.get(i) > 30000) { m++; unloadChunks.add(i); diff --git a/src/main/java/com/volmit/iris/object/IrisEntity.java b/src/main/java/com/volmit/iris/object/IrisEntity.java index facd758d8..99954de0c 100644 --- a/src/main/java/com/volmit/iris/object/IrisEntity.java +++ b/src/main/java/com/volmit/iris/object/IrisEntity.java @@ -118,11 +118,6 @@ public class IrisEntity extends IrisRegistrant @Desc("Loot tables for drops") private IrisLootReference loot = new IrisLootReference(); - @DontObfuscate - @Desc("Potion effects to add to this entity") - @ArrayType(min = 1, type = IrisPotionEffect.class) - private KList potionEffects = new KList<>(); - @DontObfuscate @Desc("If specified, this entity will be leashed by this entity. I.e. THIS ENTITY Leashed by SPECIFIED. This has no effect on EnderDragons, Withers, Players, or Bats.Non-living entities excluding leashes will not persist as leashholders.") private IrisEntity leashHolder = null; @@ -218,11 +213,6 @@ public class IrisEntity extends IrisRegistrant l.setRemoveWhenFarAway(isRemovable()); - for(IrisPotionEffect i : getPotionEffects()) - { - i.apply(l); - } - if(getHelmet() != null && rng.i(1, getHelmet().getRarity()) == 1) { l.getEquipment().setHelmet(getHelmet().get(gen.isDev(), rng)); diff --git a/src/main/java/com/volmit/iris/object/IrisObject.java b/src/main/java/com/volmit/iris/object/IrisObject.java index 44be8a5d9..df0c0cb0f 100644 --- a/src/main/java/com/volmit/iris/object/IrisObject.java +++ b/src/main/java/com/volmit/iris/object/IrisObject.java @@ -404,7 +404,7 @@ public class IrisObject extends IrisRegistrant listener.accept(new BlockPosition(xx, yy, zz)); } - if(!data.getMaterial().equals(Material.AIR)) + if(!data.getMaterial().equals(Material.AIR) && !data.getMaterial().equals(Material.CAVE_AIR)) { placer.set(xx, yy, zz, data); } @@ -447,7 +447,7 @@ public class IrisObject extends IrisRegistrant { for(int j = yf; j > yg - config.getOverStilt(); j--) { - if(!d.getMaterial().equals(Material.AIR)) + if(!d.getMaterial().equals(Material.AIR) && !d.getMaterial().equals(Material.CAVE_AIR)) { placer.set(xf, j, zf, d); } diff --git a/src/main/java/com/volmit/iris/object/IrisPotionEffect.java b/src/main/java/com/volmit/iris/object/IrisPotionEffect.java index 9be20c5df..144ea14f0 100644 --- a/src/main/java/com/volmit/iris/object/IrisPotionEffect.java +++ b/src/main/java/com/volmit/iris/object/IrisPotionEffect.java @@ -14,6 +14,7 @@ import com.volmit.iris.util.Required; import lombok.Data; +@DontObfuscate @Desc("An iris potion effect") @Data public class IrisPotionEffect diff --git a/src/main/java/com/volmit/iris/util/B.java b/src/main/java/com/volmit/iris/util/B.java index e5afeb03e..804e1b58c 100644 --- a/src/main/java/com/volmit/iris/util/B.java +++ b/src/main/java/com/volmit/iris/util/B.java @@ -22,6 +22,7 @@ public class B private static final IrisDimension defaultCompat = new IrisDimension(); private static final KMap solid = new KMap<>(); private static final KMap types = new KMap<>(); + private static IrisLock lock = new IrisLock("Typelock"); public static BlockData get(String bd) { @@ -188,7 +189,9 @@ public class B if(str) { + lock.lock(); storage.add(mat); + lock.unlock(); return true; } @@ -230,7 +233,9 @@ public class B if(str) { + lock.lock(); storageChest.add(mat); + lock.unlock(); return true; } @@ -269,7 +274,9 @@ public class B //@done if(str) { + lock.lock(); lit.add(mat); + lock.unlock(); return true; } @@ -292,11 +299,15 @@ public class B if(str) { + lock.lock(); updatable.add(mat); + lock.unlock(); return true; } + lock.lock(); notUpdatable.add(mat); + lock.unlock(); return false; } @@ -311,13 +322,17 @@ public class B if(onto.equals(Material.AIR) || onto.equals(B.mat("CAVE_AIR"))) { + lock.lock(); canPlaceOn.add(key); + lock.unlock(); return false; } if(onto.equals(Material.GRASS_BLOCK) && mat.equals(Material.DEAD_BUSH)) { + lock.lock(); canPlaceOn.add(key); + lock.unlock(); return false; } @@ -325,7 +340,9 @@ public class B { if(!mat.isSolid()) { + lock.lock(); canPlaceOn.add(key); + lock.unlock(); return false; } } @@ -334,7 +351,9 @@ public class B { if(mat.equals(Material.POPPY) || mat.equals(Material.DANDELION) || mat.equals(B.mat("CORNFLOWER")) || mat.equals(Material.ORANGE_TULIP) || mat.equals(Material.PINK_TULIP) || mat.equals(Material.RED_TULIP) || mat.equals(Material.WHITE_TULIP) || mat.equals(Material.FERN) || mat.equals(Material.LARGE_FERN) || mat.equals(Material.GRASS) || mat.equals(Material.TALL_GRASS)) { + lock.lock(); canPlaceOn.add(key); + lock.unlock(); return false; } } @@ -343,7 +362,9 @@ public class B { if(!mat.isSolid()) { + lock.lock(); canPlaceOn.add(key); + lock.unlock(); return false; } } diff --git a/src/main/java/com/volmit/iris/util/IrisLock.java b/src/main/java/com/volmit/iris/util/IrisLock.java index 4ecddab15..4868a85b3 100644 --- a/src/main/java/com/volmit/iris/util/IrisLock.java +++ b/src/main/java/com/volmit/iris/util/IrisLock.java @@ -7,9 +7,9 @@ import lombok.Data; @Data public class IrisLock { - private final ReentrantLock lock; - private final String name; - private boolean disabled = false; + private transient final ReentrantLock lock; + private transient final String name; + private transient boolean disabled = false; public IrisLock(String name) { diff --git a/src/main/java/com/volmit/iris/util/PregenJob.java b/src/main/java/com/volmit/iris/util/PregenJob.java index dacd65fab..12e303576 100644 --- a/src/main/java/com/volmit/iris/util/PregenJob.java +++ b/src/main/java/com/volmit/iris/util/PregenJob.java @@ -20,6 +20,7 @@ public class PregenJob public static int task = -1; private PrecisionStopwatch s; private ChronoLatch cl; + private ChronoLatch clx; private MortarSender sender; private Runnable onDone; @@ -37,6 +38,7 @@ public class PregenJob rcx = 0; this.sender = sender; cl = new ChronoLatch(3000); + clx = new ChronoLatch(15000); rcz = 0; total = (size / 16) * (size / 16); genned = 0; @@ -148,7 +150,6 @@ public class PregenJob try { verify(lx, lz); - Iris.verbose("Verified " + lx + " " + lz); } catch(Throwable e) @@ -170,11 +171,20 @@ public class PregenJob { Chunk c = world.getChunkAt(x + (lx * 32), z + (lz * 32)); c.load(true); + world.unloadChunkRequest(x + (lx * 32), z + (lz * 32)); } } } - saveAll(); + saveAllRequest(); + } + + public void saveAllRequest() + { + if(clx.flip()) + { + saveAll(); + } } public void saveAll()