Skip to content

Commit f2caa58

Browse files
committed
feat: ported to 26.1
1 parent 1525324 commit f2caa58

27 files changed

Lines changed: 209 additions & 324 deletions

.github/workflows/build-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
!contains(github.event.head_commit.message, '[ciskip]')
1212
uses: nanite/workflows/.github/workflows/release.yml@v1.3
1313
with:
14-
java-version: 21
14+
java-version: 25
1515
gradle-tasks: build publish publishMods
1616
secrets:
1717
nanite-token: ${{ secrets.NANITE_DEPLOY }}

CHANGELOG.md

Lines changed: 2 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,3 @@
1-
## 97.0.0
1+
# Changelog
22

3-
### Changed
4-
5-
- Updated to 1.21.11
6-
7-
## 96.0.0
8-
9-
### Changed
10-
11-
- Ported to 1.21.9/10
12-
13-
## 94.0.0
14-
15-
### Changed
16-
17-
- Updated to 1.21.6/7/8
18-
19-
## 91.0.0
20-
21-
### Changed
22-
23-
- Updated to 1.21.5
24-
25-
## 90.0.0
26-
27-
### Changed
28-
29-
- Updated to 1.21.4
30-
31-
## 89.0.0
32-
33-
### Changed
34-
35-
- Updated to 1.21.2/1.21.3
36-
- The `/tk clear` command now supports custom input filters as well as optionally being able to remove bedrock from the world
37-
- This technically replaces existing functionality where a tag or blockstate would be read from the input but due to poor auto-complete, this is basically an unknown feature so we've changed it to one that's much more clear
38-
- The new syntax is `/tk clear <size> [filter] [removeBedrock]`
39-
40-
## 87.0.1
41-
42-
### Changed
43-
44-
- Added more copy types for the `/tk copy` command. You can now use the following types. Please note that `plain` is the default if no type is provided. Plain is the old default.
45-
- `KUBEJS`
46-
- `KUBEJS_NATIVE`
47-
- `JSON`
48-
- `SNBT`
49-
- `NBT`
50-
- `CRAFTTWEAKER`
51-
- `PLAIN`
52-
- `CSV`
53-
54-
### Fixed
55-
56-
- The mod works again on NeoForge
57-
58-
## 87.0.0
59-
60-
### Changed
61-
62-
- Updated to 1.21
63-
64-
## 85.0.0
65-
66-
### Changed
67-
68-
- Updated to 1.20.5
69-
70-
## 84.0.1
71-
72-
### Fixed
73-
74-
- Restricted the `/toggledownfall` command to `gamemasters` (Minecrafts naming, not mine.)
75-
76-
## 84.0.0
77-
78-
### updated to 1.20.4
3+
Update to 26.1

build.gradle

Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,32 @@
11
import groovy.json.JsonSlurper
22

33
plugins {
4-
id "architectury-plugin" version "3.4-SNAPSHOT"
5-
id "dev.architectury.loom" version "1.13-SNAPSHOT" apply false
4+
id 'java-library'
5+
id 'fabric-loom' version '1.15-SNAPSHOT' apply(false)
6+
id 'net.neoforged.moddev' version '2.0.141' apply(false)
67
id "me.modmuss50.mod-publish-plugin" version "1.1.0"
78
}
89

9-
architectury {
10-
minecraft = rootProject.minecraft_version
11-
}
10+
version = mod_version
11+
group = maven_group
1212

13-
subprojects {
14-
apply plugin: "dev.architectury.loom"
15-
apply plugin: "maven-publish"
13+
allprojects {
14+
apply plugin: 'idea'
15+
apply plugin: 'java-library'
16+
apply plugin: 'maven-publish'
1617

17-
loom {
18-
silentMojangMappingsLicense()
18+
version = mod_version
19+
20+
tasks.withType(JavaCompile).configureEach {
21+
options.encoding = 'UTF-8'
22+
options.release = 25
1923
}
2024

21-
dependencies {
22-
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
23-
mappings loom.officialMojangMappings()
25+
idea {
26+
module {
27+
downloadSources = true
28+
downloadJavadoc = true
29+
}
2430
}
2531

2632
publishing {
@@ -38,27 +44,38 @@ subprojects {
3844
}
3945
}
4046

41-
allprojects {
42-
apply plugin: "java"
43-
apply plugin: "architectury-plugin"
44-
apply plugin: "maven-publish"
45-
46-
47-
archivesBaseName = rootProject.archives_base_name
48-
version = rootProject.mod_version
49-
group = rootProject.maven_group
50-
51-
repositories {
52-
47+
subprojects {
48+
base {
49+
archivesName = "${archives_base_name}-$project.name"
5350
}
5451

55-
tasks.withType(JavaCompile) {
56-
options.encoding = "UTF-8"
57-
options.release = 21
52+
if (project.name != "common") {
53+
dependencies {
54+
api project(":common")
55+
}
56+
57+
jar {
58+
from project(":common").sourceSets.main.output
59+
}
5860
}
5961

60-
java {
61-
withSourcesJar()
62+
def replaceProperties = [
63+
mod_id: mod_id,
64+
minecraft_version: minecraft_version,
65+
minecraft_version_range: minecraft_version_range,
66+
neoforge_version: neoforge_version,
67+
neoforge_version_range: neoforge_version_range,
68+
fabric_loader_version: fabric_loader_version,
69+
fabric_api_version: fabric_api_version,
70+
version: version,
71+
]
72+
73+
processResources {
74+
inputs.properties replaceProperties
75+
76+
filesMatching(["META-INF/neoforge.mods.toml", "fabric.mod.json"]) {
77+
expand replaceProperties
78+
}
6279
}
6380
}
6481

@@ -69,13 +86,13 @@ publishMods {
6986
type = STABLE
7087

7188
def fabricOptions = publishOptions {
72-
file = project.provider { project(":fabric").tasks.remapJar }.flatMap { it.archiveFile }
89+
file = project.provider { project(":fabric").tasks.jar }.flatMap { it.archiveFile }
7390
displayName = "[FABRIC][${minecraft_version}] ${project.name} ${mod_version}"
7491
modLoaders.add("fabric")
7592
}
7693

7794
def neoForge = publishOptions {
78-
file = project.provider { project(":neoforge").tasks.remapJar }.flatMap { it.archiveFile }
95+
file = project.provider { project(":neoforge").tasks.jar }.flatMap { it.archiveFile }
7996
displayName = "[NEOFORGE][${minecraft_version}] ${project.name} ${mod_version}"
8097
modLoaders.add("neoforge")
8198
}
@@ -94,9 +111,7 @@ publishMods {
94111

95112
curseforge("curseforgeFabric") {
96113
from(curseForgeOptions, fabricOptions)
97-
requires {
98-
slug = "fabric-api"
99-
}
114+
requires("fabric-api")
100115
}
101116

102117
curseforge("curseforgeNeoForge") {
@@ -106,9 +121,7 @@ publishMods {
106121
if (providers.environmentVariable("MODRINTH_TOKEN").getOrNull() != null) {
107122
modrinth("modrinthFabric") {
108123
from(modrinthOptions, fabricOptions)
109-
requires {
110-
slug = "fabric-api"
111-
}
124+
requires("fabric-api")
112125
}
113126

114127
modrinth("modrinthNeoforge") {

common/build.gradle

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
1-
architectury {
2-
common(rootProject.enabled_platforms.split(","))
1+
plugins {
2+
id 'net.fabricmc.fabric-loom'
33
}
44

55
loom {
6-
accessWidenerPath = file("src/main/resources/toolkit.accesswidener")
6+
// accessWidenerPath = file("src/main/resources/toolkit.accesswidener")
77
}
88

99
sourceSets.main.resources { srcDirs += ['src/main/generated'] }
1010

11-
dependencies {
12-
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
13-
}
14-
15-
publishing {
16-
publications {
17-
mavenCommon(MavenPublication) {
18-
artifactId = "${rootProject.archivesBaseName}-${project.name}"
19-
from components.java
11+
repositories {
12+
maven {
13+
url = "https://repo.spongepowered.org/repository/maven-public/"
14+
content {
15+
includeGroup "org.spongepowered"
2016
}
2117
}
2218
}
19+
20+
dependencies {
21+
minecraft "com.mojang:minecraft:${project.minecraft_version}"
22+
23+
compileOnly group: 'org.spongepowered', name: 'mixin', version: '0.8.5'
24+
}

common/gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fabric.loom.dontRemap=true

common/src/main/java/com/sunekaer/toolkit/Toolkit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void onServerPostTick(MinecraftServer server) {
5050
public void onPlayerJoin(ServerPlayer player) {
5151
if (player != null && Toolkit.SHOW_ON_JOIN_MESSAGE.get()) {
5252
if (!player.level().isClientSide()) {
53-
player.displayClientMessage(Component.literal(Toolkit.JOIN_MESSAGE.get()), false);
53+
player.sendSystemMessage(Component.literal(Toolkit.JOIN_MESSAGE.get()));
5454
}
5555
}
5656
}

common/src/main/java/com/sunekaer/toolkit/commands/TKCommand.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ public static void register(CommandDispatcher<CommandSourceStack> dispatcher, Co
2424
dispatcher.register(Commands.literal("toggledownfall")
2525
.requires(cs -> cs.permissions().hasPermission(Permissions.COMMANDS_GAMEMASTER))
2626
.executes(c -> {
27-
ServerLevel overworld = c.getSource().getServer().overworld();
27+
var server = c.getSource().getServer();
28+
ServerLevel overworld = server.overworld();
2829

2930
if (overworld.isRaining() || overworld.isThundering()) {
30-
overworld.setWeatherParameters(6000, 0, false, false);
31+
server.setWeatherParameters(6000, 0, false, false);
3132
} else {
32-
overworld.setWeatherParameters(0, 6000, true, false);
33+
server.setWeatherParameters(0, 6000, true, false);
3334
}
3435

3536
return 1;

common/src/main/java/com/sunekaer/toolkit/commands/dev/DevEnvCommand.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import com.mojang.brigadier.builder.ArgumentBuilder;
55
import net.minecraft.commands.CommandSourceStack;
66
import net.minecraft.commands.Commands;
7-
import net.minecraft.server.level.ServerLevel;
7+
import net.minecraft.core.Holder;
88
import net.minecraft.server.permissions.Permissions;
9+
import net.minecraft.world.clock.WorldClock;
10+
import net.minecraft.world.clock.WorldClocks;
911
import net.minecraft.world.level.gamerules.GameRules;
1012

1113
public class DevEnvCommand {
@@ -19,16 +21,15 @@ public class DevEnvCommand {
1921

2022
private static int setDevEnv(CommandSourceStack source, Boolean value) {
2123
var server = source.getServer();
22-
long time = 6000;
2324

2425
server.overworld().getGameRules().set(GameRules.ADVANCE_TIME, !value, server);
2526
server.overworld().getGameRules().set(GameRules.ADVANCE_WEATHER, !value, server);
2627
server.overworld().getGameRules().set(GameRules.SPAWN_MOBS, !value, server);
2728

2829
if (value) {
29-
for (ServerLevel serverLevel : source.getServer().getAllLevels()) {
30-
serverLevel.setDayTime(time);
31-
}
30+
var clockManager = server.clockManager();
31+
var overworldClock = server.registryAccess().get(WorldClocks.OVERWORLD);
32+
overworldClock.ifPresent(clock -> clockManager.setTotalTicks(clock, 6000L));
3233
}
3334

3435
return 1;

common/src/main/java/com/sunekaer/toolkit/commands/inventory/CopyCommand.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@
1212
import com.sunekaer.toolkit.utils.CommandUtils;
1313
import net.minecraft.commands.CommandSourceStack;
1414
import net.minecraft.commands.Commands;
15-
import net.minecraft.commands.arguments.item.ItemInput;
1615
import net.minecraft.core.Holder;
1716
import net.minecraft.core.HolderLookup;
17+
import net.minecraft.core.component.DataComponentPatch;
18+
import net.minecraft.core.component.DataComponentType;
19+
import net.minecraft.core.component.TypedDataComponent;
1820
import net.minecraft.core.registries.BuiltInRegistries;
1921
import net.minecraft.nbt.*;
2022
import net.minecraft.network.chat.Component;
21-
import net.minecraft.resources.ResourceKey;
2223
import net.minecraft.resources.Identifier;
2324
import net.minecraft.world.item.Item;
2425
import net.minecraft.world.item.ItemStack;
@@ -28,9 +29,11 @@
2829
import java.util.List;
2930
import java.util.Map;
3031
import java.util.Objects;
32+
import java.util.Optional;
3133
import java.util.concurrent.CompletableFuture;
3234
import java.util.function.BiFunction;
3335
import java.util.function.Function;
36+
import java.util.stream.Collectors;
3437
import java.util.stream.Stream;
3538

3639
public class CopyCommand {
@@ -229,13 +232,27 @@ enum OutputType {
229232
}
230233

231234
public static String getNbtFromItemStack(ItemStack stack, HolderLookup.Provider lookup, boolean removeName) {
232-
Holder<Item> itemHolder = stack.getItemHolder();
235+
Holder<Item> itemHolder = stack.typeHolder();
236+
String itemName = itemHolder.getRegisteredName();
237+
238+
var ops = lookup.createSerializationContext(NbtOps.INSTANCE);
239+
DataComponentPatch patch = stack.getComponentsPatch();
240+
String componentStr = patch.entrySet().stream().flatMap(entry -> {
241+
DataComponentType<?> type = entry.getKey();
242+
Identifier id = BuiltInRegistries.DATA_COMPONENT_TYPE.getKey(type);
243+
if (id == null) return Stream.empty();
244+
Optional<?> value = entry.getValue();
245+
if (value.isPresent()) {
246+
TypedDataComponent<?> typed = TypedDataComponent.createUnchecked(type, value.get());
247+
return typed.encodeValue(ops).result().stream()
248+
.map(tag -> id + "=" + tag);
249+
} else {
250+
return Stream.of("!" + id);
251+
}
252+
}).collect(Collectors.joining(","));
233253

234-
var value = new ItemInput(itemHolder, stack.getComponentsPatch()).serialize(lookup);
254+
var value = componentStr.isEmpty() ? itemName : itemName + "[" + componentStr + "]";
235255
if (removeName) {
236-
var itemName = itemHolder.unwrapKey().map(ResourceKey::identifier)
237-
.orElse(Identifier.withDefaultNamespace("air")).toString();
238-
239256
if (value.startsWith(itemName)) {
240257
value = value.substring(itemName.length());
241258
}

0 commit comments

Comments
 (0)