Skip to content

Commit 7814b62

Browse files
committed
Implement display.
1 parent 9d26a88 commit 7814b62

File tree

17 files changed

+478
-40
lines changed

17 files changed

+478
-40
lines changed

build.gradle

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
plugins {
22
id 'java'
3-
id "io.izzel.taboolib" version "1.2"
3+
id "io.izzel.taboolib" version "1.2" apply false
44
}
55

66
group 'io.izzel.mesmerize'
@@ -11,6 +11,16 @@ targetCompatibility = 1.8
1111

1212
defaultTasks 'clean', 'build'
1313

14+
repositories {
15+
maven { url 'https://papermc.io/repo/repository/maven-public/' }
16+
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
17+
mavenCentral()
18+
maven { url 'https://repo.codemc.org/repository/maven-public' }
19+
maven { url 'http://repo.extendedclip.com/content/repositories/placeholderapi/' }
20+
}
21+
22+
apply plugin: 'io.izzel.taboolib'
23+
1424
taboolib {
1525
loaderVersion = '2.2'
1626
classifier = null
@@ -27,19 +37,13 @@ sourceSets {
2737
}
2838
}
2939

30-
repositories {
31-
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
32-
mavenCentral()
33-
maven { url 'https://repo.codemc.org/repository/maven-public' }
34-
maven { url 'http://repo.extendedclip.com/content/repositories/placeholderapi/' }
35-
}
36-
3740
dependencies {
3841
apiImplementation 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT'
3942
apiImplementation 'org.jetbrains:annotations:19.0.0'
4043
implementation 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT'
4144
implementation 'org.jetbrains:annotations:19.0.0'
4245
implementation 'com.github.ben-manes.caffeine:caffeine:2.8.5'
46+
implementation 'com.destroystokyo.paper:paper-api:1.15.2-R0.1-SNAPSHOT'
4347
implementation fileTree(dir:'libs',includes:['*jar'])
4448
taboo 'org.bstats:bstats-bukkit:1.7'
4549
}

src/api/java/io/izzel/mesmerize/api/data/MapValue.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,9 @@ public <V extends MapValue> BiFunction<V, V, V> build(BiFunction<Map<String, Sup
157157
}
158158
});
159159
}
160-
return constructor.apply(
161-
ImmutableMap.<String, Supplier<StatsValue<?>>>builder().putAll(a.dataTypes).putAll(b.dataTypes).build(),
162-
map
163-
);
160+
HashMap<String, Supplier<StatsValue<?>>> hashMap = new HashMap<>(a.dataTypes);
161+
hashMap.putAll(b.dataTypes);
162+
return constructor.apply(ImmutableMap.copyOf(hashMap), map);
164163
};
165164
}
166165
}

src/api/java/io/izzel/mesmerize/api/data/complex/PermissionValue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void accept(ValueVisitor visitor, VisitMode mode) {
8787
Element nodeElement = factory.createLocaleElement("permission_name." + permissionValue.getPermissionNodes().get(0));
8888
subPane.addHeader(factory.createLocaleElement("stats.permission", nodeElement));
8989
factory.displayHolder(permissionValue.getStats(), subPane);
90-
pane.addElement(pane);
90+
pane.addElement(subPane);
9191
})
9292
.build();
9393
}

src/api/java/io/izzel/mesmerize/api/display/DisplayPane.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,7 @@ public interface DisplayPane extends Element {
2525

2626
@Nullable Element getPadding();
2727

28+
void setPadding(Element padding);
29+
2830
@NotNull DisplaySetting getDisplaySetting();
2931
}
Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,77 @@
11
package io.izzel.mesmerize.api.display;
22

3-
public class DisplaySetting {
3+
public class DisplaySetting implements Cloneable {
44

5+
private int maxWidth = 30;
6+
7+
private Layout layout = Layout.LINE;
8+
9+
private String decimalFormat = "+0.##;-0.##";
10+
11+
private boolean paddingWithRandomColor = false;
12+
13+
private String paddingElement = "| ";
14+
15+
private boolean flattenFirstPadding = true;
16+
17+
public int maxWidth() {
18+
return maxWidth;
19+
}
20+
21+
public void setMaxWidth(int maxWidth) {
22+
this.maxWidth = maxWidth;
23+
}
24+
25+
public Layout layout() {
26+
return layout;
27+
}
28+
29+
public void setLayout(Layout layout) {
30+
this.layout = layout;
31+
}
32+
33+
public String decimalFormat() {
34+
return decimalFormat;
35+
}
36+
37+
public void setDecimalFormat(String decimalFormat) {
38+
this.decimalFormat = decimalFormat;
39+
}
40+
41+
public boolean paddingWithRandomColor() {
42+
return paddingWithRandomColor;
43+
}
44+
45+
public void setPaddingWithRandomColor(boolean paddingWithRandomColor) {
46+
this.paddingWithRandomColor = paddingWithRandomColor;
47+
}
48+
49+
public String paddingElement() {
50+
return paddingElement;
51+
}
52+
53+
public void setPaddingElement(String paddingElement) {
54+
this.paddingElement = paddingElement;
55+
}
56+
57+
public boolean flattenFirstPadding() {
58+
return flattenFirstPadding;
59+
}
60+
61+
public void setFlattenFirstPadding(boolean flattenFirstPadding) {
62+
this.flattenFirstPadding = flattenFirstPadding;
63+
}
64+
65+
@Override
66+
public DisplaySetting clone() {
67+
try {
68+
return (DisplaySetting) super.clone();
69+
} catch (CloneNotSupportedException e) {
70+
throw new IllegalStateException(e);
71+
}
72+
}
73+
74+
public enum Layout {
75+
LINE, FLOW
76+
}
577
}

src/api/java/io/izzel/mesmerize/api/service/ElementFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44
import io.izzel.mesmerize.api.display.DisplayPane;
55
import io.izzel.mesmerize.api.display.Element;
66
import io.izzel.mesmerize.api.visitor.StatsHolder;
7+
import org.bukkit.inventory.ItemStack;
78
import org.jetbrains.annotations.NotNull;
89

910
import java.time.Duration;
1011
import java.time.Instant;
1112

1213
public interface ElementFactory {
1314

15+
void updateLore(ItemStack itemStack);
16+
1417
void displayHolder(StatsHolder holder, DisplayPane pane);
1518

1619
DisplayPane createDisplayPane();

src/api/java/io/izzel/mesmerize/api/visitor/impl/AbstractValue.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ public void visitEnd() {
7878
}
7979

8080
@Override
81-
public StatsValue<?> getExternalValue() {
82-
throw new UnsupportedOperationException("external");
81+
public final StatsValue<?> getExternalValue() {
82+
return null;
8383
}
8484

8585
public static <V extends AbstractValue<?>> BiFunction<V, V, V> keepMutableValue(BiFunction<V, V, V> merger) {

src/main/java/io/izzel/mesmerize/impl/Mesmerize.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ public void onActivated() {
6262
this.getServer().getPluginManager().registerEvents(new ProjectileListener(), this);
6363
this.getServer().getPluginManager().registerEvents(new EntityStatsCacheListener(), this);
6464
this.getServer().getPluginManager().registerEvents(new AttributeListener(), this);
65+
try {
66+
Class.forName("com.destroystokyo.paper.event.player.PlayerArmorChangeEvent");
67+
LOGGER.info(TLocale.asString("load.paper.present"));
68+
this.getServer().getPluginManager().registerEvents(new EntityStatsCacheListener.Paper(), this);
69+
} catch (ClassNotFoundException e) {
70+
LOGGER.info(TLocale.asString("load.paper.absent"));
71+
this.getServer().getPluginManager().registerEvents(new EntityStatsCacheListener.Spigot(), this);
72+
}
6573
Updater.start();
6674
LOGGER.info(TLocale.asString("general.load", (System.currentTimeMillis() - begin) / 1000D));
6775
}

src/main/java/io/izzel/mesmerize/impl/command/MesmerizeCommand.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.izzel.mesmerize.api.DefaultStats;
55
import io.izzel.mesmerize.api.data.MultiValue;
66
import io.izzel.mesmerize.api.data.StatsSetValue;
7+
import io.izzel.mesmerize.api.service.ElementFactory;
78
import io.izzel.mesmerize.api.service.StatsService;
89
import io.izzel.mesmerize.api.visitor.StatsHolder;
910
import io.izzel.mesmerize.api.visitor.StatsVisitor;
@@ -63,6 +64,7 @@ public void onCommand(CommandSender sender, Command command, String s, String[]
6364
StatsVisitor writer = StatsService.instance().newStatsWriter(itemMeta);
6465
statsSet.accept(writer, VisitMode.DATA);
6566
itemInMainHand.setItemMeta(itemMeta);
67+
ElementFactory.instance().updateLore(itemInMainHand);
6668
player.getInventory().setItemInMainHand(itemInMainHand);
6769
StatsService.instance().refreshCache(player, true);
6870
TLocale.sendTo(player, "command.attach", args[0]);

src/main/java/io/izzel/mesmerize/impl/config/spec/ConfigSpec.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.izzel.mesmerize.impl.config.spec;
22

3+
import io.izzel.mesmerize.api.display.DisplaySetting;
34
import io.izzel.mesmerize.impl.Mesmerize;
45

56
public class ConfigSpec {
67

78
private HealthSpec health;
89
private GeneralSpec general;
910
private PerformanceSpec performance;
11+
private DisplaySetting displaySetting;
1012

1113
public HealthSpec health() {
1214
return health;
@@ -32,6 +34,14 @@ public void setPerformance(PerformanceSpec performance) {
3234
this.performance = performance;
3335
}
3436

37+
public DisplaySetting displaySetting() {
38+
return displaySetting;
39+
}
40+
41+
public void setDisplaySetting(DisplaySetting displaySetting) {
42+
this.displaySetting = displaySetting;
43+
}
44+
3545
public static ConfigSpec spec() {
3646
return Mesmerize.instance().getConfigSpec();
3747
}

0 commit comments

Comments
 (0)