Skip to content

Commit 8e3b24f

Browse files
authored
Minecraft 26.1 (#6473)
1 parent d7452bf commit 8e3b24f

File tree

4 files changed

+100
-21
lines changed

4 files changed

+100
-21
lines changed

Essentials/src/main/java/com/earth2me/essentials/utils/VersionUtil.java

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ public final class VersionUtil {
4646
public static final BukkitVersion v1_21_5_R01 = BukkitVersion.fromString("1.21.5-R0.1-SNAPSHOT");
4747
public static final BukkitVersion v1_21_8_R01 = BukkitVersion.fromString("1.21.8-R0.1-SNAPSHOT");
4848
public static final BukkitVersion v1_21_11_R01 = BukkitVersion.fromString("1.21.11-R0.1-SNAPSHOT");
49+
public static final BukkitVersion v26_1_R01 = BukkitVersion.fromString("26.1-R0.1-SNAPSHOT");
4950

50-
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01, v1_18_2_R01, v1_19_4_R01, v1_20_6_R01, v1_21_11_R01);
51+
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01, v1_18_2_R01, v1_19_4_R01, v1_20_6_R01, v1_21_11_R01, v26_1_R01);
5152

5253
public static final boolean PRE_FLATTENING = VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01);
5354

@@ -189,11 +190,12 @@ public static String getSupportStatusClass() {
189190
}
190191

191192
public static final class BukkitVersion implements Comparable<BukkitVersion> {
192-
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)?(?:-pre(\\d))?(?:-rc(\\d+))?(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
193-
private static final Pattern SNAPSHOT_PATTERN = Pattern.compile("^(\\d{2})w(\\d{2})([a-z])(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
193+
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)?(?:-snapshot-(\\d+))?(?:-pre-?(\\d+))?(?:-rc-?(\\d+))?(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
194+
private static final Pattern LEGACY_SNAPSHOT_PATTERN = Pattern.compile("^(\\d{2})w(\\d{2})([a-z])(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
194195

195196
private final int major;
196197
private final int minor;
198+
private final int snapshotRelease;
197199
private final int preRelease;
198200
private final int releaseCandidate;
199201
private final int patch;
@@ -204,11 +206,12 @@ public static final class BukkitVersion implements Comparable<BukkitVersion> {
204206
private final int snapshotWeek;
205207
private final char snapshotLetter;
206208

207-
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int preRelease, final int releaseCandidate) {
209+
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int snapshotRelease, final int preRelease, final int releaseCandidate) {
208210
this.major = major;
209211
this.minor = minor;
210212
this.patch = patch;
211213
this.revision = revision;
214+
this.snapshotRelease = snapshotRelease;
212215
this.preRelease = preRelease;
213216
this.releaseCandidate = releaseCandidate;
214217
this.snapshot = false;
@@ -217,12 +220,13 @@ private BukkitVersion(final int major, final int minor, final int patch, final d
217220
this.snapshotLetter = '\0';
218221
}
219222

220-
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int preRelease, final int releaseCandidate,
223+
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int snapshotRelease, final int preRelease, final int releaseCandidate,
221224
final boolean snapshot, final int snapshotYear, final int snapshotWeek, final char snapshotLetter) {
222225
this.major = major;
223226
this.minor = minor;
224227
this.patch = patch;
225228
this.revision = revision;
229+
this.snapshotRelease = snapshotRelease;
226230
this.preRelease = preRelease;
227231
this.releaseCandidate = releaseCandidate;
228232
this.snapshot = snapshot;
@@ -237,11 +241,11 @@ public static BukkitVersion fromString(final String string) {
237241
// Try standard release format first
238242
Matcher matcher = VERSION_PATTERN.matcher(string);
239243
if (matcher.matches()) {
240-
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(6), matcher.group(4), matcher.group(5));
244+
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(7), matcher.group(4), matcher.group(5), matcher.group(6));
241245
}
242246

243247
// Try snapshot format (e.g., 25w32a-R0.1-SNAPSHOT)
244-
final Matcher snapshotMatcher = SNAPSHOT_PATTERN.matcher(string);
248+
final Matcher snapshotMatcher = LEGACY_SNAPSHOT_PATTERN.matcher(string);
245249
if (snapshotMatcher.matches()) {
246250
final int year = Integer.parseInt(snapshotMatcher.group(1));
247251
final int week = Integer.parseInt(snapshotMatcher.group(2));
@@ -259,24 +263,26 @@ public static BukkitVersion fromString(final String string) {
259263
}
260264
matcher = VERSION_PATTERN.matcher(v1_16_1_R01.toString());
261265
Preconditions.checkArgument(matcher.matches(), string + " is not in valid version format. e.g. 1.8.8-R0.1");
262-
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(6), matcher.group(4), matcher.group(5));
266+
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(7), matcher.group(4), matcher.group(5), matcher.group(6));
263267
}
264268

265-
private static BukkitVersion from(final String major, final String minor, String patch, String revision, String preRelease, String releaseCandidate) {
269+
private static BukkitVersion from(final String major, final String minor, String patch, String revision, String snapshotRelease, String preRelease, String releaseCandidate) {
266270
if (patch == null || patch.isEmpty()) patch = "0";
267271
if (revision == null || revision.isEmpty()) revision = "0";
272+
if (snapshotRelease == null || snapshotRelease.isEmpty()) snapshotRelease = "-1";
268273
if (preRelease == null || preRelease.isEmpty()) preRelease = "-1";
269274
if (releaseCandidate == null || releaseCandidate.isEmpty()) releaseCandidate = "-1";
270275
return new BukkitVersion(Integer.parseInt(major),
271276
Integer.parseInt(minor),
272277
Integer.parseInt(patch),
273278
Double.parseDouble(revision),
279+
Integer.parseInt(snapshotRelease),
274280
Integer.parseInt(preRelease),
275281
Integer.parseInt(releaseCandidate));
276282
}
277283

278284
private static BukkitVersion fromSnapshot(final int year, final int week, final char letter, final double revision) {
279-
return new BukkitVersion(-1, -1, -1, revision, -1, -1, true, year, week, letter);
285+
return new BukkitVersion(-1, -1, -1, revision, -1, -1, -1, true, year, week, letter);
280286
}
281287

282288
public boolean isHigherThan(final BukkitVersion o) {
@@ -319,6 +325,10 @@ public int getReleaseCandidate() {
319325
return releaseCandidate;
320326
}
321327

328+
public int getSnapshotRelease() {
329+
return snapshotRelease;
330+
}
331+
322332
public boolean isSnapshot() {
323333
return snapshot;
324334
}
@@ -343,15 +353,17 @@ public boolean equals(final Object o) {
343353
minor == that.minor &&
344354
patch == that.patch &&
345355
revision == that.revision &&
346-
preRelease == that.preRelease;
356+
snapshotRelease == that.snapshotRelease &&
357+
preRelease == that.preRelease &&
358+
releaseCandidate == that.releaseCandidate;
347359
}
348360

349361
@Override
350362
public int hashCode() {
351363
if (snapshot) {
352364
return Objects.hashCode("snapshot", snapshotYear, snapshotWeek, snapshotLetter, revision);
353365
}
354-
return Objects.hashCode(major, minor, patch, revision, preRelease, releaseCandidate);
366+
return Objects.hashCode(major, minor, patch, revision, snapshotRelease, preRelease, releaseCandidate);
355367
}
356368

357369
@Override
@@ -363,6 +375,9 @@ public String toString() {
363375
if (patch != 0) {
364376
sb.append(".").append(patch);
365377
}
378+
if (snapshotRelease != -1) {
379+
sb.append("-snapshot-").append(snapshotRelease);
380+
}
366381
if (preRelease != -1) {
367382
sb.append("-pre").append(preRelease);
368383
}
@@ -407,17 +422,23 @@ public int compareTo(final BukkitVersion o) {
407422
} else if (patch > o.patch) {
408423
return 1;
409424
} else { // equal patch
410-
if (preRelease < o.preRelease) {
425+
if (snapshotRelease < o.snapshotRelease) {
411426
return -1;
412-
} else if (preRelease > o.preRelease) {
427+
} else if (snapshotRelease > o.snapshotRelease) {
413428
return 1;
414-
} else { // equal prerelease
415-
if (releaseCandidate < o.releaseCandidate) {
429+
} else { // equal snapshot release
430+
if (preRelease < o.preRelease) {
416431
return -1;
417-
} else if (releaseCandidate > o.releaseCandidate) {
432+
} else if (preRelease > o.preRelease) {
418433
return 1;
419-
} else { // equal release candidate
420-
return Double.compare(revision, o.revision);
434+
} else { // equal prerelease
435+
if (releaseCandidate < o.releaseCandidate) {
436+
return -1;
437+
} else if (releaseCandidate > o.releaseCandidate) {
438+
return 1;
439+
} else { // equal release candidate
440+
return Double.compare(revision, o.revision);
441+
}
421442
}
422443
}
423444
}

Essentials/src/main/resources/items.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8620,6 +8620,12 @@
86208620
"gshirt": "golden_chestplate",
86218621
"gtunic": "golden_chestplate",
86228622
"minecraft:golden_chestplate": "golden_chestplate",
8623+
"golden_dandelion": {
8624+
"name": "golden_dandelion",
8625+
"material": "GOLDEN_DANDELION"
8626+
},
8627+
"goldendandelion": "golden_dandelion",
8628+
"minecraft:golden_dandelion": "golden_dandelion",
86238629
"golden_helmet": {
86248630
"material": "GOLDEN_HELMET"
86258631
},
@@ -50980,4 +50986,4 @@
5098050986
"zpmanmonsterspawner": "zombified_piglin_spawner",
5098150987
"zpmanmspawner": "zombified_piglin_spawner",
5098250988
"zpmanspawner": "zombified_piglin_spawner"
50983-
}
50989+
}

Essentials/src/test/java/com/earth2me/essentials/UtilTest.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,5 +249,57 @@ public void testVer() {
249249
assertEquals(v.getRevision(), 0.1);
250250
assertEquals(v.getPrerelease(), -1);
251251
assertEquals(v.getReleaseCandidate(), 3);
252+
// New versioning format (26.x)
253+
v = VersionUtil.BukkitVersion.fromString("26.1-R0.1-SNAPSHOT");
254+
assertEquals(v.getMajor(), 26);
255+
assertEquals(v.getMinor(), 1);
256+
assertEquals(v.getPatch(), 0);
257+
assertEquals(v.getRevision(), 0.1);
258+
assertEquals(v.getSnapshotRelease(), -1);
259+
assertEquals(v.getPrerelease(), -1);
260+
assertEquals(v.getReleaseCandidate(), -1);
261+
v = VersionUtil.BukkitVersion.fromString("26.1.1-R0.1-SNAPSHOT");
262+
assertEquals(v.getMajor(), 26);
263+
assertEquals(v.getMinor(), 1);
264+
assertEquals(v.getPatch(), 1);
265+
assertEquals(v.getRevision(), 0.1);
266+
assertEquals(v.getSnapshotRelease(), -1);
267+
assertEquals(v.getPrerelease(), -1);
268+
assertEquals(v.getReleaseCandidate(), -1);
269+
v = VersionUtil.BukkitVersion.fromString("26.1-snapshot-11-R0.1-SNAPSHOT");
270+
assertEquals(v.getMajor(), 26);
271+
assertEquals(v.getMinor(), 1);
272+
assertEquals(v.getPatch(), 0);
273+
assertEquals(v.getRevision(), 0.1);
274+
assertEquals(v.getSnapshotRelease(), 11);
275+
assertEquals(v.getPrerelease(), -1);
276+
assertEquals(v.getReleaseCandidate(), -1);
277+
v = VersionUtil.BukkitVersion.fromString("26.1-pre-3-R0.1-SNAPSHOT");
278+
assertEquals(v.getMajor(), 26);
279+
assertEquals(v.getMinor(), 1);
280+
assertEquals(v.getPatch(), 0);
281+
assertEquals(v.getRevision(), 0.1);
282+
assertEquals(v.getSnapshotRelease(), -1);
283+
assertEquals(v.getPrerelease(), 3);
284+
assertEquals(v.getReleaseCandidate(), -1);
285+
v = VersionUtil.BukkitVersion.fromString("26.1-rc-2-R0.1-SNAPSHOT");
286+
assertEquals(v.getMajor(), 26);
287+
assertEquals(v.getMinor(), 1);
288+
assertEquals(v.getPatch(), 0);
289+
assertEquals(v.getRevision(), 0.1);
290+
assertEquals(v.getSnapshotRelease(), -1);
291+
assertEquals(v.getPrerelease(), -1);
292+
assertEquals(v.getReleaseCandidate(), 2);
293+
// Old format versions are always lower than new format versions
294+
assertTrue(VersionUtil.BukkitVersion.fromString("1.21.11-R0.1-SNAPSHOT")
295+
.isLowerThan(VersionUtil.BukkitVersion.fromString("26.1-R0.1-SNAPSHOT")));
296+
assertTrue(VersionUtil.BukkitVersion.fromString("26.1-R0.1-SNAPSHOT")
297+
.isHigherThan(VersionUtil.BukkitVersion.fromString("1.21.11-R0.1-SNAPSHOT")));
298+
assertTrue(VersionUtil.BukkitVersion.fromString("1.21.11-R0.1-SNAPSHOT")
299+
.isLowerThan(VersionUtil.BukkitVersion.fromString("26.1-snapshot-1-R0.1-SNAPSHOT")));
300+
assertTrue(VersionUtil.BukkitVersion.fromString("1.21.11-R0.1-SNAPSHOT")
301+
.isLowerThan(VersionUtil.BukkitVersion.fromString("26.1-pre-1-R0.1-SNAPSHOT")));
302+
assertTrue(VersionUtil.BukkitVersion.fromString("1.21.11-R0.1-SNAPSHOT")
303+
.isLowerThan(VersionUtil.BukkitVersion.fromString("26.1-rc-1-R0.1-SNAPSHOT")));
252304
}
253305
}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ however, have some new requirements:
2626
* **EssentialsX requires CraftBukkit, Spigot or Paper to run.** Other server software may work, but these are not tested
2727
by the team and we may not be able to help with any issues that occur.
2828
* **EssentialsX currently supports Minecraft versions 1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2, 1.13.2, 1.14.4, 1.15.2,
29-
1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.6, and 1.21.11.**
29+
1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.6, 1.21.11, and 26.1.**
3030
* **EssentialsX currently requires Java 8 or higher.** We recommend using the latest Java version supported by your
3131
server software.
3232
* **EssentialsX requires [Vault](http://dev.bukkit.org/bukkit-plugins/vault/) to enable using chat prefix/suffixes and

0 commit comments

Comments
 (0)