diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e0f15db --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0d7d01c --- /dev/null +++ b/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + be.thedrewen + endariel + 1.0-SNAPSHOT + + + 17 + 17 + + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + + + + + org.spigotmc + spigot-api + 1.21.7-R0.1-SNAPSHOT + provided + + + + \ No newline at end of file diff --git a/src/main/java/be/thedrewen/Main.java b/src/main/java/be/thedrewen/Main.java new file mode 100644 index 0000000..59414b2 --- /dev/null +++ b/src/main/java/be/thedrewen/Main.java @@ -0,0 +1,52 @@ +package be.thedrewen; + +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.plugin.java.JavaPlugin; + +import be.thedrewen.commands.Models; +import be.thedrewen.src.ChestsManager; +import be.thedrewen.src.EventManager; +import be.thedrewen.src.Farm; + + +public class Main extends JavaPlugin{ + + public static String prefix = "§b[§aEndariel§b]§a "; + + // Custom + public Farm farm; + public Models models; + public ChestsManager chestsManager; + + // set + public World world; + + @Override + public void onEnable() { + this.getServer().getConsoleSender().sendMessage(prefix+"Plugin chargé !"); + + // Events + this.getServer().getPluginManager().registerEvents(new EventManager(), this); + + // Custom + farm = new Farm(this); + this.getServer().getPluginManager().registerEvents(farm, this); + models = new Models(this); + this.getServer().getPluginManager().registerEvents(models, this); + this.getCommand("models").setExecutor(models); + chestsManager = new ChestsManager(this); + this.getServer().getPluginManager().registerEvents(chestsManager, this); + + // set + world = Bukkit.getWorld("world"); + } + + + @Override + public void onDisable() { + this.getServer().getConsoleSender().sendMessage(prefix+"Plugin déchargé !"); + } +} + +// e.getEntity().getWorld().spawnParticle(Particle.CLOUD, p, 1, 0, 0, 0,0); \ No newline at end of file diff --git a/src/main/java/be/thedrewen/commands/Models.java b/src/main/java/be/thedrewen/commands/Models.java new file mode 100644 index 0000000..8a45f7e --- /dev/null +++ b/src/main/java/be/thedrewen/commands/Models.java @@ -0,0 +1,111 @@ +package be.thedrewen.commands; + +import java.util.ArrayList; +import java.util.Optional; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.block.BlockState; +import org.bukkit.block.CommandBlock; +import org.bukkit.block.data.BlockData; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.scheduler.BukkitRunnable; + +import be.thedrewen.Main; +import be.thedrewen.src.Utils; +import be.thedrewen.src.custom.Model; + +public class Models implements CommandExecutor, Listener { + + private ArrayList models = new ArrayList<>(); + private Main main; + + public Models(Main main) { + this.main = main; + models.add(new Model( + "Model#Crate", + "minecraft:player_head[minecraft:custom_name={\"text\":\"Oak Crate\",\"color\":\"gold\",\"underlined\":true,\"bold\":true,\"italic\":false},profile={id:[I;-1007994559,-1679604778,-1794762551,1728396796],properties:[{name:\"textures\",value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmUxZWMzYWFmZjJkYzhkODU5MTU3NGZlNjZhZGFjZjYyNzFhMGFkYWQ5ZmY4MGI0NjU0ZTIxN2YzOGQ5ZTM3ZiJ9fX0=\"}]}] 1", + "/summon block_display ~-0.5 ~-0.5 ~-0.5 {Passengers:[{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;435182028,652006285,1982265827,465576613],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE0NTU2NSwKICAicHJvZmlsZUlkIiA6ICIwNTAzNzZmZjAxY2I0OGVjOTUwM2NhMjhjMWU2MzlkMSIsCiAgInByb2ZpbGVOYW1lIiA6ICJKb25haDU1OTAiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGI2MmVlZGM5MTBhOWM4NmUxNWU5MGUyYjkxZmIwZjI0ZmRjOTc1ZGM2YmUxNjI2ZmJmMDViMjk2OTQ5NTg0NiIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.25f,0f,1f,0f,0.5f,0f,0f,1f,0.25f,0f,0f,0f,1f]},{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;-1719494636,904447878,603764321,821904884],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE1MTI1MSwKICAicHJvZmlsZUlkIiA6ICIxNTUyNmU1OGZhOWE0NjBmODhhNmZhNjk1M2RlNjgzNyIsCiAgInByb2ZpbGVOYW1lIiA6ICJQaWVkcml0YTE3IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzk2Zjg1Yzc4ODIzMWMxNjgwMDdjNTYxNjMyN2ZhOTdlZGM4MDBmNDY2MmQ0NDJmMDdlZjg5NTc3NTQ4NTI2MDEiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.75f,0f,1f,0f,0.5f,0f,0f,1f,0.25f,0f,0f,0f,1f]},{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;-137103451,337023705,1861962498,1317402097],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE1NjczNSwKICAicHJvZmlsZUlkIiA6ICJiYzRlZGZiNWYzNmM0OGE3YWM5ZjFhMzlkYzIzZjRmOCIsCiAgInByb2ZpbGVOYW1lIiA6ICI4YWNhNjgwYjIyNDYxMzQwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzFiNTQ5NTQzZWE2YWJlNTk2MmFlNDg4MDFlZDY4MzNiNWVkYmZhMDY1YWZlNGNmZDcxNTVkNmYwM2FjNDM2NzgiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.75f,0f,1f,0f,0.5f,0f,0f,1f,0.75f,0f,0f,0f,1f]},{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;198318252,-1542825996,-2119735926,1667912998],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE2MjQ2MywKICAicHJvZmlsZUlkIiA6ICI3YTVkYmRlNDk0NWU0YTE4Yjg2OWY1MGY1NTJjNjlkYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJCdWtraXRBUEkiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTgwNGEyY2U2YzM2NmFlNDk1M2M1OWJkNDUyZjJlZmQyZWM1NTJmNTM1YmEyZTdmNzlhMzZhMzExYmFiNDE5YyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.25f,0f,1f,0f,0.5f,0f,0f,1f,0.75f,0f,0f,0f,1f]},{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;-769559302,-931765044,-100238730,881291772],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE0NTU2NSwKICAicHJvZmlsZUlkIiA6ICIwNTAzNzZmZjAxY2I0OGVjOTUwM2NhMjhjMWU2MzlkMSIsCiAgInByb2ZpbGVOYW1lIiA6ICJKb25haDU1OTAiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGI2MmVlZGM5MTBhOWM4NmUxNWU5MGUyYjkxZmIwZjI0ZmRjOTc1ZGM2YmUxNjI2ZmJmMDViMjk2OTQ5NTg0NiIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.75f,0f,1f,0f,1f,0f,0f,1f,0.75f,0f,0f,0f,1f]},{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;-1925527033,1411148063,1286768516,145878837],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE1MTI1MSwKICAicHJvZmlsZUlkIiA6ICIxNTUyNmU1OGZhOWE0NjBmODhhNmZhNjk1M2RlNjgzNyIsCiAgInByb2ZpbGVOYW1lIiA6ICJQaWVkcml0YTE3IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzk2Zjg1Yzc4ODIzMWMxNjgwMDdjNTYxNjMyN2ZhOTdlZGM4MDBmNDY2MmQ0NDJmMDdlZjg5NTc3NTQ4NTI2MDEiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.25f,0f,1f,0f,1f,0f,0f,1f,0.75f,0f,0f,0f,1f]},{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;1839877433,1997432432,-456468224,-1488396023],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE1NjczNSwKICAicHJvZmlsZUlkIiA6ICJiYzRlZGZiNWYzNmM0OGE3YWM5ZjFhMzlkYzIzZjRmOCIsCiAgInByb2ZpbGVOYW1lIiA6ICI4YWNhNjgwYjIyNDYxMzQwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzFiNTQ5NTQzZWE2YWJlNTk2MmFlNDg4MDFlZDY4MzNiNWVkYmZhMDY1YWZlNGNmZDcxNTVkNmYwM2FjNDM2NzgiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.25f,0f,1f,0f,1f,0f,0f,1f,0.25f,0f,0f,0f,1f]},{id:\"minecraft:item_display\",item:{id:\"minecraft:player_head\",Count:1,components:{\"minecraft:profile\":{id:[I;36216811,1333781149,-1178409489,446297731],properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTc0NTA3MDE2MjQ2MywKICAicHJvZmlsZUlkIiA6ICI3YTVkYmRlNDk0NWU0YTE4Yjg2OWY1MGY1NTJjNjlkYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJCdWtraXRBUEkiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTgwNGEyY2U2YzM2NmFlNDk1M2M1OWJkNDUyZjJlZmQyZWM1NTJmNTM1YmEyZTdmNzlhMzZhMzExYmFiNDE5YyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9\"}]}}},item_display:\"none\",transformation:[1f,0f,0f,0.75f,0f,1f,0f,1f,0f,0f,1f,0.25f,0f,0f,0f,1f]}]}")); + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + + if (sender instanceof Player) { + Player player = (Player) sender; + + Inventory inv = Bukkit.createInventory(null, 9, "§aModels"); + + models.forEach(m -> { + ItemStack item = Bukkit.getItemFactory().createItemStack(m.cmd); + Utils.setItemName(item, m.name); + inv.addItem(item); + }); + player.openInventory(inv); + } + + return true; + } + + @EventHandler + public void onBlockPlace(BlockPlaceEvent e) { + + Player player = e.getPlayer(); + Block block = e.getBlock(); + Location location = e.getBlock().getLocation(); + World world = e.getBlock().getWorld(); + + Optional model = models.stream().filter(m -> m.name.equals(e.getItemInHand().getItemMeta().getDisplayName())).findFirst(); + if(model.isPresent()) { + Model modelI = model.get(); + + Block blockTop = location.clone().add(0, 1, 0).getBlock(); + BlockState originalState = blockTop.getState(); + BlockData originalData = blockTop.getBlockData(); + block.setType(Material.COMMAND_BLOCK); + CommandBlock commandBlock = (CommandBlock) block.getState(); + commandBlock.setCommand(modelI.cmds); + commandBlock.update(); + + blockTop.setType(Material.REDSTONE_BLOCK); + blockTop.setBlockData(originalData); + originalState.update(true, false); + + new BukkitRunnable() { + public void run() { + location.getBlock().setType(Material.BARRIER); + }; + }.runTaskLater(main, 5L); + } + } + + @EventHandler + public void onBlockBreak(BlockBreakEvent e) { + Player player = e.getPlayer(); + Block block = e.getBlock(); + Location location = e.getBlock().getLocation(); + World world = e.getBlock().getWorld(); + if(block.getType() == Material.BARRIER) { + ArmorStand armorStand = (ArmorStand) world.spawnEntity(location, EntityType.ARMOR_STAND); + armorStand.setGravity(false); + armorStand.addScoreboardTag("delete_models"); + Bukkit.dispatchCommand(player, "execute at @e[tag=delete_models] run kill @e[distance=..0.5,type=!player]"); + armorStand.remove(); + } + } +} diff --git a/src/main/java/be/thedrewen/src/ChestsManager.java b/src/main/java/be/thedrewen/src/ChestsManager.java new file mode 100644 index 0000000..3a78da2 --- /dev/null +++ b/src/main/java/be/thedrewen/src/ChestsManager.java @@ -0,0 +1,43 @@ +package be.thedrewen.src; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.Chest; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.Inventory; + +import be.thedrewen.Main; + +public class ChestsManager implements Listener { + + private Main main; + + public ChestsManager(Main main) { + this.main = main; + } + + @EventHandler + public void onPlayerInteract(PlayerInteractEvent e) { + + if(e.getClickedBlock() != null) { + Block block = e.getClickedBlock(); + Player player = e.getPlayer(); + if(block.getType() == Material.CHEST) { + Chest chest = (Chest) block.getState(); + if(chest.getCustomName() != null && chest.getCustomName().equalsIgnoreCase("chest_home")) { + e.setCancelled(true); + + Inventory inv = Bukkit.createInventory(chest, 54); + + + + player.openInventory(inv); + } + } + } + } +} diff --git a/src/main/java/be/thedrewen/src/CustomMaterial.java b/src/main/java/be/thedrewen/src/CustomMaterial.java new file mode 100644 index 0000000..3a6a456 --- /dev/null +++ b/src/main/java/be/thedrewen/src/CustomMaterial.java @@ -0,0 +1,22 @@ + +package be.thedrewen.src; + +import org.bukkit.Material; + +public class CustomMaterial { + + public Material type; + public String name; + private boolean replacable = true; + + public CustomMaterial(Material type, String name, boolean replacable) { + this.type = type; + this.name = name; + this.replacable = replacable; + } + + public boolean isReplacable() { + return replacable; + } + +} diff --git a/src/main/java/be/thedrewen/src/EventManager.java b/src/main/java/be/thedrewen/src/EventManager.java new file mode 100644 index 0000000..6841f7b --- /dev/null +++ b/src/main/java/be/thedrewen/src/EventManager.java @@ -0,0 +1,12 @@ +package be.thedrewen.src; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; + +public class EventManager implements Listener{ + + @EventHandler + public void onChatSend(AsyncPlayerChatEvent e) { + } +} diff --git a/src/main/java/be/thedrewen/src/Farm.java b/src/main/java/be/thedrewen/src/Farm.java new file mode 100644 index 0000000..741536a --- /dev/null +++ b/src/main/java/be/thedrewen/src/Farm.java @@ -0,0 +1,93 @@ +package be.thedrewen.src; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Optional; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.entity.TextDisplay; +import org.bukkit.entity.Display.Billboard; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.scheduler.BukkitRunnable; + +import be.thedrewen.Main; + +public class Farm implements Listener { + + private Main main; + private ArrayList farmableBlock = new ArrayList<>(); + + public Farm(Main main) { + this.main = main; + + farmableBlock.add(new CustomMaterial(Material.SPRUCE_LOG, "§6Spruce Log", false)); + + // Minerais + farmableBlock.add(new CustomMaterial(Material.COAL_ORE, "§8Coal ore", true)); + farmableBlock.add(new CustomMaterial(Material.IRON_ORE, "§fIron ore", true)); + farmableBlock.add(new CustomMaterial(Material.COPPER_ORE, "§6Copper ore", true)); + farmableBlock.add(new CustomMaterial(Material.GOLD_ORE, "§eGold ore", true)); + farmableBlock.add(new CustomMaterial(Material.REDSTONE_ORE, "§cRedstone", true)); + farmableBlock.add(new CustomMaterial(Material.LAPIS_ORE, "§1Lapis", true)); + farmableBlock.add(new CustomMaterial(Material.DIAMOND_ORE, "§bDiamond", true)); + farmableBlock.add(new CustomMaterial(Material.EMERALD_ORE, "§2Emerald", true)); + } + + @EventHandler + public void onBlockBreak(BlockBreakEvent e) { + + Player player = e.getPlayer(); + Block block = e.getBlock(); + Location location = block.getLocation(); + Collection drops = block.getDrops(player.getInventory().getItemInMainHand()); + + if (player.getGameMode() == GameMode.SURVIVAL + && farmableBlock.stream().anyMatch(item -> item.type.equals(block.getType()))) { + e.setCancelled(true); + Optional customMaterial = farmableBlock.stream() + .filter(item -> item.type.equals(block.getType())).findFirst(); + if (customMaterial.isPresent()) { + CustomMaterial item = customMaterial.get(); + if (item.isReplacable()) { + block.setType(Material.BEDROCK); + } else { + block.setType(Material.AIR); + } + new BukkitRunnable() { + @Override + public void run() { + block.setType(item.type); + }; + }.runTaskLater(main, (Utils.getRandolInteger(5, 20) * 20)); + + if (drops.size() > 0) { + TextDisplay t = location.getWorld().spawn(new Location(location.getWorld(), + location.getBlockX() + 0.5, location.getBlockY() + 0.5, location.getBlockZ() + 0.5), + TextDisplay.class); + t.setBillboard(Billboard.CENTER); + t.setSeeThrough(true); + ItemStack drop = drops.stream().findFirst().get(); + t.setText("§a+" + drop.getAmount() + " " + item.name); + new BukkitRunnable() { + @Override + public void run() { + t.remove(); + } + }.runTaskLater(main, 30L); + player.getInventory().addItem(drop); + player.playSound(location, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0f, 1.0f); + } + } + } + } +} diff --git a/src/main/java/be/thedrewen/src/Utils.java b/src/main/java/be/thedrewen/src/Utils.java new file mode 100644 index 0000000..a78ac5c --- /dev/null +++ b/src/main/java/be/thedrewen/src/Utils.java @@ -0,0 +1,67 @@ +package be.thedrewen.src; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.components.CustomModelDataComponent; + +public class Utils { + + private static final Random random = new Random(); + + public static T getRandomElement(ArrayList list) { + + return list.get(random.nextInt(list.size())); + } + + public static Integer getRandolInteger(Integer min, Integer max) { + return random.nextInt(max - min + 1) + min; + } + + public static List getBlocksBetween(Location loc1, Location loc2) { + List blocks = new ArrayList<>(); + + int x1 = loc1.getBlockX(); + int y1 = loc1.getBlockY(); + int z1 = loc1.getBlockZ(); + + int x2 = loc2.getBlockX(); + int y2 = loc2.getBlockY(); + int z2 = loc2.getBlockZ(); + + for (int x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { + for (int y = Math.min(y1, y2); y <= Math.max(y1, y2); y++) { + for (int z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { + blocks.add(loc1.getWorld().getBlockAt(x, y, z)); + } + } + } + + return blocks; + } + + + public static void addCustomModelDataString(ItemStack item, String name) { + ItemMeta meta = item.getItemMeta(); + CustomModelDataComponent componentSword = meta.getCustomModelDataComponent(); + componentSword.setStrings(Arrays.asList(name)); + meta.setCustomModelDataComponent(componentSword); + item.setItemMeta(meta); + } + public static void setItemName(ItemStack item, String name) { + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName(name); + item.setItemMeta(meta); + } + public static void setItemLore(ItemStack item, List lores) { + ItemMeta meta = item.getItemMeta(); + meta.setLore(lores); + item.setItemMeta(meta); + } +} diff --git a/src/main/java/be/thedrewen/src/custom/Model.java b/src/main/java/be/thedrewen/src/custom/Model.java new file mode 100644 index 0000000..a864766 --- /dev/null +++ b/src/main/java/be/thedrewen/src/custom/Model.java @@ -0,0 +1,13 @@ +package be.thedrewen.src.custom; + +public class Model { + public String name; + public String cmd; + public String cmds; + + public Model(String name, String cmd, String cmds) { + this.name = name; + this.cmd = cmd; + this.cmds = cmds; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..79b6298 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,18 @@ +name: Endariel +main: be.thedrewen.Main +version: 1.0.0 +api-version: '1.21' +commands: + test: + description: "Tester les fonctions." + usage: /test + permission: be.thedrewen.op + + models: + description: "Ui pour faire spawn des Models 3Ds." + usage: /models + permission: be.thedrewen.op + +permissions: + be.thedrewen.op: + default: op \ No newline at end of file diff --git a/target/classes/be/thedrewen/Main.class b/target/classes/be/thedrewen/Main.class new file mode 100644 index 0000000..629e999 Binary files /dev/null and b/target/classes/be/thedrewen/Main.class differ diff --git a/target/classes/be/thedrewen/commands/Models.class b/target/classes/be/thedrewen/commands/Models.class new file mode 100644 index 0000000..6b1f6c3 Binary files /dev/null and b/target/classes/be/thedrewen/commands/Models.class differ diff --git a/target/classes/be/thedrewen/src/ChestsManager.class b/target/classes/be/thedrewen/src/ChestsManager.class new file mode 100644 index 0000000..7dae1fd Binary files /dev/null and b/target/classes/be/thedrewen/src/ChestsManager.class differ diff --git a/target/classes/be/thedrewen/src/CustomMaterial.class b/target/classes/be/thedrewen/src/CustomMaterial.class new file mode 100644 index 0000000..d9fe497 Binary files /dev/null and b/target/classes/be/thedrewen/src/CustomMaterial.class differ diff --git a/target/classes/be/thedrewen/src/EventManager.class b/target/classes/be/thedrewen/src/EventManager.class new file mode 100644 index 0000000..ee1e0e5 Binary files /dev/null and b/target/classes/be/thedrewen/src/EventManager.class differ diff --git a/target/classes/be/thedrewen/src/Farm.class b/target/classes/be/thedrewen/src/Farm.class new file mode 100644 index 0000000..7524037 Binary files /dev/null and b/target/classes/be/thedrewen/src/Farm.class differ diff --git a/target/classes/be/thedrewen/src/Utils.class b/target/classes/be/thedrewen/src/Utils.class new file mode 100644 index 0000000..32b183e Binary files /dev/null and b/target/classes/be/thedrewen/src/Utils.class differ diff --git a/target/classes/be/thedrewen/src/custom/Model.class b/target/classes/be/thedrewen/src/custom/Model.class new file mode 100644 index 0000000..585ca56 Binary files /dev/null and b/target/classes/be/thedrewen/src/custom/Model.class differ diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..79b6298 --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,18 @@ +name: Endariel +main: be.thedrewen.Main +version: 1.0.0 +api-version: '1.21' +commands: + test: + description: "Tester les fonctions." + usage: /test + permission: be.thedrewen.op + + models: + description: "Ui pour faire spawn des Models 3Ds." + usage: /models + permission: be.thedrewen.op + +permissions: + be.thedrewen.op: + default: op \ No newline at end of file