Skip to content

Commit 2ca83f6

Browse files
committed
1.21.2(3) support
1 parent d16cebb commit 2ca83f6

File tree

7 files changed

+80
-11
lines changed

7 files changed

+80
-11
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ allprojects {
2424
apply(plugin = "java-library");
2525
apply(plugin = "io.freefair.lombok")
2626

27-
version = "2.1.3"
27+
version = "2.1.4"
2828

2929
repositories {
3030
mavenCentral()
@@ -68,4 +68,5 @@ dependencies {
6868
api(project(":nms:versions:20_3", "reobf"))
6969
api(project(":nms:versions:20_5", "reobf"))
7070
api(project(":nms:versions:21", "reobf"))
71+
api(project(":nms:versions:21_2", "reobf"))
7172
}

nms/src/main/java/ru/spliterash/musicbox/minecraft/nms/jukebox/JukeboxFactory.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,19 @@ public class JukeboxFactory {
1515

1616
String className;
1717
if (iV == 21) {
18-
className = START_PATH + "V21";
18+
switch (raw) {
19+
case "1.21":
20+
case "1.21.1":
21+
className = START_PATH + "V21";
22+
break;
23+
case "1.21.2":
24+
case "1.21.3":
25+
className = START_PATH + "V21_2";
26+
break;
27+
default:
28+
className = null;
29+
break;
30+
}
1931
} else if (iV == 20) {
2032
switch (raw) {
2133
case "1.20":
@@ -63,15 +75,21 @@ else if (iV == 12)
6375

6476
if (className == null)
6577
throw new IllegalArgumentException("Unsupported version: " + raw);
66-
78+
Class<? extends IJukebox> tmpClass = null;
6779
try {
6880
//noinspection unchecked
69-
clazz = (Class<? extends IJukebox>) Class.forName(className);
81+
tmpClass = (Class<? extends IJukebox>) Class.forName(className);
7082
} catch (ClassNotFoundException e) {
7183
throw new RuntimeException(e);
84+
} finally {
85+
clazz = tmpClass;
7286
}
7387
}
7488

89+
public static boolean jukeboxAvailable() {
90+
return clazz != null;
91+
}
92+
7593
public static IJukebox getJukebox(Jukebox jukebox) {
7694
try {
7795
return clazz.getConstructor(Jukebox.class).newInstance(jukebox);

nms/versions/21_2/build.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
plugins {
2+
id("io.papermc.paperweight.userdev")
3+
}
4+
java {
5+
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
6+
}
7+
dependencies {
8+
// 1.21.2 нет, но нарушать порядок версий у себя я не хочу, так что давайте представим что тут 1.21.2
9+
paperweight.paperDevBundle("1.21.3-R0.1-SNAPSHOT")
10+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package ru.spliterash.musicbox.minecraft.nms.jukebox.versions;
2+
3+
import net.minecraft.world.level.block.entity.JukeboxBlockEntity;
4+
import org.bukkit.block.Jukebox;
5+
import org.bukkit.craftbukkit.block.CraftJukebox;
6+
import org.bukkit.craftbukkit.inventory.CraftItemStack;
7+
import org.bukkit.inventory.ItemStack;
8+
import ru.spliterash.musicbox.minecraft.nms.jukebox.IJukebox;
9+
10+
public class V21_2 implements IJukebox {
11+
private final JukeboxBlockEntity tileEntity;
12+
13+
public V21_2(Jukebox jukebox) {
14+
CraftJukebox craft = (CraftJukebox) jukebox;
15+
tileEntity = craft.getTileEntity();
16+
}
17+
18+
public void setJukebox(ItemStack item) {
19+
net.minecraft.world.item.ItemStack converted = CraftItemStack.asNMSCopy(item);
20+
tileEntity.setSongItemWithoutPlaying(converted, 0);
21+
22+
}
23+
24+
public ItemStack getJukebox() {
25+
net.minecraft.world.item.ItemStack nmsItem = tileEntity.getItem(0);
26+
if (nmsItem.isEmpty())
27+
return null;
28+
29+
return CraftItemStack.asBukkitCopy(nmsItem);
30+
}
31+
}

plugin/src/main/java/ru/spliterash/musicbox/Lang.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,10 @@ public enum Lang {
523523
SILENT_MODE_RESPONSE(
524524
"&6Set &b{player}&6 silent mode to {state}",
525525
"&6Тихий режим установлен в состояние {state}&6 для игрока &b{player}"
526+
),
527+
JUKEBOX_NOT_SUPPORTED(
528+
"&cCurrent version not support for jukebox play",
529+
"&cТекущая версия плагина не поддерживает воспроизведение пластинок"
526530
);
527531
/**
528532
* Оригинальные переводы

plugin/src/main/java/ru/spliterash/musicbox/customPlayers/objects/jukebox/JukeboxPlayer.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.bukkit.event.player.PlayerInteractEvent;
1010
import org.bukkit.inventory.ItemStack;
1111
import org.jetbrains.annotations.NotNull;
12+
import ru.spliterash.musicbox.Lang;
1213
import ru.spliterash.musicbox.MusicBox;
1314
import ru.spliterash.musicbox.customPlayers.abstracts.AbstractBlockPlayer;
1415
import ru.spliterash.musicbox.customPlayers.interfaces.IPlayList;
@@ -45,12 +46,15 @@ public static void onJukeboxClick(Jukebox jukebox, ItemStack clickedItem, Player
4546
if (song == null) {
4647
return;
4748
}
49+
if (JukeboxFactory.jukeboxAvailable()) {
50+
e.setCancelled(true);
51+
e.getPlayer().getInventory().setItemInMainHand(null);
52+
JukeboxFactory.getJukebox(jukebox).setJukebox(clickedItem);
4853

49-
e.setCancelled(true);
50-
e.getPlayer().getInventory().setItemInMainHand(null);
51-
JukeboxFactory.getJukebox(jukebox).setJukebox(clickedItem);
52-
53-
createNew(jukebox);
54+
createNew(jukebox);
55+
} else {
56+
e.getPlayer().sendMessage(Lang.JUKEBOX_NOT_SUPPORTED.toString());
57+
}
5458
}
5559

5660
private static void createNew(Jukebox jukebox) {
@@ -84,7 +88,7 @@ public static void onRedstone(Jukebox box, Block source, int power) {
8488
JukeboxPlayer player = AbstractBlockPlayer.findByLocation(box.getLocation());
8589
if (player != null) {
8690
player.getMusicBoxModel().startNext();
87-
} else
91+
} else if (JukeboxFactory.jukeboxAvailable())
8892
createNew(box);
8993
}
9094
}

settings.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ include "nms:versions:20_1"
1313
include "nms:versions:20_2"
1414
include "nms:versions:20_3"
1515
include "nms:versions:20_5"
16-
include "nms:versions:21"
16+
include "nms:versions:21"
17+
include "nms:versions:21_2"

0 commit comments

Comments
 (0)