9
0
mirror of https://github.com/Xiao-MoMi/Custom-Nameplates.git synced 2025-12-19 15:09:23 +00:00

improve shaders

This commit is contained in:
XiaoMoMi
2024-10-06 22:42:27 +08:00
parent 844e53ff1a
commit f935a61958
25 changed files with 147 additions and 66 deletions

View File

@@ -421,7 +421,7 @@ public abstract class AbstractCNPlayer implements CNPlayer {
@Override
public Set<Integer> getTrackedPassengerIds(CNPlayer another) {
return Optional.ofNullable(trackers.get(another)).map(tracker -> new HashSet<>(tracker.getPassengerIDs())).orElse(new HashSet<>());
return Optional.ofNullable(trackers.get(another)).map(Tracker::getPassengerIDs).orElse(new HashSet<>());
}
@Override

View File

@@ -209,6 +209,10 @@ public class AdventureHelper {
return "<#FFFEFD>" + text + "</#FFFEFD>";
}
public static String removeShadow(String text) {
return "<#F0F0F0>" + text + "</#F0F0F0>";
}
/**
* Surrounds text with a MiniMessage font tag.
*

View File

@@ -19,9 +19,8 @@ package net.momirealms.customnameplates.api.network;
import net.momirealms.customnameplates.api.CNPlayer;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
public class Tracker {
@@ -29,7 +28,7 @@ public class Tracker {
private double scale;
private final CNPlayer tracker;
private final Set<Integer> passengerIDs = Collections.synchronizedSet(new HashSet<>());
private final CopyOnWriteArrayList<Integer> passengerIDs = new CopyOnWriteArrayList<>();
/**
* Constructs a new Tracker for the specified player.
@@ -63,15 +62,15 @@ public class Tracker {
}
public void addPassengerID(int passengerID) {
passengerIDs.add(passengerID);
this.passengerIDs.add(passengerID);
}
public void removePassengerID(int passengerID) {
passengerIDs.remove(passengerID);
this.passengerIDs.remove((Object) passengerID);
}
public Set<Integer> getPassengerIDs() {
return passengerIDs;
return new HashSet<>(passengerIDs);
}
public boolean isEmpty() {

View File

@@ -31,23 +31,25 @@ public class AdaptiveImageText<T extends AdaptiveImage> {
private final String id;
private final String text;
private final T t;
private final boolean removeShadow;
private final boolean removeShadowOld;
private final boolean removeShadowNew;
private final PreParsedDynamicText preParsedDynamicText;
private final int leftMargin;
private final int rightMargin;
public AdaptiveImageText(String id, String text, T t, boolean removeShadow, int leftMargin, int rightMargin) {
public AdaptiveImageText(String id, String text, T t, boolean removeShadowOld, boolean removeShadowNew, int rightMargin, int leftMargin) {
this.text = text;
this.id = id;
this.t = t;
this.removeShadow = removeShadow;
this.removeShadowOld = removeShadowOld;
this.removeShadowNew = removeShadowNew;
this.preParsedDynamicText = new PreParsedDynamicText(text);
this.leftMargin = leftMargin;
this.rightMargin = rightMargin;
}
public static <T extends AdaptiveImage> AdaptiveImageText<T> create(String id, final String text, final T t, final boolean removeShadow, int leftMargin, int rightMargin) {
return new AdaptiveImageText<>(id, text, t, removeShadow, leftMargin, rightMargin);
public static <T extends AdaptiveImage> AdaptiveImageText<T> create(String id, final String text, final T t, final boolean removeShadowOld, final boolean removeShadowNew, int leftMargin, int rightMargin) {
return new AdaptiveImageText<>(id, text, t, removeShadowOld, removeShadowNew, rightMargin, leftMargin);
}
public PreParsedDynamicText getPreParsedDynamicText() {
@@ -71,8 +73,13 @@ public class AdaptiveImageText<T extends AdaptiveImage> {
String suffix = t.createImageSuffix(advance, leftMargin, rightMargin);
String prefixWithFont = AdventureHelper.surroundWithNameplatesFont(prefix);
String suffixWithFont = AdventureHelper.surroundWithNameplatesFont(suffix);
if (removeShadow) prefixWithFont = AdventureHelper.removeShadowTricky(prefixWithFont);
if (removeShadow) suffixWithFont = AdventureHelper.removeShadowTricky(suffixWithFont);
if (removeShadowOld) {
prefixWithFont = AdventureHelper.removeShadowTricky(prefixWithFont);
suffixWithFont = AdventureHelper.removeShadowTricky(suffixWithFont);
} else if (removeShadowNew) {
prefixWithFont = AdventureHelper.removeShadow(prefixWithFont);
suffixWithFont = AdventureHelper.removeShadow(suffixWithFont);
}
return prefixWithFont + parsed + suffixWithFont;
}
@@ -83,7 +90,8 @@ public class AdaptiveImageText<T extends AdaptiveImage> {
float advance = CustomNameplates.getInstance().getAdvanceManager().getLineAdvance(parsed);
String image = t.createImage(advance, leftMargin, rightMargin);
String imageWithFont = AdventureHelper.surroundWithNameplatesFont(image);
if (removeShadow) imageWithFont = AdventureHelper.removeShadowTricky(imageWithFont);
if (removeShadowOld) imageWithFont = AdventureHelper.removeShadowTricky(imageWithFont);
else if (removeShadowNew) imageWithFont = AdventureHelper.removeShadow(imageWithFont);
return imageWithFont;
}

View File

@@ -34,13 +34,11 @@ public class VanillaHud {
private final boolean reverse;
private final PreParsedDynamicText current;
private final PreParsedDynamicText max;
private final boolean removeShadow;
public VanillaHud(Image empty, Image half, Image full, boolean reverse, String current, String max, boolean removeShadow) {
public VanillaHud(Image empty, Image half, Image full, boolean reverse, String current, String max) {
this.empty = String.valueOf(empty.character().character()) + OffsetFont.NEG_2.character();
this.half = String.valueOf(half.character().character()) + OffsetFont.NEG_2.character();
this.full = String.valueOf(full.character().character()) + OffsetFont.NEG_2.character();
this.removeShadow = removeShadow;
this.reverse = reverse;
this.current = new PreParsedDynamicText(current);
this.max = new PreParsedDynamicText(max);
@@ -95,7 +93,6 @@ public class VanillaHud {
.append(String.valueOf(half).repeat(half_amount))
.append(String.valueOf(empty).repeat(empty_amount));
}
return removeShadow ? AdventureHelper.removeShadowTricky(AdventureHelper.surroundWithNameplatesFont(builder.toString())) :
AdventureHelper.surroundWithNameplatesFont(builder.toString());
return AdventureHelper.surroundWithNameplatesFont(builder.toString());
}
}