9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-27 19:09:08 +00:00

feat(bukkit): 添加配置文件

This commit is contained in:
jhqwqmc
2025-05-18 00:52:15 +08:00
parent df86e822db
commit 3a7276c309
6 changed files with 47 additions and 26 deletions

View File

@@ -110,6 +110,8 @@ public class Config {
protected Map<String, String> furniture$handle_invalid_furniture_on_chunk_load$mapping;
protected boolean furniture$hide_base_entity;
protected ColliderType furniture$collision_entity_type;
protected boolean furniture$max_visible_furniture_enable;
protected int furniture$max_visible_furniture_amount;
protected boolean block$sound_system$enable;
protected boolean block$simplify_adventure_break_check;
@@ -300,6 +302,8 @@ public class Config {
furniture$handle_invalid_furniture_on_chunk_load$mapping = builder.build();
furniture$hide_base_entity = config.getBoolean("furniture.hide-base-entity", true);
furniture$collision_entity_type = ColliderType.valueOf(config.getString("furniture.collision-entity-type", "interaction").toUpperCase(Locale.ENGLISH));
furniture$max_visible_furniture_enable = config.getBoolean("furniture.max-visible-furniture.enable", false);
furniture$max_visible_furniture_amount = config.getInt("furniture.max-visible-furniture.amount", 100);
// block
block$sound_system$enable = config.getBoolean("block.sound-system.enable", true);
@@ -417,6 +421,14 @@ public class Config {
return instance.resource_pack$supported_version$min;
}
public static boolean enableMaxVisibleFurniture() {
return instance.furniture$max_visible_furniture_enable;
}
public static int maxVisibleFurniture() {
return instance.furniture$max_visible_furniture_amount;
}
public static float packMaxVersion() {
return instance.resource_pack$supported_version$max;
}

View File

@@ -1,5 +1,7 @@
package net.momirealms.craftengine.core.util;
import net.momirealms.craftengine.core.plugin.config.Config;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
@@ -50,14 +52,12 @@ public class DynamicPriorityTracker {
}
}
private final int capacity;
private final PriorityQueue<Element> maxHeap;
private final Map<Integer, Element> elementMap = new ConcurrentHashMap<>();
private final Set<Integer> inHeapSet = ConcurrentHashMap.newKeySet();
private final ReentrantLock heapLock = new ReentrantLock();
public DynamicPriorityTracker(int capacity) {
this.capacity = capacity;
public DynamicPriorityTracker() {
this.maxHeap = new PriorityQueue<>((a, b) -> Double.compare(b.distance, a.distance));
}
@@ -80,7 +80,7 @@ public class DynamicPriorityTracker {
private UpdateResult handleNewElement(Element newElement, UpdateResult result) {
elementMap.put(newElement.entityId, newElement);
if (maxHeap.size() < capacity) {
if (maxHeap.size() < Config.maxVisibleFurniture()) {
maxHeap.offer(newElement);
inHeapSet.add(newElement.entityId);
result.addEntered(newElement);
@@ -106,7 +106,7 @@ public class DynamicPriorityTracker {
maxHeap.remove(existing);
maxHeap.offer(existing);
} else if (nowInHeap) {
if (maxHeap.size() < capacity) {
if (maxHeap.size() < Config.maxVisibleFurniture()) {
maxHeap.offer(existing);
inHeapSet.add(existing.entityId);
result.addEntered(existing);
@@ -124,7 +124,7 @@ public class DynamicPriorityTracker {
}
private boolean checkIfShouldBeInHeap(double distance) {
if (maxHeap.size() < capacity) return true;
if (maxHeap.size() < Config.maxVisibleFurniture()) return true;
return maxHeap.peek() != null && distance < maxHeap.peek().distance;
}