Skip to content

Commit 3130e87

Browse files
committed
Build against 1.21.3
1 parent 9c971b5 commit 3130e87

File tree

9 files changed

+253
-99
lines changed

9 files changed

+253
-99
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,12 @@
178178
<!-- GPL -->
179179
<groupId>org.spigotmc</groupId>
180180
<artifactId>spigot-api</artifactId>
181-
<version>1.21.2-R0.1-SNAPSHOT</version>
181+
<version>1.21.3-R0.1-SNAPSHOT</version>
182182
</dependency>
183183
<dependency>
184184
<groupId>io.papermc.paper</groupId>
185185
<artifactId>paper-api</artifactId>
186-
<version>1.21.1-R0.1-SNAPSHOT</version>
186+
<version>1.21.3-R0.1-SNAPSHOT</version>
187187
</dependency>
188188

189189
<!-- Used for storing and retreiving Constructs in a storage transparent medium: JSONs -->

src/main/java/com/laytonsmith/abstraction/bukkit/entities/BukkitMCLivingEntity.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ public void setHealth(double i) {
6565

6666
@Override
6767
public double getMaxHealth() {
68-
AttributeInstance maxHealth = le.getAttribute(Attribute.GENERIC_MAX_HEALTH);
68+
Attribute attribute = (Attribute) MCAttribute.valueOf("GENERIC_MAX_HEALTH").getConcrete();
69+
AttributeInstance maxHealth = le.getAttribute(attribute);
6970
if(maxHealth == null) {
7071
return le.getHealth();
7172
}
@@ -74,7 +75,8 @@ public double getMaxHealth() {
7475

7576
@Override
7677
public void setMaxHealth(double health) {
77-
AttributeInstance maxHealth = le.getAttribute(Attribute.GENERIC_MAX_HEALTH);
78+
Attribute attribute = (Attribute) MCAttribute.valueOf("GENERIC_MAX_HEALTH").getConcrete();
79+
AttributeInstance maxHealth = le.getAttribute(attribute);
7880
if(maxHealth == null) {
7981
le.setHealth(health);
8082
return;
@@ -87,7 +89,8 @@ public void setMaxHealth(double health) {
8789

8890
@Override
8991
public void resetMaxHealth() {
90-
AttributeInstance maxHealth = le.getAttribute(Attribute.GENERIC_MAX_HEALTH);
92+
Attribute attribute = (Attribute) MCAttribute.valueOf("GENERIC_MAX_HEALTH").getConcrete();
93+
AttributeInstance maxHealth = le.getAttribute(attribute);
9194
if(maxHealth == null) {
9295
return;
9396
}

src/main/java/com/laytonsmith/abstraction/bukkit/entities/BukkitMCPainting.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@
22

33
import com.laytonsmith.abstraction.entities.MCPainting;
44
import com.laytonsmith.abstraction.enums.MCArt;
5+
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCArt;
56
import org.bukkit.Art;
6-
import org.bukkit.NamespacedKey;
7-
import org.bukkit.Registry;
87
import org.bukkit.entity.Entity;
98
import org.bukkit.entity.Painting;
109

11-
import java.util.Locale;
12-
1310
public class BukkitMCPainting extends BukkitMCHanging implements MCPainting {
1411

1512
Painting p;
@@ -21,7 +18,7 @@ public BukkitMCPainting(Entity painting) {
2118

2219
@Override
2320
public MCArt getArt() {
24-
return MCArt.valueOf(p.getArt().getKey().getKey().toUpperCase(Locale.ROOT));
21+
return BukkitMCArt.valueOfConcrete(p.getArt());
2522
}
2623

2724
@Override
@@ -31,11 +28,7 @@ public boolean setArt(MCArt art) {
3128

3229
@Override
3330
public boolean setArt(MCArt art, boolean force) {
34-
Art concreteArt = Registry.ART.get(NamespacedKey.minecraft(art.name().toLowerCase(Locale.ROOT)));
35-
if(concreteArt != null) {
36-
return p.setArt(concreteArt, force);
37-
}
38-
return false;
31+
return p.setArt((Art) art.getConcrete(), force);
3932
}
4033

4134
}
Lines changed: 137 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,141 @@
11
package com.laytonsmith.abstraction.enums;
22

3-
import com.laytonsmith.annotations.MEnum;
3+
import com.laytonsmith.PureUtilities.ClassLoading.DynamicEnum;
4+
import com.laytonsmith.abstraction.enums.MCArt.MCVanillaArt;
5+
import com.laytonsmith.annotations.MDynamicEnum;
46

5-
@MEnum("com.commandhelper.Art")
6-
public enum MCArt {
7-
// 1x1
8-
KEBAB,
9-
AZTEC,
10-
ALBAN,
11-
AZTEC2,
12-
BOMB,
13-
PLANT,
14-
WASTELAND,
15-
MEDITATIVE,
16-
// 2x1
17-
POOL,
18-
COURBET,
19-
SEA,
20-
SUNSET,
21-
CREEBET,
22-
// 1x2
23-
WANDERER,
24-
GRAHAM,
25-
PRAIRIE_RIDE,
26-
// 2x2
27-
MATCH,
28-
BUST,
29-
STAGE,
30-
VOID,
31-
SKULL_AND_ROSES,
32-
WITHER,
33-
BAROQUE,
34-
HUMBLE,
35-
EARTH,
36-
WIND,
37-
WATER,
38-
FIRE,
39-
// 4x2
40-
FIGHTERS,
41-
CHANGING,
42-
FINDING,
43-
LOWMIST,
44-
PASSAGE,
45-
// 3x3
46-
BOUQUET,
47-
CAVEBIRD,
48-
COTAN,
49-
ENDBOSS,
50-
FERN,
51-
OWLEMONS,
52-
SUNFLOWERS,
53-
TIDES,
54-
// 4x3
55-
SKELETON,
56-
DONKEY_KONG,
57-
// 3x4
58-
BACKYARD,
59-
POND,
60-
// 4x4
61-
POINTER,
62-
PIGSCENE,
63-
BURNING_SKULL,
64-
ORB,
65-
UNPACKED,
7+
import java.util.ArrayList;
8+
import java.util.HashMap;
9+
import java.util.HashSet;
10+
import java.util.List;
11+
import java.util.Map;
12+
import java.util.Set;
13+
import java.util.TreeSet;
14+
15+
@MDynamicEnum("com.commandhelper.Art")
16+
public abstract class MCArt<Concrete> extends DynamicEnum<MCVanillaArt, Concrete> {
17+
18+
protected static final Map<String, MCArt> MAP = new HashMap<>();
19+
20+
public MCArt(MCVanillaArt mcVanillaArt, Concrete concrete) {
21+
super(mcVanillaArt, concrete);
22+
}
23+
24+
public static MCArt valueOf(String test) throws IllegalArgumentException {
25+
MCArt ret = MAP.get(test);
26+
if(ret == null) {
27+
throw new IllegalArgumentException("Unknown art: " + test);
28+
}
29+
return ret;
30+
}
31+
32+
public static Set<String> types() {
33+
if(MAP.isEmpty()) { // docs mode
34+
Set<String> dummy = new HashSet<>();
35+
for(final MCVanillaArt s : MCVanillaArt.values()) {
36+
if(s != MCVanillaArt.UNKNOWN) {
37+
dummy.add(s.name());
38+
}
39+
}
40+
return dummy;
41+
}
42+
return new TreeSet<>(MAP.keySet());
43+
}
44+
45+
public static List<MCArt> values() {
46+
if(MAP.isEmpty()) { // docs mode
47+
ArrayList<MCArt> dummy = new ArrayList<>();
48+
for(final MCVanillaArt s : MCVanillaArt.values()) {
49+
if(s == MCVanillaArt.UNKNOWN) {
50+
continue;
51+
}
52+
dummy.add(new MCArt<>(s, null) {
53+
@Override
54+
public String name() {
55+
return s.name();
56+
}
57+
});
58+
}
59+
return dummy;
60+
}
61+
return new ArrayList<>(MAP.values());
62+
}
63+
64+
public enum MCVanillaArt {
65+
// 1x1
66+
KEBAB,
67+
AZTEC,
68+
ALBAN,
69+
AZTEC2,
70+
BOMB,
71+
PLANT,
72+
WASTELAND,
73+
MEDITATIVE(MCVersion.MC1_21),
74+
// 2x1
75+
POOL,
76+
COURBET,
77+
SEA,
78+
SUNSET,
79+
CREEBET,
80+
// 1x2
81+
WANDERER,
82+
GRAHAM,
83+
PRAIRIE_RIDE(MCVersion.MC1_21),
84+
// 2x2
85+
MATCH,
86+
BUST,
87+
STAGE,
88+
VOID,
89+
SKULL_AND_ROSES,
90+
WITHER,
91+
BAROQUE(MCVersion.MC1_21),
92+
HUMBLE(MCVersion.MC1_21),
93+
EARTH(MCVersion.MC1_19),
94+
WIND(MCVersion.MC1_19),
95+
WATER(MCVersion.MC1_19),
96+
FIRE(MCVersion.MC1_19),
97+
// 4x2
98+
FIGHTERS,
99+
CHANGING(MCVersion.MC1_21),
100+
FINDING(MCVersion.MC1_21),
101+
LOWMIST(MCVersion.MC1_21),
102+
PASSAGE(MCVersion.MC1_21),
103+
// 3x3
104+
BOUQUET(MCVersion.MC1_21),
105+
CAVEBIRD(MCVersion.MC1_21),
106+
COTAN(MCVersion.MC1_21),
107+
ENDBOSS(MCVersion.MC1_21),
108+
FERN(MCVersion.MC1_21),
109+
OWLEMONS(MCVersion.MC1_21),
110+
SUNFLOWERS(MCVersion.MC1_21),
111+
TIDES(MCVersion.MC1_21),
112+
// 4x3
113+
SKELETON,
114+
DONKEY_KONG,
115+
// 3x4
116+
BACKYARD(MCVersion.MC1_21),
117+
POND(MCVersion.MC1_21),
118+
// 4x4
119+
POINTER,
120+
PIGSCENE,
121+
BURNING_SKULL,
122+
ORB(MCVersion.MC1_21),
123+
UNPACKED(MCVersion.MC1_21),
124+
125+
UNKNOWN(MCVersion.NEVER);
126+
127+
private final MCVersion since;
128+
129+
MCVanillaArt() {
130+
this(MCVersion.MC1_0);
131+
}
132+
133+
MCVanillaArt(MCVersion since) {
134+
this.since = since;
135+
}
136+
137+
public boolean existsIn(MCVersion version) {
138+
return version.gte(since);
139+
}
140+
}
66141
}

src/main/java/com/laytonsmith/abstraction/enums/MCBiomeType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public enum MCVanillaBiomeType {
154154
CRIMSON_FOREST(MCVersion.MC1_16),
155155
WARPED_FOREST(MCVersion.MC1_16),
156156
BASALT_DELTAS(MCVersion.MC1_16),
157-
CUSTOM(MCVersion.MC1_16_X),
157+
CUSTOM(MCVersion.MC1_16_X, MCVersion.MC1_21_1),
158158
DRIPSTONE_CAVES(MCVersion.MC1_17),
159159
LUSH_CAVES(MCVersion.MC1_17),
160160
FROZEN_PEAKS(MCVersion.MC1_18),
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.laytonsmith.abstraction.enums.bukkit;
2+
3+
import com.laytonsmith.PureUtilities.Common.ReflectionUtils;
4+
import com.laytonsmith.abstraction.enums.MCArt;
5+
import com.laytonsmith.core.MSLog;
6+
import com.laytonsmith.core.Static;
7+
import com.laytonsmith.core.constructs.Target;
8+
import org.bukkit.Art;
9+
import org.bukkit.Keyed;
10+
import org.bukkit.NamespacedKey;
11+
12+
import java.lang.reflect.Field;
13+
import java.util.HashMap;
14+
import java.util.Locale;
15+
import java.util.Map;
16+
17+
public class BukkitMCArt extends MCArt<Art> {
18+
19+
private static final Map<Art, MCArt> BUKKIT_MAP = new HashMap<>();
20+
21+
public BukkitMCArt(MCVanillaArt vanillaArtType, Art art) {
22+
super(vanillaArtType, art);
23+
}
24+
25+
@Override
26+
public String name() {
27+
if(getAbstracted() == MCVanillaArt.UNKNOWN) {
28+
// changed from enum to interface in 1.21.3
29+
NamespacedKey key = ReflectionUtils.invokeMethod(Keyed.class, getConcrete(), "getKey");
30+
return key.getKey().toUpperCase(Locale.ROOT);
31+
}
32+
return getAbstracted().name();
33+
}
34+
35+
public static MCArt valueOfConcrete(Art test) {
36+
MCArt type = BUKKIT_MAP.get(test);
37+
if(type == null) {
38+
// changed from enum to interface in 1.21.3
39+
NamespacedKey key = ReflectionUtils.invokeMethod(Keyed.class, test, "getKey");
40+
MSLog.GetLogger().e(MSLog.Tags.GENERAL, "Bukkit Art missing in BUKKIT_MAP: "
41+
+ key.getKey().toUpperCase(Locale.ROOT), Target.UNKNOWN);
42+
return new BukkitMCArt(MCVanillaArt.UNKNOWN, test);
43+
}
44+
return type;
45+
}
46+
47+
public static void build() {
48+
for(MCVanillaArt v : MCVanillaArt.values()) {
49+
if(v.existsIn(Static.getServer().getMinecraftVersion())) {
50+
Art type;
51+
try {
52+
type = (Art) Art.class.getDeclaredField(v.name()).get(null);
53+
} catch (IllegalAccessException | NoSuchFieldException e) {
54+
MSLog.GetLogger().w(MSLog.Tags.GENERAL, "Could not find a Bukkit Art for " + v.name(),
55+
Target.UNKNOWN);
56+
continue;
57+
}
58+
BukkitMCArt wrapper = new BukkitMCArt(v, type);
59+
MAP.put(v.name(), wrapper);
60+
BUKKIT_MAP.put(type, wrapper);
61+
}
62+
}
63+
for(Field f : Art.class.getFields()) {
64+
try {
65+
Art a = (Art) f.get(null);
66+
if(!BUKKIT_MAP.containsKey(a)) {
67+
MSLog.GetLogger().w(MSLog.Tags.GENERAL, "Could not find an MCArt for " + f.getName(),
68+
Target.UNKNOWN);
69+
MCArt wrapper = new BukkitMCArt(MCVanillaArt.UNKNOWN, a);
70+
MAP.put(f.getName(), wrapper);
71+
BUKKIT_MAP.put(a, wrapper);
72+
}
73+
} catch (IllegalAccessException | ClassCastException e) {
74+
throw new RuntimeException(e);
75+
}
76+
}
77+
}
78+
}

0 commit comments

Comments
 (0)