Help

  • Thread starter Thread starter /u/AlosiOfficial
  • Start date Start date

/u/AlosiOfficial

Guest
Member
So I have a problem with my code.

* When I do /pick to pick power it picks it but the powers dont work as intended
*Shadow Power should make you invisible when right clicked
*Haste power should give you haste effect and speed effect when in inventory
*Creeper power will cuase enteties to fly away from you when right clicked and deals 5 damage.
*Every power with a right click power should have a action bar message when it is ready and the cooldown in minutes and seconds.

Main:

package net; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextColor; import java.util.HashMap; import java.util.UUID; public class Main extends JavaPlugin { private HashMap<UUID, Long> powerCooldowns; private HashMap<UUID, String> selectedPowers; @Override public void onEnable() { this.saveDefaultConfig(); // Initialize the maps powerCooldowns = new HashMap<>(); selectedPowers = new HashMap<>(); // Register custom recipes new CustomRecipes(this).registerCustomCraftingRecipes(); // Registers event listeners and commands registerListeners(); registerCommands(); // Schedule a task to update action bars Bukkit. getScheduler ().runTaskTimer(this, this::updateActionBars, 0, 20); // Update every second getLogger().info("Powers have been enabled!"); } @Override public void onDisable() { getLogger().info("Powers have been disabled."); } private void registerListeners() { // Register event listeners with only the plugin instance getServer().getPluginManager().registerEvents(new net.Listeners.ShadowPowerListener(this), this); getServer().getPluginManager().registerEvents(new net.Listeners.HastePowerListener(this), this); getServer().getPluginManager().registerEvents(new net.Listeners.CreeperPowerListener(this), this); } private void registerCommands() { // Pass the selectedPowers map to the PowerPicker command executor if (getCommand("pick") != null) { getCommand("pick").setExecutor(new net.Commands.PowerPicker(selectedPowers)); } else { getLogger().severe("Command /pick not found in plugin.yml! Please ensure it's properly registered."); } } // Methods to access the config values public int getShadowPowerCooldown() { return getConfig().getInt("shadow-power.cooldown", 60) * 1000; // Convert to milliseconds } public int getShadowPowerInvisibilityLength() { return getConfig().getInt("shadow-power.invisibility-length", 300) * 20; // Convert to ticks } public int getHastePowerSpeedLevel() { return getConfig().getInt("haste-power.speed-level", 1); } public int getHastePowerHasteLevel() { return getConfig().getInt("haste-power.haste-level", 1); } public double getCreeperPowerDamage() { return getConfig().getDouble("creeper-power.damage", 5.0); } public int getCreeperPowerCooldown() { return getConfig().getInt("creeper-power.cooldown", 60) * 1000; // Convert to milliseconds } public double getCreeperPowerLaunchPower() { return getConfig().getDouble("creeper-power.launch-power", 1.0); } // Cooldown methods public boolean isOnCooldown(UUID playerId, String power) { return powerCooldowns.containsKey(playerId) && (System. currentTimeMillis () - powerCooldowns.get(playerId) < getPowerCooldownDuration(power)); } public void setCooldown(UUID playerId, String power) { powerCooldowns.put(playerId, System. currentTimeMillis ()); } public long getRemainingCooldown(UUID playerId, String power) { if (!powerCooldowns.containsKey(playerId)) { return 0; } long elapsed = System. currentTimeMillis () - powerCooldowns.get(playerId); return Math. max (getPowerCooldownDuration(power) - elapsed, 0); } private long getPowerCooldownDuration(String power) { switch (power) { case "shadow": return getShadowPowerCooldown(); case "creeper": return getCreeperPowerCooldown(); default: return 0; } } private void updateActionBars() { for (Player player : Bukkit. getOnlinePlayers ()) { UUID playerId = player.getUniqueId(); String power = selectedPowers.get(playerId); if (power != null) { if (isOnCooldown(playerId, power)) { long remaining = getRemainingCooldown(playerId, power); long minutes = remaining / 60000; long seconds = (remaining % 60000) / 1000; player.sendActionBar(Component. text (String. format ("Cooldown: %02d:%02d", minutes, seconds)) .color(TextColor. fromHexString ("#ff0000"))); // Red text for cooldown } else { player.sendActionBar(Component. text ("Power Ready!") .color(TextColor. fromHexString ("#00ff00"))); // Green text for ready } } } } }

Power Picker:

package net.Commands; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import java.util.HashMap; import java.util.UUID; public class PowerPicker implements CommandExecutor { private final HashMap<UUID, String> selectedPowers; public PowerPicker(HashMap<UUID, String> selectedPowers) { this.selectedPowers = selectedPowers; } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage("This command can only be used by players!"); return true; } Player player = (Player) sender; ItemStack itemInHand = player.getInventory().getItemInMainHand(); // Check if the item in hand is null or its meta is null if (itemInHand == null || itemInHand.getType().isAir() || itemInHand.getItemMeta() == null) { player.sendMessage(Component. text ("You must hold a valid power item to pick it!").color(TextColor. fromHexString ("#ff0000"))); // Red color return true; } ItemMeta meta = itemInHand.getItemMeta(); // Check for custom model data if (meta != null && meta.hasCustomModelData()) { int modelData = meta.getCustomModelData(); switch (modelData) { case 2: // Custom model data for Haste Power selectedPowers.put(player.getUniqueId(), "haste"); player.sendMessage(Component. text ("You have selected Haste Power!").color(TextColor. fromHexString ("#00ff00"))); // Green color return true; case 1: // Custom model data for Shadow Power selectedPowers.put(player.getUniqueId(), "shadow"); player.sendMessage(Component. text ("You have selected Shadow Power!").color(TextColor. fromHexString ("#5c2e91"))); // Dark purple color return true; case 3: // Custom model data for Creeper Power selectedPowers.put(player.getUniqueId(), "creeper"); player.sendMessage(Component. text ("You have selected Creeper Power!").color(TextColor. fromHexString ("#00ff00"))); // Bright green color return true; default: player.sendMessage(Component. text ("The item you're holding does not have a recognized power.").color(TextColor. fromHexString ("#ff0000"))); // Red color return true; } } player.sendMessage(Component. text ("The item you're holding is not a valid power item.").color(TextColor. fromHexString ("#ff0000"))); // Red color return true; } }

Shadow Power listener:

package net.Listeners; import net.Main; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.scheduler.BukkitRunnable; import java.util.Collections; import java.util.Objects; import java.util.UUID; public class ShadowPowerListener implements Listener { private final Main plugin; public ShadowPowerListener(Main plugin) { this.plugin = plugin; } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); if (hasShadowPower(player) && event.getAction() == Action. RIGHT_CLICK_AIR ) { UUID playerId = player.getUniqueId(); if (plugin.isOnCooldown(playerId, "Shadow Power")) { long remaining = plugin.getRemainingCooldown(playerId, "Shadow Power"); long minutes = remaining / 60000; long seconds = (remaining % 60000) / 1000; player.sendActionBar(Component. text (String. format ("Cooldown: %02d:%02d", minutes, seconds)) .color(TextColor. fromHexString ("#ff0000"))); // Red text for cooldown return; } activateShadowPower(player); plugin.setCooldown(playerId, "Shadow Power"); } } private boolean hasShadowPower(Player player) { for (ItemStack item : player.getInventory()) { if (item != null && item.getType() == Material. ENDER_PEARL ) { ItemMeta meta = item.getItemMeta(); if (meta != null) { boolean hasCorrectName = Objects. equals (meta.displayName(), Component. text ("Shadow Power").color(TextColor. fromHexString ("#4b0082"))); boolean hasCorrectLore = Objects. equals (meta.lore(), Collections. singletonList (Component. text ("Grants invisibility and speed boost.").color(TextColor. fromHexString ("#a0a0a0")))); if (hasCorrectName && hasCorrectLore) { return true; } } } } return false; } private void activateShadowPower(Player player) { player.addPotionEffect(new PotionEffect(PotionEffectType. INVISIBILITY , 200, 0, false, false, false)); // 10 seconds player.addPotionEffect(new PotionEffect(PotionEffectType. SPEED , 200, 1, false, false, false)); // 10 seconds // Inform the player that the power is activated player.sendMessage(Component. text ("Shadow Power activated!").color(TextColor. fromHexString ("#4b0082"))); // Optionally, you can use a task to automatically remove the effects after a period new BukkitRunnable() { @Override public void run() { removeShadowPowerEffects(player); } }.runTaskLater(plugin, 200L); // Remove effects after 10 seconds } private void removeShadowPowerEffects(Player player) { player.removePotionEffect(PotionEffectType. INVISIBILITY ); player.removePotionEffect(PotionEffectType. SPEED ); player.sendMessage(Component. text ("Shadow Power effects have ended.").color(TextColor. fromHexString ("#ff0000"))); } }

Haste Power Listener

package net.Listeners; import net.Main; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerItemHeldEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import java.util.Collections; import java.util.Objects; import java.util.UUID; public class HastePowerListener implements Listener { private final Main plugin; public HastePowerListener(Main plugin) { this.plugin = plugin; } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); updateHasteEffects(player); } @EventHandler public void onPlayerItemHeld(PlayerItemHeldEvent event) { Player player = event.getPlayer(); updateHasteEffects(player); } private boolean hasHastePower(Player player) { UUID playerId = player.getUniqueId(); for (ItemStack item : player.getInventory()) { if (item != null && item.getType() == Material. AMETHYST_SHARD ) { ItemMeta meta = item.getItemMeta(); if (meta != null) { boolean hasCorrectName = Objects. equals (meta.displayName(), Component. text ("Haste Power").color(TextColor. fromHexString ("#f0e500"))); boolean hasCorrectLore = Objects. equals (meta.lore(), Collections. singletonList (Component. text ("Grants the wielder enhanced speed and mining power.").color(TextColor. fromHexString ("#a0a0a0")))); if (hasCorrectName && hasCorrectLore) { return true; } } } } return false; } private void updateHasteEffects(Player player) { UUID playerId = player.getUniqueId(); if (hasHastePower(player)) { applyHasteEffects(player); } else { removeHasteEffects(player); } // Update action bar based on cooldown if (plugin.isOnCooldown(playerId, "Haste Power")) { long remaining = plugin.getRemainingCooldown(playerId, "Haste Power"); long minutes = remaining / 60000; long seconds = (remaining % 60000) / 1000; player.sendActionBar(Component. text (String. format ("Cooldown: %02d:%02d", minutes, seconds)) .color(TextColor. fromHexString ("#ff0000"))); // Red text for cooldown } else { player.sendActionBar(Component. text ("Power Ready!") .color(TextColor. fromHexString ("#00ff00"))); // Green text for ready } } private void applyHasteEffects(Player player) { int speedLevel = plugin.getConfig().getInt("haste-power.speed-level") - 1; int hasteLevel = plugin.getConfig().getInt("haste-power.haste-level") - 1; player.addPotionEffect(new PotionEffect(PotionEffectType. SPEED , Integer. MAX_VALUE , speedLevel, false, false, false)); player.addPotionEffect(new PotionEffect(PotionEffectType. HASTE , Integer. MAX_VALUE , hasteLevel, false, false, false)); // Start cooldown if not already started UUID playerId = player.getUniqueId(); if (!plugin.isOnCooldown(playerId, "Haste Power")) { plugin.setCooldown(playerId, "Haste Power"); } } private void removeHasteEffects(Player player) { player.removePotionEffect(PotionEffectType. SPEED ); player.removePotionEffect(PotionEffectType. HASTE ); } }

Creeper Power Listener

package net.Listeners; import net.Main; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextColor; import org.bukkit.Material; import org.bukkit.Particle; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scheduler.BukkitRunnable; import java.util.Collections; import java.util.Objects; import java.util.UUID; public class CreeperPowerListener implements Listener { private final Main plugin; public CreeperPowerListener(Main plugin) { this.plugin = plugin; } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); if (hasCreeperPower(player) && event.getAction() == Action. RIGHT_CLICK_AIR ) { UUID playerId = player.getUniqueId(); if (plugin.isOnCooldown(playerId, "Creeper Power")) { player.sendMessage(Component. text ("Power is on cooldown!").color(TextColor. fromHexString ("#ff0000"))); return; } activateCreeperPower(player); plugin.setCooldown(playerId, "Creeper Power"); } } private boolean hasCreeperPower(Player player) { for (ItemStack item : player.getInventory()) { if (item != null && item.getType() == Material. GUNPOWDER ) { // Assuming Creeper Power is represented by Gunpowder ItemMeta meta = item.getItemMeta(); if (meta != null) { boolean hasCorrectName = Objects. equals (meta.displayName(), Component. text ("Creeper Power").color(TextColor. fromHexString ("#ff0000"))); boolean hasCorrectLore = Objects. equals (meta.lore(), Collections. singletonList (Component. text ("Grants explosive power.").color(TextColor. fromHexString ("#a0a0a0")))); if (hasCorrectName && hasCorrectLore) { return true; } } } } return false; } private void activateCreeperPower(Player player) { // Send activation message to the player player.sendMessage(Component. text ("Creeper Power activated!").color(TextColor. fromHexString ("#ff0000"))); // Define the radius of effect double radius = 5.0; double damage = plugin.getCreeperPowerDamage(); double launchPower = plugin.getCreeperPowerLaunchPower(); // Get the player's location org.bukkit.Location location = player.getLocation(); // Create an explosion at the player's location without damaging blocks player.getWorld().createExplosion(location, 0, false, false); // Apply effects to entities within the radius player.getWorld().getNearbyEntities(location, radius, radius, radius).forEach(entity -> { if (entity instanceof Player || entity instanceof org.bukkit.entity.LivingEntity) { // Deal damage to the entity ((org.bukkit.entity.LivingEntity) entity).damage(damage, player); // Calculate and apply knockback org.bukkit.util.Vector direction = entity.getLocation().toVector().subtract(location.toVector()).normalize().multiply(launchPower); entity.setVelocity(direction); // Create a particle effect at the entity's location player.getWorld().spawnParticle(Particle. EXPLOSION , entity.getLocation(), 1); } }); // Optionally, remove effects after a period new BukkitRunnable() { @Override public void run() { removeCreeperPowerEffects(player); } }.runTaskLater(plugin, 200L); // Remove effects after 10 seconds } private void removeCreeperPowerEffects(Player player) { // Implementation to remove Creeper Power effects player.sendMessage(Component. text ("Creeper Power effects have ended.").color(TextColor. fromHexString ("#ff0000"))); } }
submitted by /u/AlosiOfficial
[link] [comments]

Continue reading...

free plugins
minecraft paid for free
spigotmc
SpigotMC
free minecraft paid plugins
free minecraft plugins
aac free
ewg free
Minecraft Premium Plugins
ewg free download
litebans free
epicworldgenerator free
free schematics
leaked schematics minecraft
schematics
schematics leaked
schematics free
minecraft schematics free
paid minecraft schematics free
paid minecraft schematics for free
free cracked plugins
free cracked minecraft plugins
plugins
featherboard download
featherboard plugin download
antiaura download
minecraft plugins
xenforo leaked
xenforo for free
xenforo addons
 
Top