• Trong thời gian này, bạn không thể tạo bài mới, đăng comment, hay tạo tài nguyên mới để diễn đàn dọn dẹp nội dung.
    Diễn đàn sẽ sớm mở trở lại, chi tiết hãy theo dõi tại Discord
acayr1n

Đã giải quyết Coding: EntityDamageByEntityEvent

Trạng thái
Không mở trả lời sau này.
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 à ?
 
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.
Nội dung tương tự Xem nhiều nhất Xem thêm

Thống kê nội dung

Tạo
acayr1n,
Trả lời lần cuối từ
Kazoku,
Trả lời
5
Lượt xem
673
Quay lại
Trên cùng