feat: add CustomMusicDiscs class to handle custom music disc

This commit is contained in:
Your Name
2025-03-16 02:17:16 +01:00
parent ddf0ec0223
commit 0e65b29a5f
2 changed files with 101 additions and 59 deletions

View File

@@ -58,20 +58,19 @@ public class App extends JavaPlugin {
public HashMap<Player, Boolean> hmActionbar = new HashMap<Player, Boolean>();
public File tpYml = new File(this.getDataFolder() + "/texturepack.yml");
public FileConfiguration tpConfig = YamlConfiguration.loadConfiguration(tpYml);
@Override
public void onEnable() {
tpConfig.addDefault("url", "https://mc.hessj.de/texturepack/CUSTOM.zip");
tpConfig.addDefault("sha1", "a7f7bde9e54279b502d65435877d251aa522cabc");
tpConfig.addDefault("sha1", "a7f7bde9e54279b502d65435877d251aa522cabc");
// Copy defaults and save if the file doesn't have these values
tpConfig.options().copyDefaults(true);
try {
tpConfig.save(tpYml);
} catch (IOException e) {
e.printStackTrace();
}
// Copy defaults and save if the file doesn't have these values
tpConfig.options().copyDefaults(true);
try {
tpConfig.save(tpYml);
} catch (IOException e) {
e.printStackTrace();
}
getServer().recipeIterator().forEachRemaining(recipe -> {
if (recipe instanceof ShapelessRecipe) {
@@ -93,6 +92,8 @@ public class App extends JavaPlugin {
getLogger().info("Plugin enabled!");
main = this;
CustomMusicDiscs cmd = new CustomMusicDiscs();
cmd.createDiscs(App.main);
backPack = new ItemStack(Material.BARRIER, 1);
ItemMeta im = backPack.getItemMeta();
@@ -104,7 +105,6 @@ public class App extends JavaPlugin {
cmdc.setStrings(list);
im.setCustomModelDataComponent(cmdc);
nsk = new NamespacedKey(App.main, "key" + "R3SLeatherBackpack");
im.getPersistentDataContainer().set(nsk, PersistentDataType.STRING, "R3S_kleiner_Rucksack");
backPack.setItemMeta(im);
@@ -183,9 +183,9 @@ public class App extends JavaPlugin {
meta.getPersistentDataContainer().set(InvisibleFrame.nsk, PersistentDataType.BYTE, (byte) 1);
item.setItemMeta(meta);
ShapelessRecipe invRahmenShapeless = new ShapelessRecipe(nskiR, item);
invRahmenShapeless.addIngredient(new ItemStack(Material.ITEM_FRAME,1));
invRahmenShapeless.addIngredient(new ItemStack(Material.GOLDEN_CARROT,1));
invRahmenShapeless.addIngredient(new ItemStack(Material.FERMENTED_SPIDER_EYE,1));
invRahmenShapeless.addIngredient(new ItemStack(Material.ITEM_FRAME, 1));
invRahmenShapeless.addIngredient(new ItemStack(Material.GOLDEN_CARROT, 1));
invRahmenShapeless.addIngredient(new ItemStack(Material.FERMENTED_SPIDER_EYE, 1));
if (getServer().getRecipe(nskiR) == null) {
App.main.getServer().addRecipe(invRahmenShapeless);
App.main.recipeKeys.add(invRahmenShapeless.getKey());
@@ -198,9 +198,9 @@ public class App extends JavaPlugin {
meta2.getPersistentDataContainer().set(InvisibleFrame.nsk, PersistentDataType.BYTE, (byte) 1);
item2.setItemMeta(meta2);
ShapelessRecipe invRahmenShapeless2 = new ShapelessRecipe(nskigR, item2);
invRahmenShapeless2.addIngredient(new ItemStack(Material.GLOW_ITEM_FRAME,1));
invRahmenShapeless2.addIngredient(new ItemStack(Material.GOLDEN_CARROT,1));
invRahmenShapeless2.addIngredient(new ItemStack(Material.FERMENTED_SPIDER_EYE,1));
invRahmenShapeless2.addIngredient(new ItemStack(Material.GLOW_ITEM_FRAME, 1));
invRahmenShapeless2.addIngredient(new ItemStack(Material.GOLDEN_CARROT, 1));
invRahmenShapeless2.addIngredient(new ItemStack(Material.FERMENTED_SPIDER_EYE, 1));
if (getServer().getRecipe(nskigR) == null) {
App.main.getServer().addRecipe(invRahmenShapeless2);
App.main.recipeKeys.add(invRahmenShapeless2.getKey());
@@ -262,28 +262,6 @@ public class App extends JavaPlugin {
App.main.recipeKeys.add(leatherRecipe.getKey());
}
/*
* NamespacedKey nskHopper = new NamespacedKey(this, "R3SCRAFTINGHOPPER");
* ItemStack craftingHopper = new ItemStack(Material.HOPPER);
* ItemMeta imCraftingHopper = craftingHopper.getItemMeta();
* imCraftingHopper.displayName(Component.text(ChatColor.WHITE +
* "Craftingtrichter"));
* imCraftingHopper.lore(Arrays.asList(Component.text(ChatColor.GRAY +
* "Ein Trichter um Zutaten für ein Rezept weiterzuleiten")));
* imCraftingHopper.setCustomModelData(1000022);
* craftingHopper.setItemMeta(imCraftingHopper);
*
* ShapelessRecipe srCraftingHopper = new ShapelessRecipe(nskHopper,
* craftingHopper);
* srCraftingHopper.addIngredient(Material.HOPPER);
* srCraftingHopper.addIngredient(Material.CRAFTING_TABLE);
* getServer().addRecipe(srCraftingHopper);
* if (getServer().getRecipe(nskHopper) == null) {
* getServer().addRecipe(srCraftingHopper);
* }
*/
Inventory playerInv = Bukkit.createInventory(null, InventoryType.PLAYER);
playerInv.addItem(new ItemStack(Material.BIRCH_PLANKS, 24));
playerInv.addItem(new ItemStack(Material.WARPED_PLANKS, 43));
@@ -293,23 +271,13 @@ public class App extends JavaPlugin {
listenerRegistration();
//////////////////////
ItemStack desiredItem = new ItemStack(Material.CHEST, 1);
Recipe r = Bukkit.getServer().getRecipe(desiredItem.getType().getKey());
ShapedRecipe sr = (ShapedRecipe) r;
HashMap<RecipeChoice, Integer> ingredients = new HashMap<RecipeChoice, Integer>();
HashMap<Material, Integer> hmhelper = new HashMap<Material, Integer>();
int reqItemsCount = 0;
int reqItemsCount = 0;
for (RecipeChoice rC : sr.getChoiceMap().values()) {
if (rC != null) {
if (ingredients.keySet().contains(rC)) {
@@ -346,18 +314,11 @@ public class App extends JavaPlugin {
////////////////////////
Collection<? extends Player> onlinePlayer = Bukkit.getServer().getOnlinePlayers();
for(Player p : onlinePlayer){
for (Player p : onlinePlayer) {
hmActionbar.put(p, true);
AFKListener.createAFKTimer(p);
}
try {
if (!coordinateRunner) {
@@ -371,7 +332,8 @@ public class App extends JavaPlugin {
p.sendActionBar(Component.text(
"X: " + loc.getBlockX() + " Y: " + loc.getBlockY() + " Z: " + loc.getBlockZ()
+ " " + parseTime((Bukkit.getServer().getWorlds().get(0).getTime())) + "Uhr Wetter: "
+ " " + parseTime((Bukkit.getServer().getWorlds().get(0).getTime()))
+ "Uhr Wetter: "
+ getWeather(p)));
}
@@ -488,6 +450,7 @@ public class App extends JavaPlugin {
pM.registerEvents(new ShulkerPreview(), this);
pM.registerEvents(new BetterTotems(), this);
pM.registerEvents(new RedstoneJukebox(), this);
pM.registerEvents(new CustomMusicDiscs(), this);
getCommand("test").setExecutor(new EnvironmentExCommands());
getCommand("y").setExecutor(new EnvironmentExCommands());
getCommand("n").setExecutor(new EnvironmentExCommands());
@@ -501,7 +464,6 @@ public class App extends JavaPlugin {
App.main.getLogger().info(msg.toString());
}
public static Boolean isDay() {
// wenn zeit kleiner als 24000 && zeit größer gleich 12575

View File

@@ -0,0 +1,80 @@
package de.hessj.environmentex;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.block.Jukebox;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapelessRecipe;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitRunnable;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.sound.Sound;
import net.kyori.adventure.sound.SoundStop;
import net.kyori.adventure.sound.Sound.Emitter;
import net.kyori.adventure.text.Component;
public class CustomMusicDiscs implements Listener {
Sound customSound = Sound.sound(
Key.key("custom.my_music"),
Sound.Source.RECORD,
1.0f,
1.0f
);
public void createDiscs(App app) {
ItemStack customDisc = new ItemStack(Material.MUSIC_DISC_13);
ItemMeta meta = customDisc.getItemMeta();
if (meta != null) {
meta.displayName(Component.text("§6Custom Music Disc"));
meta.setCustomModelData(12345); // Used in resource packs
customDisc.setItemMeta(meta);
}
NamespacedKey nskDisc = new NamespacedKey(app, "custom_music_disc");
ShapelessRecipe reciped = new ShapelessRecipe(nskDisc, customDisc);
reciped.addIngredient(1, Material.DIAMOND);
reciped.addIngredient(1, Material.PAPER);
//Bukkit.addRecipe(reciped);
}
@EventHandler
public void onJukeboxInsert(PlayerInteractEvent event) {
if (event.getClickedBlock() != null && event.getClickedBlock().getType() == Material.JUKEBOX) {
Jukebox jukebox = (Jukebox) event.getClickedBlock().getState();
ItemStack disc = event.getItem();
if (!jukebox.isPlaying()) {
if (disc != null && disc.hasItemMeta() && disc.getItemMeta().getCustomModelData() == 12345) {
event.setCancelled(true);
new BukkitRunnable() {
@Override
public void run() {
jukebox.setRecord(disc);
jukebox.update();
if (event.getPlayer().getInventory().getItemInMainHand().equals(disc)) {
event.getPlayer().getInventory().setItemInMainHand(null);
} else if (event.getPlayer().getInventory().getItemInOffHand().equals(disc)) {
event.getPlayer().getInventory().setItemInOffHand(null);
}
event.getPlayer().getWorld().playSound(customSound, (Emitter) event.getPlayer());
}
}.runTaskLater(App.main, 1L);
}
} else {
if (jukebox.getRecord().hasItemMeta()
&& jukebox.getRecord().getItemMeta().getCustomModelData() == 12345) {
event.getPlayer().stopSound(SoundStop.named(Key.key("custom.my_music")));
}
}
}
}
}