disable part visibility by default

This commit is contained in:
zimzaza4
2024-07-19 14:30:49 +08:00
parent cd92814bc5
commit 87b2f6d398
3 changed files with 23 additions and 12 deletions

View File

@@ -20,6 +20,8 @@ import re.imc.geysermodelengine.listener.ModelListener;
import re.imc.geysermodelengine.listener.MountPacketListener;
import re.imc.geysermodelengine.model.ModelEntity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
@@ -56,6 +58,9 @@ public final class GeyserModelEngine extends JavaPlugin {
@Getter
private boolean initialized = false;
@Getter
private List<String> enablePartVisibilityModels = new ArrayList<>();
@Override
public void onEnable() {
// Plugin startup logic
@@ -66,6 +71,7 @@ public final class GeyserModelEngine extends JavaPlugin {
debug = getConfig().getBoolean("debug", false);
modelEntityType = EntityType.valueOf(getConfig().getString("model-entity-type", "BAT"));
joinSendDelay = getConfig().getInt("join-send-delay", 20);
enablePartVisibilityModels.addAll(getConfig().getStringList("enable-part-visibility-models"));
if (joinSendDelay > 0) {
joinedPlayer = CacheBuilder.newBuilder()
.expireAfterWrite(joinSendDelay * 50L, TimeUnit.MILLISECONDS).build();

View File

@@ -237,21 +237,24 @@ public class EntityTask {
Map<String, Boolean> updates = new HashMap<>();
model.getActiveModel().getBones().forEach((s, bone) -> {
if (!lastModelBoneSet.containsKey(bone))
lastModelBoneSet.put(bone, !bone.isVisible());
if (GeyserModelEngine.getInstance().getEnablePartVisibilityModels().contains(model.getActiveModel().getBlueprint().getName())) {
model.getActiveModel().getBones().forEach((s, bone) -> {
if (!lastModelBoneSet.containsKey(bone))
lastModelBoneSet.put(bone, !bone.isVisible());
Boolean lastBone = lastModelBoneSet.get(bone);
if (lastBone == null)
return;
Boolean lastBone = lastModelBoneSet.get(bone);
if (lastBone == null)
return;
if (!lastBone.equals(bone.isVisible()) || ignore) {
String name = unstripName(bone).toLowerCase();
updates.put(model.getActiveModel().getBlueprint().getName() + ":" + name, bone.isVisible());
lastModelBoneSet.replace(bone, bone.isVisible());
}
if (!lastBone.equals(bone.isVisible()) || ignore) {
String name = unstripName(bone).toLowerCase();
updates.put(model.getActiveModel().getBlueprint().getName() + ":" + name, bone.isVisible());
lastModelBoneSet.replace(bone, bone.isVisible());
}
});
}
});
if (ignore || !lastAnimProperty.equals(currentAnimProperty)) {

View File

@@ -2,4 +2,6 @@ data-send-delay: 5
entity-view-distance: 50
join-send-delay: 20
model-entity-type: BAT # must be a living entity
enable-part-visibility-models:
- example
debug: false