Skip to content

Commit 9fd928f

Browse files
committed
feat(bukkit-nms): add 1.21.7 support
1 parent 43d9f0f commit 9fd928f

4 files changed

Lines changed: 24 additions & 12 deletions

File tree

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ skinsrestorer-api = "15.3.1"
4242
placeholderapi = "2.11.6"
4343

4444
# bukkit - nms
45-
takenaka = "2.0.0-SNAPSHOT"
45+
takenaka = "1.2.1-SNAPSHOT"
4646

4747
# proxy - velocity
4848
velocity = "3.3.0-SNAPSHOT"

stickynote-bukkit/stickynote-bukkit-nms/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ dependencies {
2929
compileOnly(project(":stickynote-core"))
3030
compileOnly(project(":stickynote-bukkit"))
3131

32-
mappingBundle("me.kcra.takenaka:mappings:1.8.8+1.21.5")
32+
mappingBundle("me.kcra.takenaka:mappings:1.8.8+1.21.7")
3333
implementation(accessorRuntime())
3434
}
3535

@@ -45,7 +45,7 @@ accessors {
4545
namespaces("spigot", "mojang")
4646
accessorType(AccessorType.REFLECTION)
4747
codeLanguage(CodeLanguage.KOTLIN)
48-
versionRange("1.8.8", "1.21.5")
48+
versionRange("1.8.8", "1.21.7")
4949
mappingWebsite("https://mappings.dev/")
5050

5151
val ClientboundPlayerInfoUpdatePacket = "net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket" // 1.19.3 and above

stickynote-bukkit/stickynote-bukkit-nms/src/main/kotlin/org/sayandev/stickynote/bukkit/nms/PacketUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ object PacketUtils {
186186

187187
@JvmStatic
188188
fun getRemoveMobEffectPacket(player: Player, effect: PotionEffectType): Any {
189-
val effectConstructor = if ((ServerVersion.supports(20) && ServerVersion.patchNumber() >= 5) || ServerVersion.supports(21))
189+
val effectConstructor = if (ServerVersion.isAtLeast(21, 5))
190190
ClientboundRemoveMobEffectPacketAccessor.CONSTRUCTOR_1!!
191191
else
192192
ClientboundRemoveMobEffectPacketAccessor.CONSTRUCTOR_0!!

stickynote-loader/stickynote-loader-common/src/main/java/org/sayandev/loader/common/StickyNoteLoader.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,7 @@ public void load(String id, File dataDirectory, Logger logger, LibraryManager li
113113
List<String> versions = getAllVersions(libDirectory, projectDependency.getGroup(), projectDependency.getName());
114114
List<Dependency> toBeRemovedVersions = versions.stream().filter(version -> !version.equals(projectDependency.getVersion())).map(version -> new Dependency(projectDependency.getGroup(), projectDependency.getName(), version, projectDependency.getRelocation(), projectDependency.isStickyLoad())).toList();
115115
for (Dependency dependency : toBeRemovedVersions) {
116-
// TODO: Test this
117-
// deleteOldVersionDirectory(libDirectory, dependency.getGroup(), dependency.getName(), dependency.getVersion());
116+
deleteOldVersionDirectory(libDirectory, dependency.getGroup(), dependency.getName(), dependency.getVersion());
118117
}
119118
}
120119
}
@@ -411,25 +410,38 @@ private File versionDirectory(File libFolder, String group, String name, String
411410
return new File(libFolder, groupPath + "/" + name + "/" + version);
412411
}
413412

413+
private boolean isFileInUse(File file) {
414+
try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
415+
return false;
416+
} catch (IOException e) {
417+
return true;
418+
}
419+
}
420+
414421
private void deleteDirectory(File directory) throws IOException {
415422
if (!directory.exists()) return;
416423

424+
// Check if directory or its files are in use or recently used (last modified < 5 minutes ago)
425+
long now = System.currentTimeMillis();
426+
long fiveMinutesMillis = 15 * 60 * 1000;
417427
File[] files = directory.listFiles();
418428
if (files != null) {
419429
for (File file : files) {
420430
if (file.isDirectory()) {
431+
// Recursively check subdirectories
421432
deleteDirectory(file);
422433
} else {
423-
if (!file.delete()) {
424-
// Try to delete on JVM exit as a fallback
425-
file.deleteOnExit();
426-
// Log a warning instead of throwing
427-
System.err.println("Warning: Failed to delete file (in use?): " + file.getAbsolutePath());
434+
// If file is in use or recently used, skip deletion
435+
if (isFileInUse(file) || file.lastModified() > now - fiveMinutesMillis) {
436+
continue;
428437
}
438+
file.delete();
429439
}
430440
}
431441
}
432-
442+
if (isFileInUse(directory) || directory.lastModified() > now - fiveMinutesMillis) {
443+
return;
444+
}
433445
if (!directory.delete()) {
434446
directory.deleteOnExit();
435447
System.err.println("Warning: Failed to delete directory (in use?): " + directory.getAbsolutePath());

0 commit comments

Comments
 (0)