Skip to content

Commit

Permalink
Update to 1.21
Browse files Browse the repository at this point in the history
  • Loading branch information
WalshyDev committed Oct 1, 2024
1 parent 0a7fea8 commit c84e876
Show file tree
Hide file tree
Showing 11 changed files with 148 additions and 31 deletions.
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
default: help

.PHONY: help
help:
@echo " * gen-biomes version=<version> - Generate biomes for the given version"

.PHONY: gen-biomes
gen-biomes:
@echo "Generating biomes for $(version)"
@curl "https://raw.githubusercontent.com/MockBukkit/MockBukkit/refs/heads/v$(version)/src/main/resources/keyed/worldgen/biome.json" -s \
| jq '[ .values[].key]' \
> "src/test/resources/biomes/$(version).x.json"
33 changes: 14 additions & 19 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<packaging>jar</packaging>

<!-- Project Info -->
<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>
<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>
<url>https://github.com/Slimefun/Slimefun4</url>

<properties>
Expand All @@ -29,8 +29,8 @@
<maven.compiler.testTarget>21</maven.compiler.testTarget>

<!-- Spigot properties -->
<spigot.version>1.20.6</spigot.version>
<spigot.javadocs>https://hub.spigotmc.org/javadocs/spigot/</spigot.javadocs>
<paper.version>1.21.1</paper.version>
<paper.javadocs>https://hub.spigotmc.org/javadocs/spigot/</paper.javadocs>

<!-- Default settings for sonarcloud.io -->
<sonar.projectKey>Slimefun_Slimefun4</sonar.projectKey>
Expand Down Expand Up @@ -238,7 +238,7 @@
<!-- Javadocs -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.7.0</version>
<version>3.10.0</version>

<configuration>
<reportOutputDirectory>${project.basedir}</reportOutputDirectory>
Expand All @@ -251,7 +251,7 @@

<links>
<!-- We can reference the Spigot API in our Javadocs -->
<link>${spigot.javadocs}</link>
<link>${paper.javadocs}</link>
</links>

<!-- We can group packages together in our Javadocs -->
Expand Down Expand Up @@ -367,6 +367,14 @@
<scope>compile</scope>
</dependency>

<!-- Paper -->
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>${paper.version}-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>

<!-- Testing dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
Expand All @@ -389,7 +397,7 @@
<dependency>
<groupId>com.github.MockBukkit</groupId>
<artifactId>MockBukkit</artifactId>
<version>c7cc678834</version>
<version>v3.130.2</version>
<scope>test</scope>

<exclusions>
Expand All @@ -401,13 +409,6 @@
</exclusion>
</exclusions>
</dependency>
<!-- Override Spigot with Paper tests as a CommandMap ctor which MockBukkit uses only exists on Paper but not in Spigot -->
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.20.6-R0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>

<!-- Third party plugin integrations / soft dependencies -->
<dependency>
Expand Down Expand Up @@ -515,12 +516,6 @@
<version>2.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>${spigot.version}-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.mojang</groupId>
<artifactId>authlib</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ public enum MinecraftVersion {
*/
MINECRAFT_1_20_5(20, 5, "1.20.5+"),

/**
* This constant represents Minecraft (Java Edition) Version 1.21
* ("Tricky Trials")
*/
MINECRAFT_1_21(21, 0, "1.21.x"),

/**
* This constant represents an exceptional state in which we were unable
* to identify the Minecraft Version we are using
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ public void lock() {

@Override
public ItemStack clone() {
return new SlimefunItemStack(id, this);
return new SlimefunItemStack(id, super.clone());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public EnchantmentRune(ItemGroup itemGroup, SlimefunItemStack item, RecipeType r
super(itemGroup, item, recipeType, recipe);

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

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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package io.github.thebusybiscuit.slimefun4.implementation.items.tools;

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;

import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;

import dev.lone.itemsadder.api.CustomBlock;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.ExplosionResult;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
Expand All @@ -17,6 +20,7 @@
import org.bukkit.inventory.ItemStack;

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

private static Constructor<?> pre21ExplodeEventConstructor;
static {
if (Slimefun.getMinecraftVersion().isBefore(MinecraftVersion.MINECRAFT_1_21)) {
try {
pre21ExplodeEventConstructor = BlockExplodeEvent.class.getConstructor(Block.class, List.class, float.class);
} catch (Exception e) {
Slimefun.logger().log(Level.SEVERE, "Could not find constructor for BlockExplodeEvent", e);
}
}
}

@ParametersAreNonnullByDefault
public ExplosiveTool(ItemGroup itemGroup, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(itemGroup, item, recipeType, recipe);
Expand Down Expand Up @@ -78,7 +93,7 @@ private void breakBlocks(BlockBreakEvent e, Player p, ItemStack item, Block b, L
List<Block> blocksToDestroy = new ArrayList<>();

if (callExplosionEvent.getValue()) {
BlockExplodeEvent blockExplodeEvent = new BlockExplodeEvent(b, blocks, 0);
BlockExplodeEvent blockExplodeEvent = createNewBlockExplodeEvent(b, blocks, 0);
Bukkit.getServer().getPluginManager().callEvent(blockExplodeEvent);

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

private BlockExplodeEvent createNewBlockExplodeEvent(
Block block,
List<Block> blocks,
float yield
) {
var version = Slimefun.getMinecraftVersion();
if (version.isAtLeast(MinecraftVersion.MINECRAFT_1_21)) {
return new BlockExplodeEvent(block, block.getState(), blocks, yield, ExplosionResult.DESTROY);
} else if (pre21ExplodeEventConstructor != null) {
try {
return (BlockExplodeEvent) pre21ExplodeEventConstructor.newInstance(block, blocks, yield);
} catch (Exception e) {
Slimefun.logger().log(Level.SEVERE, "Could not find constructor for BlockExplodeEvent", e);
}

return null;
} else {
throw new IllegalStateException("BlockExplodeEvent constructor not found");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import io.github.bakedlibs.dough.items.CustomItemStack;
import io.github.thebusybiscuit.slimefun4.api.exceptions.UnregisteredItemException;
Expand Down Expand Up @@ -110,7 +108,7 @@ void testRecipeType() {
void testIsItem() {
ItemStack item = new CustomItemStack(Material.BEACON, "&cItem Test");
String id = "IS_ITEM_TEST";
SlimefunItem sfItem = TestUtilities.mockSlimefunItem(plugin, id, item);
SlimefunItem sfItem = TestUtilities.mockSlimefunItem(plugin, id, new CustomItemStack(Material.BEACON, "&cItem Test"));
sfItem.register(plugin);

Assertions.assertTrue(sfItem.isItem(sfItem.getItem()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
MinecraftVersion.MINECRAFT_1_17,
MinecraftVersion.MINECRAFT_1_18,
MinecraftVersion.MINECRAFT_1_19,
MinecraftVersion.MINECRAFT_1_20
MinecraftVersion.MINECRAFT_1_20,
MinecraftVersion.MINECRAFT_1_21
});

testCases.put("oil_v1.16", new MinecraftVersion[] {
Expand All @@ -117,7 +118,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
testCases.put("oil_v1.18", new MinecraftVersion[] {
MinecraftVersion.MINECRAFT_1_18,
MinecraftVersion.MINECRAFT_1_19,
MinecraftVersion.MINECRAFT_1_20
MinecraftVersion.MINECRAFT_1_20,
MinecraftVersion.MINECRAFT_1_21
});

testCases.put("salt_v1.16", new MinecraftVersion[] {
Expand All @@ -128,7 +130,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
testCases.put("salt_v1.18", new MinecraftVersion[] {
MinecraftVersion.MINECRAFT_1_18,
MinecraftVersion.MINECRAFT_1_19,
MinecraftVersion.MINECRAFT_1_20
MinecraftVersion.MINECRAFT_1_20,
MinecraftVersion.MINECRAFT_1_21
});

testCases.put("uranium_v1.16", new MinecraftVersion[] {
Expand All @@ -142,7 +145,8 @@ void testCompatibilities(String name, MinecraftVersion version) {
testCases.put("uranium_v1.18", new MinecraftVersion[] {
MinecraftVersion.MINECRAFT_1_18,
MinecraftVersion.MINECRAFT_1_19,
MinecraftVersion.MINECRAFT_1_20
MinecraftVersion.MINECRAFT_1_20,
MinecraftVersion.MINECRAFT_1_21
});
// @formatter:on

Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/biomes/1.20.5+.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,5 @@
"minecraft:jagged_peaks",
"minecraft:stony_peaks",
"minecraft:cherry_grove",
"minecraft:custom",
"minecraft:custom"
]
2 changes: 1 addition & 1 deletion src/test/resources/biomes/1.20.x.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,5 @@
"minecraft:jagged_peaks",
"minecraft:stony_peaks",
"minecraft:cherry_grove",
"minecraft:custom",
"minecraft:custom"
]
67 changes: 67 additions & 0 deletions src/test/resources/biomes/1.21.x.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
[
"minecraft:badlands",
"minecraft:bamboo_jungle",
"minecraft:basalt_deltas",
"minecraft:beach",
"minecraft:birch_forest",
"minecraft:cherry_grove",
"minecraft:cold_ocean",
"minecraft:crimson_forest",
"minecraft:custom",
"minecraft:dark_forest",
"minecraft:deep_cold_ocean",
"minecraft:deep_dark",
"minecraft:deep_frozen_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_ocean",
"minecraft:desert",
"minecraft:dripstone_caves",
"minecraft:end_barrens",
"minecraft:end_highlands",
"minecraft:end_midlands",
"minecraft:eroded_badlands",
"minecraft:flower_forest",
"minecraft:forest",
"minecraft:frozen_ocean",
"minecraft:frozen_peaks",
"minecraft:frozen_river",
"minecraft:grove",
"minecraft:ice_spikes",
"minecraft:jagged_peaks",
"minecraft:jungle",
"minecraft:lukewarm_ocean",
"minecraft:lush_caves",
"minecraft:mangrove_swamp",
"minecraft:meadow",
"minecraft:mushroom_fields",
"minecraft:nether_wastes",
"minecraft:ocean",
"minecraft:old_growth_birch_forest",
"minecraft:old_growth_pine_taiga",
"minecraft:old_growth_spruce_taiga",
"minecraft:plains",
"minecraft:river",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:small_end_islands",
"minecraft:snowy_beach",
"minecraft:snowy_plains",
"minecraft:snowy_slopes",
"minecraft:snowy_taiga",
"minecraft:soul_sand_valley",
"minecraft:sparse_jungle",
"minecraft:stony_peaks",
"minecraft:stony_shore",
"minecraft:sunflower_plains",
"minecraft:swamp",
"minecraft:taiga",
"minecraft:the_end",
"minecraft:the_void",
"minecraft:warm_ocean",
"minecraft:warped_forest",
"minecraft:windswept_forest",
"minecraft:windswept_gravelly_hills",
"minecraft:windswept_hills",
"minecraft:windswept_savanna",
"minecraft:wooded_badlands"
]

0 comments on commit c84e876

Please sign in to comment.