diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java index 8a003ff..94ccab7 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java @@ -1,15 +1,19 @@ package xyz.mineconomia.mineconomiacore; +import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager; import xyz.mineconomia.mineconomiacore.commands.BookCommand; +import xyz.mineconomia.mineconomiacore.commands.funHarvestBall; import xyz.mineconomia.mineconomiacore.commands.mcore; import xyz.mineconomia.mineconomiacore.commands.tpw; +import xyz.mineconomia.mineconomiacore.handlers.FHBHandler; import java.util.Objects; import java.util.logging.Logger; public final class MineconomiaCore extends JavaPlugin { + public static Logger logger = Bukkit.getLogger(); @Override public void onEnable() { @@ -29,10 +33,12 @@ public final class MineconomiaCore extends JavaPlugin { logger.info("╚═══════════════════════════════╝"); logger.info(""); Objects.requireNonNull(plugin.getCommand("mcore")).setExecutor(new mcore()); + getServer().getPluginManager().registerEvents(new FHBHandler(), this); //BookCommand Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand()); Objects.requireNonNull(getCommand("tpw")).setExecutor(new tpw()); + Objects.requireNonNull(getCommand("fhb")).setExecutor(new funHarvestBall()); //CustomItems ItemManager.init(); diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/funHarvestBall.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/funHarvestBall.java new file mode 100644 index 0000000..9ae6dd3 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/funHarvestBall.java @@ -0,0 +1,31 @@ +package xyz.mineconomia.mineconomiacore.commands; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +public class funHarvestBall implements CommandExecutor { + @Override + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { + if (commandSender instanceof Player){ + ItemStack ball = new ItemStack(Material.SNOWBALL, 16); + ItemMeta ballMeta = ball.getItemMeta(); + assert ballMeta != null; + ballMeta.addEnchant(Enchantment.DURABILITY, 1, true); + ballMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); + ballMeta.setDisplayName(ChatColor.AQUA + "Koule zábavného sklízení"); + ball.setItemMeta(ballMeta); + ((Player) commandSender).getInventory().addItem(ball); + + } + return false; + } +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/handlers/FHBHandler.java b/src/main/java/xyz/mineconomia/mineconomiacore/handlers/FHBHandler.java new file mode 100644 index 0000000..e93158d --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/handlers/FHBHandler.java @@ -0,0 +1,72 @@ +package xyz.mineconomia.mineconomiacore.handlers; + +import org.bukkit.*; +import org.bukkit.block.Block; +import org.bukkit.block.data.Ageable; +import org.bukkit.block.data.BlockData; + +import org.bukkit.entity.Player; +import org.bukkit.entity.Snowball; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.inventory.ItemStack; +import xyz.mineconomia.mineconomiacore.MineconomiaCore; + +import java.util.Objects; + +public class FHBHandler implements Listener { + @EventHandler + public void onFHBHit(ProjectileHitEvent event){ + if (event.getEntity() instanceof Snowball){ + Snowball ball = (Snowball) event.getEntity(); + MineconomiaCore.logger.info(ball.getCustomName()); + if (Objects.equals(ball.getCustomName(), "kzs")){ + if (event.getHitBlock() != null && event.getHitBlock().getType().equals(Material.FARMLAND)){ + Location loc = event.getHitBlock().getLocation(); + loc.setY(loc.getBlockY() + 1 ); + MineconomiaCore.logger.info(loc.getBlock().getType().toString()); + int cx = loc.getBlockX(); + int cy = loc.getBlockY(); + int cz = loc.getBlockZ(); + World w = loc.getWorld(); + int r = 10; + int rSquared = r * r; + for (int x = cx - r; x <= cx +r; x++) { + for (int z = cz - r; z <= cz +r; z++) { + if ((cx - x) * (cx - x) + (cz - z) * (cz - z) <= rSquared) { + assert w != null; + Block block = w.getBlockAt(x,cy,z); + if (block.getType().equals(Material.WHEAT )){ + Ageable wheatData = (Ageable) block.getBlockData(); + if (wheatData.getAge() == 7){ + wheatData.setAge(0); + w.playSound(block.getLocation(), "minecraft:block.crop.break", 100, 1); + block.setBlockData(wheatData); + w.dropItemNaturally(block.getLocation(), new ItemStack(Material.WHEAT, 1)); + w.spawnParticle(Particle.EXPLOSION_NORMAL, block.getLocation(), 0); + } + } + } + } + } + } + MineconomiaCore.logger.info(Objects.requireNonNull(event.getHitBlock()).getType().toString()); + } + } + } + @EventHandler + public void onFHBThrown(ProjectileLaunchEvent event){ + if (event.getEntity() instanceof Snowball){ + Snowball ball = (Snowball) event.getEntity(); + if (ball.getShooter() instanceof Player){ + Player player = (Player) ball.getShooter(); + ItemStack item = player.getInventory().getItemInMainHand(); + if (Objects.requireNonNull(item.getItemMeta()).getDisplayName().equals(ChatColor.AQUA + "Koule zábavného sklízení")){ + ball.setCustomName("kzs"); + } + } + } + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d5f43b1..c9119b8 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -13,3 +13,5 @@ commands: description: "administrator's command" pomoc: usage: "toto je potřeba někdy dodělat - Kubík" + fhb: + description: "dá kuzelnou kouli sklizně "