Skip to content

Commit c84e876

Browse files
committed
Update to 1.21
1 parent 0a7fea8 commit c84e876

File tree

11 files changed

+148
-31
lines changed

11 files changed

+148
-31
lines changed

Makefile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
default: help
2+
3+
.PHONY: help
4+
help:
5+
@echo " * gen-biomes version=<version> - Generate biomes for the given version"
6+
7+
.PHONY: gen-biomes
8+
gen-biomes:
9+
@echo "Generating biomes for $(version)"
10+
@curl "https://raw.githubusercontent.com/MockBukkit/MockBukkit/refs/heads/v$(version)/src/main/resources/keyed/worldgen/biome.json" -s \
11+
| jq '[ .values[].key]' \
12+
> "src/test/resources/biomes/$(version).x.json"

pom.xml

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<packaging>jar</packaging>
1515

1616
<!-- Project Info -->
17-
<description>Slimefun is a Spigot/Paper plugin that simulates a modpack-like atmosphere by adding over 500 new items and recipes to your Minecraft Server.</description>
17+
<description>Slimefun is a Paper plugin that simulates a modpack-like atmosphere by adding over 500 new items and recipes to your Minecraft Server.</description>
1818
<url>https://github.com/Slimefun/Slimefun4</url>
1919

2020
<properties>
@@ -29,8 +29,8 @@
2929
<maven.compiler.testTarget>21</maven.compiler.testTarget>
3030

3131
<!-- Spigot properties -->
32-
<spigot.version>1.20.6</spigot.version>
33-
<spigot.javadocs>https://hub.spigotmc.org/javadocs/spigot/</spigot.javadocs>
32+
<paper.version>1.21.1</paper.version>
33+
<paper.javadocs>https://hub.spigotmc.org/javadocs/spigot/</paper.javadocs>
3434

3535
<!-- Default settings for sonarcloud.io -->
3636
<sonar.projectKey>Slimefun_Slimefun4</sonar.projectKey>
@@ -238,7 +238,7 @@
238238
<!-- Javadocs -->
239239
<groupId>org.apache.maven.plugins</groupId>
240240
<artifactId>maven-javadoc-plugin</artifactId>
241-
<version>3.7.0</version>
241+
<version>3.10.0</version>
242242

243243
<configuration>
244244
<reportOutputDirectory>${project.basedir}</reportOutputDirectory>
@@ -251,7 +251,7 @@
251251

252252
<links>
253253
<!-- We can reference the Spigot API in our Javadocs -->
254-
<link>${spigot.javadocs}</link>
254+
<link>${paper.javadocs}</link>
255255
</links>
256256

257257
<!-- We can group packages together in our Javadocs -->
@@ -367,6 +367,14 @@
367367
<scope>compile</scope>
368368
</dependency>
369369

370+
<!-- Paper -->
371+
<dependency>
372+
<groupId>io.papermc.paper</groupId>
373+
<artifactId>paper-api</artifactId>
374+
<version>${paper.version}-R0.1-SNAPSHOT</version>
375+
<scope>provided</scope>
376+
</dependency>
377+
370378
<!-- Testing dependencies -->
371379
<dependency>
372380
<groupId>org.junit.jupiter</groupId>
@@ -389,7 +397,7 @@
389397
<dependency>
390398
<groupId>com.github.MockBukkit</groupId>
391399
<artifactId>MockBukkit</artifactId>
392-
<version>c7cc678834</version>
400+
<version>v3.130.2</version>
393401
<scope>test</scope>
394402

395403
<exclusions>
@@ -401,13 +409,6 @@
401409
</exclusion>
402410
</exclusions>
403411
</dependency>
404-
<!-- Override Spigot with Paper tests as a CommandMap ctor which MockBukkit uses only exists on Paper but not in Spigot -->
405-
<dependency>
406-
<groupId>io.papermc.paper</groupId>
407-
<artifactId>paper-api</artifactId>
408-
<version>1.20.6-R0.1-SNAPSHOT</version>
409-
<scope>test</scope>
410-
</dependency>
411412

412413
<!-- Third party plugin integrations / soft dependencies -->
413414
<dependency>
@@ -515,12 +516,6 @@
515516
<version>2.6</version>
516517
<scope>compile</scope>
517518
</dependency>
518-
<dependency>
519-
<groupId>org.spigotmc</groupId>
520-
<artifactId>spigot-api</artifactId>
521-
<version>${spigot.version}-R0.1-SNAPSHOT</version>
522-
<scope>provided</scope>
523-
</dependency>
524519
<dependency>
525520
<groupId>com.mojang</groupId>
526521
<artifactId>authlib</artifactId>

src/main/java/io/github/thebusybiscuit/slimefun4/api/MinecraftVersion.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ public enum MinecraftVersion {
5555
*/
5656
MINECRAFT_1_20_5(20, 5, "1.20.5+"),
5757

58+
/**
59+
* This constant represents Minecraft (Java Edition) Version 1.21
60+
* ("Tricky Trials")
61+
*/
62+
MINECRAFT_1_21(21, 0, "1.21.x"),
63+
5864
/**
5965
* This constant represents an exceptional state in which we were unable
6066
* to identify the Minecraft Version we are using

src/main/java/io/github/thebusybiscuit/slimefun4/api/items/SlimefunItemStack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ public void lock() {
307307

308308
@Override
309309
public ItemStack clone() {
310-
return new SlimefunItemStack(id, this);
310+
return new SlimefunItemStack(id, super.clone());
311311
}
312312

313313
@Override

src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/runes/EnchantmentRune.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public EnchantmentRune(ItemGroup itemGroup, SlimefunItemStack item, RecipeType r
5050
super(itemGroup, item, recipeType, recipe);
5151

5252
for (Material mat : Material.values()) {
53-
if (Slimefun.instance().isUnitTest() && mat.isLegacy()) continue;
53+
if (mat.isLegacy() || !mat.isItem()) continue;
5454

5555
List<Enchantment> enchantments = new ArrayList<>();
5656

src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/tools/ExplosiveTool.java

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package io.github.thebusybiscuit.slimefun4.implementation.items.tools;
22

3+
import java.lang.reflect.Constructor;
34
import java.util.ArrayList;
45
import java.util.List;
6+
import java.util.logging.Level;
57

68
import javax.annotation.Nonnull;
79
import javax.annotation.ParametersAreNonnullByDefault;
810

911
import dev.lone.itemsadder.api.CustomBlock;
1012
import org.bukkit.Bukkit;
1113
import org.bukkit.Effect;
14+
import org.bukkit.ExplosionResult;
1215
import org.bukkit.Material;
1316
import org.bukkit.block.Block;
1417
import org.bukkit.entity.Player;
@@ -17,6 +20,7 @@
1720
import org.bukkit.inventory.ItemStack;
1821

1922
import io.github.bakedlibs.dough.protection.Interaction;
23+
import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion;
2024
import io.github.thebusybiscuit.slimefun4.api.events.ExplosiveToolBreakBlocksEvent;
2125
import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup;
2226
import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting;
@@ -48,6 +52,17 @@ public class ExplosiveTool extends SimpleSlimefunItem<ToolUseHandler> implements
4852
private final ItemSetting<Boolean> damageOnUse = new ItemSetting<>(this, "damage-on-use", true);
4953
private final ItemSetting<Boolean> callExplosionEvent = new ItemSetting<>(this, "call-explosion-event", false);
5054

55+
private static Constructor<?> pre21ExplodeEventConstructor;
56+
static {
57+
if (Slimefun.getMinecraftVersion().isBefore(MinecraftVersion.MINECRAFT_1_21)) {
58+
try {
59+
pre21ExplodeEventConstructor = BlockExplodeEvent.class.getConstructor(Block.class, List.class, float.class);
60+
} catch (Exception e) {
61+
Slimefun.logger().log(Level.SEVERE, "Could not find constructor for BlockExplodeEvent", e);
62+
}
63+
}
64+
}
65+
5166
@ParametersAreNonnullByDefault
5267
public ExplosiveTool(ItemGroup itemGroup, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
5368
super(itemGroup, item, recipeType, recipe);
@@ -78,7 +93,7 @@ private void breakBlocks(BlockBreakEvent e, Player p, ItemStack item, Block b, L
7893
List<Block> blocksToDestroy = new ArrayList<>();
7994

8095
if (callExplosionEvent.getValue()) {
81-
BlockExplodeEvent blockExplodeEvent = new BlockExplodeEvent(b, blocks, 0);
96+
BlockExplodeEvent blockExplodeEvent = createNewBlockExplodeEvent(b, blocks, 0);
8297
Bukkit.getServer().getPluginManager().callEvent(blockExplodeEvent);
8398

8499
if (!blockExplodeEvent.isCancelled()) {
@@ -186,4 +201,24 @@ private void breakBlock(BlockBreakEvent e, Player p, ItemStack item, Block b, Li
186201
damageItem(p, item);
187202
}
188203

204+
private BlockExplodeEvent createNewBlockExplodeEvent(
205+
Block block,
206+
List<Block> blocks,
207+
float yield
208+
) {
209+
var version = Slimefun.getMinecraftVersion();
210+
if (version.isAtLeast(MinecraftVersion.MINECRAFT_1_21)) {
211+
return new BlockExplodeEvent(block, block.getState(), blocks, yield, ExplosionResult.DESTROY);
212+
} else if (pre21ExplodeEventConstructor != null) {
213+
try {
214+
return (BlockExplodeEvent) pre21ExplodeEventConstructor.newInstance(block, blocks, yield);
215+
} catch (Exception e) {
216+
Slimefun.logger().log(Level.SEVERE, "Could not find constructor for BlockExplodeEvent", e);
217+
}
218+
219+
return null;
220+
} else {
221+
throw new IllegalStateException("BlockExplodeEvent constructor not found");
222+
}
223+
}
189224
}

src/test/java/io/github/thebusybiscuit/slimefun4/implementation/items/TestSlimefunItem.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import org.junit.jupiter.api.BeforeAll;
1010
import org.junit.jupiter.api.DisplayName;
1111
import org.junit.jupiter.api.Test;
12-
import org.junit.jupiter.params.ParameterizedTest;
13-
import org.junit.jupiter.params.provider.ValueSource;
1412

1513
import io.github.bakedlibs.dough.items.CustomItemStack;
1614
import io.github.thebusybiscuit.slimefun4.api.exceptions.UnregisteredItemException;
@@ -110,7 +108,7 @@ void testRecipeType() {
110108
void testIsItem() {
111109
ItemStack item = new CustomItemStack(Material.BEACON, "&cItem Test");
112110
String id = "IS_ITEM_TEST";
113-
SlimefunItem sfItem = TestUtilities.mockSlimefunItem(plugin, id, item);
111+
SlimefunItem sfItem = TestUtilities.mockSlimefunItem(plugin, id, new CustomItemStack(Material.BEACON, "&cItem Test"));
114112
sfItem.register(plugin);
115113

116114
Assertions.assertTrue(sfItem.isItem(sfItem.getItem()));

src/test/java/io/github/thebusybiscuit/slimefun4/utils/biomes/TestBiomeMapCompatibility.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
106106
MinecraftVersion.MINECRAFT_1_17,
107107
MinecraftVersion.MINECRAFT_1_18,
108108
MinecraftVersion.MINECRAFT_1_19,
109-
MinecraftVersion.MINECRAFT_1_20
109+
MinecraftVersion.MINECRAFT_1_20,
110+
MinecraftVersion.MINECRAFT_1_21
110111
});
111112

112113
testCases.put("oil_v1.16", new MinecraftVersion[] {
@@ -117,7 +118,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
117118
testCases.put("oil_v1.18", new MinecraftVersion[] {
118119
MinecraftVersion.MINECRAFT_1_18,
119120
MinecraftVersion.MINECRAFT_1_19,
120-
MinecraftVersion.MINECRAFT_1_20
121+
MinecraftVersion.MINECRAFT_1_20,
122+
MinecraftVersion.MINECRAFT_1_21
121123
});
122124

123125
testCases.put("salt_v1.16", new MinecraftVersion[] {
@@ -128,7 +130,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
128130
testCases.put("salt_v1.18", new MinecraftVersion[] {
129131
MinecraftVersion.MINECRAFT_1_18,
130132
MinecraftVersion.MINECRAFT_1_19,
131-
MinecraftVersion.MINECRAFT_1_20
133+
MinecraftVersion.MINECRAFT_1_20,
134+
MinecraftVersion.MINECRAFT_1_21
132135
});
133136

134137
testCases.put("uranium_v1.16", new MinecraftVersion[] {
@@ -142,7 +145,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
142145
testCases.put("uranium_v1.18", new MinecraftVersion[] {
143146
MinecraftVersion.MINECRAFT_1_18,
144147
MinecraftVersion.MINECRAFT_1_19,
145-
MinecraftVersion.MINECRAFT_1_20
148+
MinecraftVersion.MINECRAFT_1_20,
149+
MinecraftVersion.MINECRAFT_1_21
146150
});
147151
// @formatter:on
148152

src/test/resources/biomes/1.20.5+.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,5 @@
6363
"minecraft:jagged_peaks",
6464
"minecraft:stony_peaks",
6565
"minecraft:cherry_grove",
66-
"minecraft:custom",
66+
"minecraft:custom"
6767
]

src/test/resources/biomes/1.20.x.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,5 @@
6363
"minecraft:jagged_peaks",
6464
"minecraft:stony_peaks",
6565
"minecraft:cherry_grove",
66-
"minecraft:custom",
66+
"minecraft:custom"
6767
]

0 commit comments

Comments
 (0)