Skip to content

Commit 2fdfd6b

Browse files
committed
Generate data-driven constants
1 parent ab980f8 commit 2fdfd6b

67 files changed

Lines changed: 1879 additions & 418 deletions

File tree

Some content is hidden

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

.github/dependabot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
version: 2
22
updates:
3-
- package-ecosystem: maven
3+
- package-ecosystem: gradle
44
directory: "/"
55
schedule:
66
interval: monthly

README.MD

Lines changed: 9 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ systems and divide them up into readable, manageable, customizable segments.
1717
### Anvil Enchanting
1818

1919
Anvil enchanting is primarily accessed via the
20-
[`Anvil`](src/main/java/com/github/jikoo/planarenchanting/anvil/Anvil.java).
20+
[`Anvil`](enchanting-core/src/main/java/com/github/jikoo/planarenchanting/anvil/Anvil.java).
2121
This is a class containing several simple ways to modify anvil behaviors.
2222

2323
For basic vanilla-style combination, all you need is an ordinary `Anvil`.
@@ -82,7 +82,7 @@ class RenameOnlyAnvil extends Anvil {
8282

8383
### Enchanting Table Enchanting
8484

85-
Enchanting Table-style enchanting is accessed via the [`EnchantingTable`](src/main/java/com/github/jikoo/planarenchanting/table/EnchantingTable.java).
85+
Enchanting Table-style enchanting is accessed via the [`EnchantingTable`](enchanting-core/src/main/java/com/github/jikoo/planarenchanting/table/EnchantingTable.java).
8686

8787
The constructor accepts a collection of enchantments that may be applied and the `Enchantability` (a
8888
wrapper for a magic value representing an enchantment bonus; constants for vanilla values are
@@ -105,7 +105,7 @@ class StoneEnchantListener extends TableEnchantListener {
105105
Enchantment.DURABILITY,
106106
Enchantment.LOOT_BONUS_BLOCKS,
107107
Enchantment.SILK_TOUCH),
108-
Enchantability.STONE);
108+
Enchantability.forMaterial(Material.STONE_PICKAXE));
109109

110110
StoneEnchantListener(@NotNull Plugin plugin) {
111111
super(plugin);
@@ -132,71 +132,11 @@ class StoneEnchantListener extends TableEnchantListener {
132132

133133
If you want more specific functionality you can write your own listener from scratch.
134134

135+
## Version Control
136+
137+
PlanarEnchanting is available via [JitPack](https://jitpack.io/#jikoo/planarenchanting).
138+
JitPack supports Gradle, Maven, SBT, and Leiningen.
139+
135140
## For Developers
136141

137-
Please relocate PlanarEnchanting when including its files in your project! Bundled library conflicts
138-
are not fun, make your life easier.
139-
140-
### License [![WTFPL](http://www.wtfpl.net/wp-content/uploads/2012/12/wtfpl-badge-2.png)](http://www.wtfpl.net/)
141-
142-
This project is licensed under the WTFPL. You can do whatever you want with the content.
143-
If you do use it and decide to credit me, thanks! I think you're just swell.
144-
145-
### Version Control
146-
147-
PlanarEnchanting is available via [JitPack](https://jitpack.io). I pretty much only use Maven in my
148-
projects, so that's the only full writeup you get, but JitPack supports Gradle, Maven, SBT, and
149-
Leiningen.
150-
151-
### Maven
152-
153-
Replace `${versions.planarenchanting}` with the version you desire to work with or define it in your properties. The `minimizeJar` option is
154-
recommended to prevent inflating your plugin with unnecessary classes.
155-
156-
Sample configuration:
157-
158-
```xml
159-
<project>
160-
<repositories>
161-
<repository>
162-
<id>jitpack.io</id>
163-
<url>https://jitpack.io</url>
164-
</repository>
165-
</repositories>
166-
167-
<dependencies>
168-
<dependency>
169-
<groupId>com.github.jikoo</groupId>
170-
<artifactId>planarenchanting</artifactId>
171-
<version>${versions.planarenchanting}</version>
172-
<scope>compile</scope>
173-
</dependency>
174-
</dependencies>
175-
176-
<build>
177-
<plugins>
178-
<plugin>
179-
<groupId>org.apache.maven.plugins</groupId>
180-
<artifactId>maven-shade-plugin</artifactId>
181-
<version>3.3.0</version>
182-
<executions>
183-
<execution>
184-
<phase>package</phase>
185-
<goals>
186-
<goal>shade</goal>
187-
</goals>
188-
<configuration>
189-
<relocations>
190-
<relocation>
191-
<pattern>com.github.jikoo.planarenchanting</pattern>
192-
<shadedPattern>com.example.myplugin.planarenchanting</shadedPattern>
193-
</relocation>
194-
</relocations>
195-
</configuration>
196-
</execution>
197-
</executions>
198-
</plugin>
199-
</plugins>
200-
</build>
201-
</project>
202-
```
142+
Generated source files can be recreated from Minecraft internals with the `generate` task.

build.gradle.kts

Lines changed: 26 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,35 @@
11
import java.lang.Runtime
2+
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
3+
import org.gradle.api.tasks.testing.logging.TestLogEvent
24

3-
plugins {
4-
`java-library`
5-
jacoco
6-
alias(libs.plugins.org.sonarqube)
7-
}
8-
9-
repositories {
10-
mavenCentral()
11-
maven("https://repo.papermc.io/repository/maven-public/")
12-
maven("https://jitpack.io/")
13-
}
14-
15-
val mockitoAgent = configurations.create("mockitoAgent")
16-
17-
dependencies {
18-
implementation(libs.org.jetbrains.annotations)
19-
implementation(libs.io.papermc.paper.paper.api)
20-
implementation(libs.com.github.jikoo.planarwrappers)
21-
22-
testImplementation(libs.org.hamcrest.hamcrest)
23-
testImplementation(libs.org.mockito.mockito.core)
24-
mockitoAgent(libs.org.mockito.mockito.core) { isTransitive = false }
25-
testImplementation(libs.com.jparams.to.string.verifier)
26-
}
27-
28-
group = "com.github.jikoo"
29-
version = "3.0.0-SNAPSHOT"
30-
description = "A customizable system mimicking vanilla Minecraft's enchanting functionality."
31-
32-
tasks.withType<JavaCompile>() {
33-
options.release = 21
34-
options.encoding = "UTF-8"
35-
}
36-
37-
tasks.withType<Javadoc>() {
38-
options.encoding = "UTF-8"
39-
}
5+
subprojects {
6+
apply(plugin = "java-library")
407

41-
testing {
42-
suites {
43-
named<JvmTestSuite>("test") {
44-
useJUnitJupiter("6.0.2")
45-
}
8+
repositories {
9+
mavenCentral()
10+
maven("https://repo.papermc.io/repository/maven-public/")
4611
}
47-
}
4812

49-
tasks.test {
50-
useJUnitPlatform()
51-
52-
// Use as many cores as possible to run tests.
53-
maxParallelForks = Runtime.getRuntime().availableProcessors()
54-
// As Bukkit is very heavily statically initialized, don't reuse forks.
55-
forkEvery = 1
56-
jvmArgs("-Xshare:off", "-javaagent:${mockitoAgent.asPath}")
57-
58-
// Generate coverage reports
59-
finalizedBy(tasks.jacocoTestReport)
60-
}
61-
62-
tasks.jacocoTestReport {
63-
reports {
64-
// Produce XML report for Sonar
65-
xml.required = true
13+
tasks.withType<JavaCompile>().configureEach {
14+
options.release = 21
15+
options.encoding = Charsets.UTF_8.name()
16+
options.isFork = true
17+
}
18+
tasks.withType<Javadoc>().configureEach {
19+
options.encoding = Charsets.UTF_8.name()
20+
}
21+
tasks.withType<ProcessResources>().configureEach {
22+
filteringCharset = Charsets.UTF_8.name()
6623
}
67-
}
6824

69-
sonar {
70-
properties {
71-
property("sonar.projectKey", "Jikoo_PlanarEnchanting")
72-
property("sonar.organization", "jikoo")
73-
property("sonar.host.url", "https://sonarcloud.io")
74-
property("sonar.language", "java")
75-
property("sonar.java.coveragePlugin", "jacoco")
76-
property("sonar.coverage.jacoco.xmlReportPaths", "build/reports/jacoco/test/jacocoTestReport.xml")
25+
tasks.withType<Test>().configureEach {
26+
// Use as many cores as possible to run tests.
27+
maxParallelForks = Runtime.getRuntime().availableProcessors()
28+
jvmArgs("-Xshare:off")
29+
testLogging {
30+
showStackTraces = true
31+
exceptionFormat = TestExceptionFormat.FULL
32+
events(TestLogEvent.STANDARD_OUT)
33+
}
7734
}
7835
}

enchanting-core/build.gradle.kts

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
plugins {
2+
jacoco
3+
alias(libs.plugins.org.sonarqube)
4+
}
5+
6+
repositories {
7+
maven("https://repo.papermc.io/repository/maven-public/")
8+
maven("https://jitpack.io/")
9+
}
10+
11+
val mockitoAgent: Configuration = configurations.create("mockitoAgent")
12+
13+
dependencies {
14+
implementation(libs.org.jetbrains.annotations)
15+
implementation(libs.io.papermc.paper.paper.api)
16+
implementation(libs.com.github.jikoo.planarwrappers)
17+
18+
testImplementation(libs.org.hamcrest.hamcrest)
19+
testImplementation(libs.org.mockito.mockito.core)
20+
mockitoAgent(libs.org.mockito.mockito.core) { isTransitive = false }
21+
testImplementation(libs.com.jparams.to.string.verifier)
22+
}
23+
24+
sourceSets {
25+
main {
26+
java.srcDirs("src/generated/java")
27+
}
28+
}
29+
30+
testing {
31+
suites {
32+
named<JvmTestSuite>("test") {
33+
useJUnitJupiter("6.0.2")
34+
}
35+
}
36+
}
37+
38+
tasks.test {
39+
useJUnitPlatform()
40+
// As Bukkit is very heavily statically initialized, don't reuse forks.
41+
forkEvery = 1
42+
jvmArgs("-javaagent:${mockitoAgent.asPath}")
43+
// Generate coverage reports
44+
finalizedBy(tasks.jacocoTestReport)
45+
}
46+
47+
tasks.jacocoTestReport {
48+
reports {
49+
// Produce XML report for Sonar
50+
xml.required = true
51+
}
52+
}
53+
54+
sonar {
55+
properties {
56+
property("sonar.projectKey", "Jikoo_PlanarEnchanting")
57+
property("sonar.organization", "jikoo")
58+
property("sonar.host.url", "https://sonarcloud.io")
59+
property("sonar.language", "java")
60+
property("sonar.java.coveragePlugin", "jacoco")
61+
property("sonar.coverage.jacoco.xmlReportPaths", "build/reports/jacoco/test/jacocoTestReport.xml")
62+
}
63+
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package com.github.jikoo.planarenchanting.anvil;
2+
3+
import java.util.HashMap;
4+
import java.util.List;
5+
import java.util.Map;
6+
import javax.annotation.processing.Generated;
7+
import net.kyori.adventure.key.Key;
8+
import org.jspecify.annotations.NullMarked;
9+
10+
/**
11+
* Pre-baked data used as a fallthrough for RepairMaterial.
12+
*
13+
* <p>This file was generated from Minecraft 1.21.11. Regenerate it rather than modify.</p>
14+
*/
15+
@Generated("com.github.jikoo.planarenchanting.generator.impl.RepairMaterialsGenerator")
16+
@NullMarked
17+
final class BakedRepairableData {
18+
19+
private BakedRepairableData() {
20+
}
21+
22+
static Map<Key, Key> getTags() {
23+
Map<Key, Key> map = new HashMap<>();
24+
// <editor-fold defaultstate="collapsed" desc="Generated from net.minecraft.world.item.Items">
25+
map.put(Key.key("minecraft", "wooden_axe"), Key.key("minecraft", "wooden_tool_materials"));
26+
map.put(Key.key("minecraft", "turtle_helmet"), Key.key("minecraft", "repairs_turtle_helmet"));
27+
map.put(Key.key("minecraft", "netherite_sword"), Key.key("minecraft", "netherite_tool_materials"));
28+
map.put(Key.key("minecraft", "diamond_sword"), Key.key("minecraft", "diamond_tool_materials"));
29+
map.put(Key.key("minecraft", "iron_spear"), Key.key("minecraft", "iron_tool_materials"));
30+
map.put(Key.key("minecraft", "iron_shovel"), Key.key("minecraft", "iron_tool_materials"));
31+
map.put(Key.key("minecraft", "golden_chestplate"), Key.key("minecraft", "repairs_gold_armor"));
32+
map.put(Key.key("minecraft", "wooden_sword"), Key.key("minecraft", "wooden_tool_materials"));
33+
map.put(Key.key("minecraft", "stone_pickaxe"), Key.key("minecraft", "stone_tool_materials"));
34+
map.put(Key.key("minecraft", "iron_helmet"), Key.key("minecraft", "repairs_iron_armor"));
35+
map.put(Key.key("minecraft", "copper_chestplate"), Key.key("minecraft", "repairs_copper_armor"));
36+
map.put(Key.key("minecraft", "copper_shovel"), Key.key("minecraft", "copper_tool_materials"));
37+
map.put(Key.key("minecraft", "copper_axe"), Key.key("minecraft", "copper_tool_materials"));
38+
map.put(Key.key("minecraft", "iron_leggings"), Key.key("minecraft", "repairs_iron_armor"));
39+
map.put(Key.key("minecraft", "golden_hoe"), Key.key("minecraft", "gold_tool_materials"));
40+
map.put(Key.key("minecraft", "leather_leggings"), Key.key("minecraft", "repairs_leather_armor"));
41+
map.put(Key.key("minecraft", "chainmail_helmet"), Key.key("minecraft", "repairs_chain_armor"));
42+
map.put(Key.key("minecraft", "golden_sword"), Key.key("minecraft", "gold_tool_materials"));
43+
map.put(Key.key("minecraft", "wooden_spear"), Key.key("minecraft", "wooden_tool_materials"));
44+
map.put(Key.key("minecraft", "leather_helmet"), Key.key("minecraft", "repairs_leather_armor"));
45+
map.put(Key.key("minecraft", "wolf_armor"), Key.key("minecraft", "repairs_wolf_armor"));
46+
map.put(Key.key("minecraft", "netherite_leggings"), Key.key("minecraft", "repairs_netherite_armor"));
47+
map.put(Key.key("minecraft", "diamond_axe"), Key.key("minecraft", "diamond_tool_materials"));
48+
map.put(Key.key("minecraft", "diamond_pickaxe"), Key.key("minecraft", "diamond_tool_materials"));
49+
map.put(Key.key("minecraft", "copper_hoe"), Key.key("minecraft", "copper_tool_materials"));
50+
map.put(Key.key("minecraft", "stone_axe"), Key.key("minecraft", "stone_tool_materials"));
51+
map.put(Key.key("minecraft", "stone_shovel"), Key.key("minecraft", "stone_tool_materials"));
52+
map.put(Key.key("minecraft", "netherite_hoe"), Key.key("minecraft", "netherite_tool_materials"));
53+
map.put(Key.key("minecraft", "diamond_spear"), Key.key("minecraft", "diamond_tool_materials"));
54+
map.put(Key.key("minecraft", "stone_hoe"), Key.key("minecraft", "stone_tool_materials"));
55+
map.put(Key.key("minecraft", "leather_chestplate"), Key.key("minecraft", "repairs_leather_armor"));
56+
map.put(Key.key("minecraft", "golden_axe"), Key.key("minecraft", "gold_tool_materials"));
57+
map.put(Key.key("minecraft", "golden_spear"), Key.key("minecraft", "gold_tool_materials"));
58+
map.put(Key.key("minecraft", "netherite_boots"), Key.key("minecraft", "repairs_netherite_armor"));
59+
map.put(Key.key("minecraft", "diamond_chestplate"), Key.key("minecraft", "repairs_diamond_armor"));
60+
map.put(Key.key("minecraft", "netherite_chestplate"), Key.key("minecraft", "repairs_netherite_armor"));
61+
map.put(Key.key("minecraft", "chainmail_chestplate"), Key.key("minecraft", "repairs_chain_armor"));
62+
map.put(Key.key("minecraft", "golden_shovel"), Key.key("minecraft", "gold_tool_materials"));
63+
map.put(Key.key("minecraft", "diamond_hoe"), Key.key("minecraft", "diamond_tool_materials"));
64+
map.put(Key.key("minecraft", "netherite_axe"), Key.key("minecraft", "netherite_tool_materials"));
65+
map.put(Key.key("minecraft", "copper_pickaxe"), Key.key("minecraft", "copper_tool_materials"));
66+
map.put(Key.key("minecraft", "iron_pickaxe"), Key.key("minecraft", "iron_tool_materials"));
67+
map.put(Key.key("minecraft", "diamond_helmet"), Key.key("minecraft", "repairs_diamond_armor"));
68+
map.put(Key.key("minecraft", "wooden_pickaxe"), Key.key("minecraft", "wooden_tool_materials"));
69+
map.put(Key.key("minecraft", "netherite_spear"), Key.key("minecraft", "netherite_tool_materials"));
70+
map.put(Key.key("minecraft", "copper_helmet"), Key.key("minecraft", "repairs_copper_armor"));
71+
map.put(Key.key("minecraft", "shield"), Key.key("minecraft", "wooden_tool_materials"));
72+
map.put(Key.key("minecraft", "copper_leggings"), Key.key("minecraft", "repairs_copper_armor"));
73+
map.put(Key.key("minecraft", "stone_sword"), Key.key("minecraft", "stone_tool_materials"));
74+
map.put(Key.key("minecraft", "netherite_pickaxe"), Key.key("minecraft", "netherite_tool_materials"));
75+
map.put(Key.key("minecraft", "stone_spear"), Key.key("minecraft", "stone_tool_materials"));
76+
map.put(Key.key("minecraft", "golden_pickaxe"), Key.key("minecraft", "gold_tool_materials"));
77+
map.put(Key.key("minecraft", "golden_leggings"), Key.key("minecraft", "repairs_gold_armor"));
78+
map.put(Key.key("minecraft", "iron_hoe"), Key.key("minecraft", "iron_tool_materials"));
79+
map.put(Key.key("minecraft", "iron_axe"), Key.key("minecraft", "iron_tool_materials"));
80+
map.put(Key.key("minecraft", "diamond_leggings"), Key.key("minecraft", "repairs_diamond_armor"));
81+
map.put(Key.key("minecraft", "iron_sword"), Key.key("minecraft", "iron_tool_materials"));
82+
map.put(Key.key("minecraft", "iron_boots"), Key.key("minecraft", "repairs_iron_armor"));
83+
map.put(Key.key("minecraft", "netherite_helmet"), Key.key("minecraft", "repairs_netherite_armor"));
84+
map.put(Key.key("minecraft", "diamond_shovel"), Key.key("minecraft", "diamond_tool_materials"));
85+
map.put(Key.key("minecraft", "wooden_shovel"), Key.key("minecraft", "wooden_tool_materials"));
86+
map.put(Key.key("minecraft", "wooden_hoe"), Key.key("minecraft", "wooden_tool_materials"));
87+
map.put(Key.key("minecraft", "chainmail_leggings"), Key.key("minecraft", "repairs_chain_armor"));
88+
map.put(Key.key("minecraft", "copper_spear"), Key.key("minecraft", "copper_tool_materials"));
89+
map.put(Key.key("minecraft", "chainmail_boots"), Key.key("minecraft", "repairs_chain_armor"));
90+
map.put(Key.key("minecraft", "copper_sword"), Key.key("minecraft", "copper_tool_materials"));
91+
map.put(Key.key("minecraft", "golden_helmet"), Key.key("minecraft", "repairs_gold_armor"));
92+
map.put(Key.key("minecraft", "leather_boots"), Key.key("minecraft", "repairs_leather_armor"));
93+
map.put(Key.key("minecraft", "golden_boots"), Key.key("minecraft", "repairs_gold_armor"));
94+
map.put(Key.key("minecraft", "diamond_boots"), Key.key("minecraft", "repairs_diamond_armor"));
95+
map.put(Key.key("minecraft", "netherite_shovel"), Key.key("minecraft", "netherite_tool_materials"));
96+
map.put(Key.key("minecraft", "iron_chestplate"), Key.key("minecraft", "repairs_iron_armor"));
97+
map.put(Key.key("minecraft", "copper_boots"), Key.key("minecraft", "repairs_copper_armor"));
98+
// </editor-fold>
99+
return map;
100+
}
101+
102+
static Map<Key, List<Key>> getLists() {
103+
Map<Key, List<Key>> map = new HashMap<>();
104+
// <editor-fold defaultstate="collapsed" desc="Generated from net.minecraft.world.item.Items">
105+
map.put(Key.key("minecraft", "mace"), List.of(Key.key("minecraft", "breeze_rod")));
106+
map.put(Key.key("minecraft", "elytra"), List.of(Key.key("minecraft", "phantom_membrane")));
107+
// </editor-fold>
108+
return map;
109+
}
110+
111+
}

0 commit comments

Comments
 (0)