fixes
This commit is contained in:
1 parent
83aea53e57
commit
aa4f6b6ddc
842 files changed
+47284
-91563
No files matched your search
@@ -0,0 +1,58 @@
|
||||
package dev.zprestige.prestige.math;
|
||||
|
||||
import dev.zprestige.prestige.client.Prestige;
|
||||
import dev.zprestige.prestige.network.BlockChangeListener;
|
||||
import dev.zprestige.prestige.render.MinecraftAccess;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public final class BlockChangeTracker implements MinecraftAccess {
|
||||
public static final Map CLEARED_BLOCKS = new HashMap();
|
||||
public static final Map EXPLOSIONS = new HashMap();
|
||||
public static final Map PLACED_BLOCKS = new HashMap();
|
||||
private static boolean listenerRegistered;
|
||||
|
||||
private BlockChangeTracker() {
|
||||
}
|
||||
|
||||
private static void ensureListenerRegistered() {
|
||||
if (!listenerRegistered && Prestige.eventBus != null) {
|
||||
listenerRegistered = true;
|
||||
Prestige.eventBus.register(new BlockChangeListener());
|
||||
}
|
||||
}
|
||||
|
||||
public static void markExplosion(BlockPos pos) {
|
||||
ensureListenerRegistered();
|
||||
EXPLOSIONS.put(pos.toImmutable(), System.currentTimeMillis());
|
||||
}
|
||||
|
||||
public static boolean isRecentlyExploded(BlockPos pos) {
|
||||
ensureListenerRegistered();
|
||||
long now = System.currentTimeMillis();
|
||||
Long clearedAt = (Long)CLEARED_BLOCKS.get(pos);
|
||||
if (clearedAt != null && now - clearedAt < 300L) {
|
||||
return true;
|
||||
} else {
|
||||
for (Entry explosion : (Iterable<Entry>)(EXPLOSIONS.entrySet())) {
|
||||
if (now - (Long)explosion.getValue() <= 100L && ((BlockPos)explosion.getKey()).getSquaredDistance(pos) <= 42.25) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isRecentlyPlaced(BlockPos pos) {
|
||||
ensureListenerRegistered();
|
||||
Long placedAt = (Long)PLACED_BLOCKS.get(pos);
|
||||
return placedAt != null && System.currentTimeMillis() - placedAt < 120L;
|
||||
}
|
||||
|
||||
public static void markCleared(BlockPos pos, long time) {
|
||||
CLEARED_BLOCKS.put(pos.toImmutable(), time);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user