Skip to content

Commit fb62d6e

Browse files
Release 1.2.0 (#43)
2 parents ff390ea + 206ec15 commit fb62d6e

File tree

71 files changed

+1655
-435
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1655
-435
lines changed

.github/badges/branches.svg

Lines changed: 1 addition & 1 deletion
Loading

.github/badges/jacoco.svg

Lines changed: 1 addition & 1 deletion
Loading

1.16-testing/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ dependencies {
77
implementation("com.destroystokyo.paper:paper-api:1.16.5-R0.1-20211218.081530-231")
88
testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
99
testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-toml")
10-
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.2")
10+
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
1111
testImplementation("org.assertj:assertj-core:3.24.2")
1212
implementation(project(":testing"))
1313
testImplementation("com.github.seeseemelk", "MockBukkit-v1.19", "2.29.0")

1.16-testing/src/test/java/de/eldoria/jacksonbukkit/legacy/LegacyTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
package de.eldoria.jacksonbukkit.legacy;
77

8-
import de.eldoria.jacksonbukkit.serializer.PotionEffectSerializer;
8+
import de.eldoria.jacksonbukkit.serializer.PotionEffectTypeSerializer;
99
import org.junit.jupiter.api.Test;
1010

1111
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -14,7 +14,7 @@ public class LegacyTest {
1414

1515
@Test
1616
public void testLegacyPotion() {
17-
assertTrue(PotionEffectSerializer.LEGACY);
17+
assertTrue(PotionEffectTypeSerializer.LEGACY);
1818
}
1919

2020
}

Readme.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ repositories {
5656

5757
dependencies {
5858
// Spigot server
59-
implementation("de.eldoria.jacksonbukkit", "spigot", "version")
59+
implementation("de.eldoria.jacksonbukkit", "bukkit", "version")
6060
// Paper server
6161
implementation("de.eldoria.jacksonbukkit", "paper", "version")
6262
}
@@ -157,7 +157,7 @@ We support all classes implementing `ConfigurationSerializable`. To be precise w
157157
- Vector
158158
- BlockVector
159159
- Color (Can be serialized as object or as hex string)
160-
- ItemStack (Serialized as map for `JacksonBukkit`. Serialized as Base64 encoded bytes for `JacksonPaper`, when possible)
160+
- ItemStack (Serialized as map for `Bukkit/Spigot`. Serialized as Base64 encoded bytes for `Paper`, when possible)
161161
- PotionEffect
162162
- FireworkEffect
163163
- Pattern
@@ -170,3 +170,7 @@ We support all classes implementing `ConfigurationSerializable`. To be precise w
170170
- NamespacedKey
171171
- OfflinePlayer
172172
- Components (Paper only as MiniMessage string)
173+
- ShapedRecipe
174+
- ShapelessRecipe
175+
- Enchantment
176+
- PotionEffectType

build.gradle.kts

Lines changed: 43 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import com.diffplug.gradle.spotless.SpotlessPlugin
22
import de.chojo.PublishData
3-
import org.gradle.internal.impldep.org.apache.commons.codec.CharEncoding
43

54
plugins {
65
java
76
`maven-publish`
87
`java-library`
9-
id("com.diffplug.spotless") version "6.17.0"
8+
id("com.diffplug.spotless") version "6.19.0"
109
id("de.chojo.publishdata") version "1.2.4"
1110
jacoco
1211
}
1312

1413
group = "de.eldoria.jacksonbukkit"
15-
version = "1.1.1"
14+
version = "1.2.0"
1615

1716
val publicProjects = setOf("core", "bukkit", "paper", "jackson-bukkit")
1817

@@ -40,7 +39,7 @@ allprojects {
4039
dependencies {
4140
api("org.jetbrains", "annotations", "24.0.1")
4241

43-
api(platform("com.fasterxml.jackson:jackson-bom:2.14.2"))
42+
api(platform("com.fasterxml.jackson:jackson-bom:2.15.2"))
4443
api("com.fasterxml.jackson.core", "jackson-core")
4544
api("com.fasterxml.jackson.core:jackson-databind")
4645

@@ -50,9 +49,9 @@ allprojects {
5049
testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-toml")
5150

5251
// junit and stuff
53-
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.2")
54-
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.2")
55-
testImplementation("org.mockito:mockito-core:5.2.0")
52+
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
53+
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.3")
54+
testImplementation("org.mockito:mockito-core:5.3.1")
5655
testImplementation("org.assertj:assertj-core:3.24.2")
5756
}
5857

@@ -71,51 +70,11 @@ allprojects {
7170
}
7271
}
7372

74-
75-
7673
jacoco {
77-
toolVersion = "0.8.8"
78-
}
79-
80-
81-
tasks.test {
82-
finalizedBy(tasks.jacocoTestReport)
74+
toolVersion = "0.8.10"
8375
}
84-
tasks.jacocoTestReport {
85-
dependsOn(tasks.test)
86-
}
87-
tasks.jacocoTestReport {
88-
reports {
89-
xml.required.set(false)
90-
csv.required.set(true)
91-
html.required.set(false)
92-
}
93-
}
94-
9576

9677

97-
tasks.jacocoTestCoverageVerification {
98-
violationRules {
99-
rule {
100-
limit {
101-
minimum = "0.8".toBigDecimal()
102-
}
103-
}
104-
105-
rule {
106-
isEnabled = false
107-
element = "CLASS"
108-
includes = listOf("org.gradle.*")
109-
110-
limit {
111-
counter = "LINE"
112-
value = "TOTALCOUNT"
113-
maximum = "0.8".toBigDecimal()
114-
}
115-
}
116-
}
117-
}
118-
11978
publishData {
12079
useEldoNexusRepos()
12180
publishComponent("java")
@@ -175,11 +134,46 @@ allprojects {
175134
}
176135

177136
test {
137+
finalizedBy(jacocoTestReport)
178138
useJUnitPlatform()
179139
testLogging {
180140
events("passed", "skipped", "failed")
181141
}
182142
}
143+
144+
jacocoTestReport {
145+
dependsOn(test)
146+
}
147+
148+
jacocoTestReport {
149+
reports {
150+
xml.required.set(false)
151+
csv.required.set(true)
152+
html.required.set(false)
153+
}
154+
}
155+
156+
jacocoTestCoverageVerification {
157+
violationRules {
158+
rule {
159+
limit {
160+
minimum = "0.8".toBigDecimal()
161+
}
162+
}
163+
164+
rule {
165+
isEnabled = false
166+
element = "CLASS"
167+
includes = listOf("org.gradle.*")
168+
169+
limit {
170+
counter = "LINE"
171+
value = "TOTALCOUNT"
172+
maximum = "0.8".toBigDecimal()
173+
}
174+
}
175+
}
176+
}
183177
}
184178
}
185179

@@ -196,15 +190,13 @@ fun applyJavaDocOptions(options: MinimalJavadocOptions) {
196190
)
197191
}
198192

199-
200193
tasks {
201194
register<Javadoc>("allJavadocs") {
202195
applyJavaDocOptions(options)
203196

204-
setDestinationDir(file("${buildDir}/docs/javadoc"))
197+
destinationDir = file("${buildDir}/docs/javadoc")
205198
val projects = project.rootProject.allprojects.filter { p -> publicProjects.contains(p.name) }
206199
setSource(projects.map { p -> p.sourceSets.main.get().allJava })
207200
classpath = files(projects.map { p -> p.sourceSets.main.get().compileClasspath })
208201
}
209202
}
210-

core/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
dependencies {
2-
compileOnly("org.spigotmc", "spigot-api", "1.19.2-R0.1-SNAPSHOT")
2+
compileOnly("org.spigotmc", "spigot-api", "1.20-R0.1-SNAPSHOT")
3+
testImplementation("org.spigotmc", "spigot-api", "1.20-R0.1-SNAPSHOT")
4+
testImplementation("com.github.seeseemelk", "MockBukkit-v1.19", "2.29.0")
35
testImplementation(project(":bukkit"))
46
testImplementation(project(":testing"))
57
testImplementation("org.spigotmc", "spigot-api", "1.19.2-R0.1-SNAPSHOT")
68
testImplementation("com.github.seeseemelk", "MockBukkit-v1.19", "2.29.0")
7-
89
}

core/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkitModule.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,36 @@
1212
import de.eldoria.jacksonbukkit.deserializer.AttributeModifierDeserializer;
1313
import de.eldoria.jacksonbukkit.deserializer.BlockVectorDeserializer;
1414
import de.eldoria.jacksonbukkit.deserializer.BoundingBoxDeserializer;
15+
import de.eldoria.jacksonbukkit.deserializer.ExactChoiceDeserializer;
16+
import de.eldoria.jacksonbukkit.serializer.EnchantmentSerializer;
1517
import de.eldoria.jacksonbukkit.deserializer.FireworkEffectDeserializer;
1618
import de.eldoria.jacksonbukkit.deserializer.LocationDeserializer;
19+
import de.eldoria.jacksonbukkit.deserializer.MaterialChoiceDeserializer;
1720
import de.eldoria.jacksonbukkit.deserializer.NamespacedKeyDeserializer;
1821
import de.eldoria.jacksonbukkit.deserializer.PatternDeserializer;
1922
import de.eldoria.jacksonbukkit.deserializer.PlayerDeserializer;
2023
import de.eldoria.jacksonbukkit.deserializer.PotionEffectDeserializer;
24+
import de.eldoria.jacksonbukkit.deserializer.PotionEffectTypeDeserializer;
2125
import de.eldoria.jacksonbukkit.deserializer.RGBColorDeserializer;
26+
import de.eldoria.jacksonbukkit.deserializer.ShapedRecipeDeserializer;
27+
import de.eldoria.jacksonbukkit.deserializer.ShapelessRecipeDeserializer;
2228
import de.eldoria.jacksonbukkit.deserializer.VectorDeserializer;
2329
import de.eldoria.jacksonbukkit.serializer.AttributeModifierSerializer;
2430
import de.eldoria.jacksonbukkit.serializer.BlockVectorSerializer;
2531
import de.eldoria.jacksonbukkit.serializer.BoundingBoxSerializer;
32+
import de.eldoria.jacksonbukkit.serializer.ExactChoiceSerializer;
33+
import de.eldoria.jacksonbukkit.deserializer.EnchantmentDeserializer;
2634
import de.eldoria.jacksonbukkit.serializer.FireworkEffectSerializer;
2735
import de.eldoria.jacksonbukkit.serializer.LocationSerializer;
36+
import de.eldoria.jacksonbukkit.serializer.MaterialChoiceSerializer;
2837
import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
2938
import de.eldoria.jacksonbukkit.serializer.PatternSerializer;
3039
import de.eldoria.jacksonbukkit.serializer.PlayerSerializer;
3140
import de.eldoria.jacksonbukkit.serializer.PotionEffectSerializer;
41+
import de.eldoria.jacksonbukkit.serializer.PotionEffectTypeSerializer;
3242
import de.eldoria.jacksonbukkit.serializer.RGBColorSerializer;
43+
import de.eldoria.jacksonbukkit.serializer.ShapedRecipeSerializer;
44+
import de.eldoria.jacksonbukkit.serializer.ShapelessRecipeSerializer;
3345
import de.eldoria.jacksonbukkit.serializer.VectorSerializer;
3446
import org.bukkit.Color;
3547
import org.bukkit.FireworkEffect;
@@ -38,7 +50,13 @@
3850
import org.bukkit.OfflinePlayer;
3951
import org.bukkit.attribute.AttributeModifier;
4052
import org.bukkit.block.banner.Pattern;
53+
import org.bukkit.inventory.RecipeChoice.ExactChoice;
54+
import org.bukkit.inventory.RecipeChoice.MaterialChoice;
55+
import org.bukkit.inventory.ShapedRecipe;
56+
import org.bukkit.inventory.ShapelessRecipe;
57+
import org.bukkit.enchantments.Enchantment;
4158
import org.bukkit.potion.PotionEffect;
59+
import org.bukkit.potion.PotionEffectType;
4260
import org.bukkit.util.BlockVector;
4361
import org.bukkit.util.BoundingBox;
4462
import org.bukkit.util.Vector;
@@ -93,13 +111,19 @@ protected final void addSerializer(SimpleSerializers serializers) {
93111
serializers.addSerializer(BlockVector.class, new BlockVectorSerializer());
94112
serializers.addSerializer(NamespacedKey.class, new NamespacedKeySerializer());
95113
serializers.addSerializer(PotionEffect.class, new PotionEffectSerializer());
114+
serializers.addSerializer(PotionEffectType.class, new PotionEffectTypeSerializer());
96115
serializers.addSerializer(FireworkEffect.class, new FireworkEffectSerializer());
97116
serializers.addSerializer(Pattern.class, new PatternSerializer());
98117
serializers.addSerializer(BoundingBox.class, new BoundingBoxSerializer());
118+
serializers.addSerializer(Enchantment.class, new EnchantmentSerializer());
99119
serializers.addSerializer(AttributeModifier.class, new AttributeModifierSerializer());
100120
serializers.addSerializer(Location.class, new LocationSerializer());
101121
serializers.addSerializer(OfflinePlayer.class, new PlayerSerializer());
102122
serializers.addSerializer(Color.class, new RGBColorSerializer());
123+
serializers.addSerializer(ExactChoice.class, new ExactChoiceSerializer());
124+
serializers.addSerializer(MaterialChoice.class, new MaterialChoiceSerializer());
125+
serializers.addSerializer(ShapedRecipe.class, new ShapedRecipeSerializer());
126+
serializers.addSerializer(ShapelessRecipe.class, new ShapelessRecipeSerializer());
103127
registerSerializer(serializers);
104128
}
105129

@@ -122,13 +146,19 @@ protected final void addDeserializer(SimpleDeserializers deserializers) {
122146
deserializers.addDeserializer(BlockVector.class, new BlockVectorDeserializer());
123147
deserializers.addDeserializer(NamespacedKey.class, new NamespacedKeyDeserializer());
124148
deserializers.addDeserializer(PotionEffect.class, new PotionEffectDeserializer());
149+
deserializers.addDeserializer(PotionEffectType.class, new PotionEffectTypeDeserializer());
125150
deserializers.addDeserializer(FireworkEffect.class, new FireworkEffectDeserializer());
126151
deserializers.addDeserializer(Pattern.class, new PatternDeserializer());
127152
deserializers.addDeserializer(BoundingBox.class, new BoundingBoxDeserializer());
153+
deserializers.addDeserializer(Enchantment.class, new EnchantmentDeserializer());
128154
deserializers.addDeserializer(AttributeModifier.class, new AttributeModifierDeserializer());
129155
deserializers.addDeserializer(Location.class, new LocationDeserializer());
130156
deserializers.addDeserializer(OfflinePlayer.class, new PlayerDeserializer());
131157
deserializers.addDeserializer(Color.class, new RGBColorDeserializer());
158+
deserializers.addDeserializer(ExactChoice.class, new ExactChoiceDeserializer());
159+
deserializers.addDeserializer(MaterialChoice.class, new MaterialChoiceDeserializer());
160+
deserializers.addDeserializer(ShapedRecipe.class, new ShapedRecipeDeserializer());
161+
deserializers.addDeserializer(ShapelessRecipe.class, new ShapelessRecipeDeserializer());
132162
registerDeserializer(deserializers);
133163
}
134164

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* SPDX-License-Identifier: MIT
3+
*
4+
* Copyright (C) EldoriaRPG Team and Contributor
5+
*/
6+
package de.eldoria.jacksonbukkit.deserializer;
7+
8+
import com.fasterxml.jackson.core.JsonParser;
9+
import com.fasterxml.jackson.databind.DeserializationContext;
10+
import com.fasterxml.jackson.databind.JsonDeserializer;
11+
import com.fasterxml.jackson.databind.JsonNode;
12+
import org.bukkit.NamespacedKey;
13+
import org.bukkit.enchantments.Enchantment;
14+
15+
import java.io.IOException;
16+
17+
public class EnchantmentDeserializer extends JsonDeserializer<Enchantment> {
18+
@Override
19+
public Enchantment deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
20+
JsonNode tree = ctxt.readTree(p);
21+
if (tree.isTextual()) {
22+
return Enchantment.getByName(ctxt.readTreeAsValue(tree, String.class));
23+
}
24+
25+
if (tree.isObject()) {
26+
return Enchantment.getByKey(ctxt.readTreeAsValue(tree, NamespacedKey.class));
27+
}
28+
throw new IOException("Unknown type for field type" + tree.getNodeType().name());
29+
}
30+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* SPDX-License-Identifier: MIT
3+
*
4+
* Copyright (C) EldoriaRPG Team and Contributor
5+
*/
6+
package de.eldoria.jacksonbukkit.deserializer;
7+
8+
import com.fasterxml.jackson.core.JsonParser;
9+
import com.fasterxml.jackson.databind.DeserializationContext;
10+
import com.fasterxml.jackson.databind.JsonDeserializer;
11+
import de.eldoria.jacksonbukkit.entities.ExactChoiceWrapper;
12+
import org.bukkit.inventory.RecipeChoice.ExactChoice;
13+
14+
import java.io.IOException;
15+
16+
/**
17+
* Class for deserialization of {@link ExactChoice}.
18+
*/
19+
public class ExactChoiceDeserializer extends JsonDeserializer<ExactChoice> {
20+
@Override
21+
public ExactChoice deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
22+
return ctxt.readValue(p, ExactChoiceWrapper.class).toBukkitRecipeChoice();
23+
}
24+
}

0 commit comments

Comments
 (0)