• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
acayr1n

Đã giải quyết Coding: EntityDamageByEntityEvent

Trạng thái
Không mở trả lời sau này.

acayr1n

DEVELOPER
WIBU
THÀNH VIÊN
Tham gia
21/02/2018
Bài viết
667
về cái event EntityDamgeByEntityEvent, một lý do nào đó nó không hoạt động :v
có gì thì ae coder help tui với, đang làm plugin :v
@lequanglam @PigVN @Takahata Shun @KeoDeoVN blah blah blah...
Specs >
- Java 1.8.0_162 - with Maven + Tomcat
- Spigot-API 1.8.3-R01-SNAPSHOT
- IDE xài Eclipse CHE (Codenvy)
Source java
HTML:
package ml.acayrin.punch;

import java.util.*;
import org.bukkit.*;
import org.bukkit.command.*;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.event.*;
import org.bukkit.entity.*;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.scheduler.BukkitScheduler;

public class Punch extends JavaPlugin implements Listener {
    private String prefix = "&7[&aPunchPower&7] >> ";
  
    // Store stacks
    private HashMap<Player,Integer> stacks = new HashMap<Player,Integer>();
  
    public void loadConfiguration() {
        this.getConfig().options().copyDefaults(true);
        this.saveConfig();
    }
    public String mess(String mess) {
        return ChatColor.translateAlternateColorCodes('&', mess);
    }
    public void onEnable() {
        getLogger().info("Punch mode activated!");
        getLogger().info("Plugin by Acayrin");
        loadConfiguration();
        // Scheduler to increase stack overtime
        BukkitScheduler scheduler = getServer().getScheduler();
        scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
                    // Increase 1 stack every 1 second
                    for (Player player : getServer().getOnlinePlayers()) {
                        if (stacks.get(player) == null) stacks.put(player,0);
                        if (player != null && stacks.get(player) != null && stacks.get(player) < MaxStackAmount) stacks.replace(player,stacks.get(player)+SchedulerAmount);
                        player.sendMessage(mess("&aCurrent stack &c"+stacks.get(player)+" &astack(s)"));
                    }
                }
        }, 0L, Scheduler);
    }
    public void onDisable() {
        getLogger().info("Punch mode deactivated!");
    }
  
    @EventHandler
    public void onQuit(PlayerQuitEvent event) {
        // Reset stacks on disconnect
        Player player = event.getPlayer();
        stacks.remove(player);
        getLogger().info("Reset stacks for "+player.getName());
    }
    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        // Reset stacks on disconnect
        Player player = event.getPlayer();
        stacks.put(player,1);
    }
  
    // Listen for Player Hit Player event
    @EventHandler
    public void onPlayerDamage(EntityDamageByEntityEvent event) {
        Entity damager = event.getDamager();
        if (damager instanceof Player) {
            Player player = (Player) damager;
            double damage = event.getDamage();
            int CurStack = stacks.get(player);
            if (CurStack == MaxStackAmount) {
                // Set damage
                // Current damage + (Damage per stack x Max Stack Amount) = Flat Damage
                // Current damage + (Current damage x (Current stacks / Max stacks) x 100) = Percentage damage
                if (DPSType == 1) {
                    event.setDamage(damage+(DPS*MaxStackAmount));
                    player.sendMessage(mess("&aYou dealt &c"+(damage+(DPS*MaxStackAmount))));
                } else {
                    event.setDamage(damage+(damage*((CurStack/MaxStackAmount)*100)));
                    player.sendMessage(mess("&aYou dealt &c"+(damage+(damage*((CurStack/MaxStackAmount)*100)))));
                }
                double x = player.getLocation().getX();
                double y = player.getLocation().getY();
                double z = player.getLocation().getZ();
                // Make a primedTNT
                player.getWorld().createExplosion(x,y,z,ExplodeDamage,CanCauseFire,CanBreakBlock);
                stacks.replace(player,0);
            } else {
                if (DPSType == 1) {
                    event.setDamage(damage+(DPS*MaxStackAmount));
                    player.sendMessage(mess("&aYou dealt &c"+(damage+(DPS*MaxStackAmount))));
                } else {
                    event.setDamage(damage+(damage*((CurStack/MaxStackAmount)*100)));
                    player.sendMessage(mess("&aYou dealt &c"+(damage+(damage*((CurStack/MaxStackAmount)*100)))));
                }
                stacks.replace(player,CurStack + StackOnHit);
            }
        }
    }
  
    // Commands
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("punch")) {
           if (args.length == 0) {
               sender.sendMessage(mess("&7-----[ &bPunchPower by Acayrin &7]-----"));
               sender.sendMessage(mess("&a/punch reload &7>> &bReload plugin"));
               sender.sendMessage(mess("&a/punch me &7>> &bGet current information"));
               return true;
           }
           if (args[0].equalsIgnoreCase("reload")) {
               this.reloadConfig();
               sender.sendMessage(mess(prefix + " Config reloaded!"));
           }
           if (args[0].equalsIgnoreCase("me")) {
               sender.sendMessage(mess("&aPlayer name &b"+sender.getName()));
               sender.sendMessage(mess("&aStacks &c"+stacks.get(Bukkit.getPlayer(sender.getName()))));
               if (DPSType == 1) {
                    sender.sendMessage(mess("&aDamage extra &c"+(DPS*MaxStackAmount)));
                } else {
                    sender.sendMessage(mess("&aDamage extra &c"+((stacks.get(Bukkit.getPlayer(sender.getName())))/MaxStackAmount)*100));
                }
           }
        }
        return true;
    }
  
    // Config zone
    private int DPS = this.getConfig().getInt("DamagePerStack");
    private int StackOnHit = this.getConfig().getInt("OnHitStack");
    private int MaxStackAmount = this.getConfig().getInt("MaxStackAmount");
    private float ExplodeDamage = this.getConfig().getInt("ExplosionDPS");
    private boolean CanCauseFire = this.getConfig().getBoolean("CanCauseFire");
    private boolean CanBreakBlock = this.getConfig().getBoolean("CanBreakBlock");
    private int DPSType = this.getConfig().getInt("DamageType");
    private int Scheduler = this.getConfig().getInt("RestackTime")*20;
    private int SchedulerAmount = this.getConfig().getInt("RestackAmount");
}
Source ymls
HTML:
# PunchPower - Part of PvPPowers
# Code by Acayrin
# v1.0-SNAPSHOT
#
# Damage type [1=Flat,2=Percentage]
DamageType: 1
# Amount of damage increase per stack [Number]
DamagePerStack: 1
# Amount of stack(s) increase per hit [Number]
OnHitStack: 1
# Max stacks amount [Number]
MaxStackAmount: 20
# Explosion damage [Number]
ExplosionDPS: 8
# Explosion can cause fire? [Boolean]
CanCauseFire: false
# Explosion can breaks blocks? [Boolean]
CanBreakBlock: false
# Restack time - per X second(s) [Number]
RestackTime: 3
# Restack amount - X stack per time [Number]
RestackAmount: 2
HTML:
name: PunchPower
version: 1.0-SNAPSHOT
main: ml.acayrin.punch.Punch
load: STARTUP
authors: [Acayrin]
description: PunchPower - PvPPowers
commands:
   punch:
      description: Main PucnhPower help command
      permission: punch.*
      usage: /punch [reload|me]
klq nhưng bác đang code lại cái power em nhờ bác kia code à ?
 
thêm phần này vào onEnable()
Bukkit.getPluginManager().registerEvents(this, this);
 
do chưa register events thôi :D chú ý "events" not "event"
 
Trạng thái
Không mở trả lời sau này.
Similar content Most view Xem thêm
Back
Top Bottom