feat: add CustomMusicDiscs class to handle custom music disc
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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")));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user