Skip to content

Commit

Permalink
Fixed bugs and added custom events
Browse files Browse the repository at this point in the history
  • Loading branch information
ImDaMilan committed Dec 23, 2022
1 parent 82679c7 commit 8ce31ff
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ public <T> void saveToConfig(Plugin plugin, Class<T> clazz) {
ArrayList<T> objects = (ArrayList<T>) clazz.getDeclaredMethod("getObjects").invoke(null);
for (Object object : objects) {
String key = "";
for (Field field : clazz.getDeclaredFields())
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
if (field.isAnnotationPresent(ConfigKey.class)) key = (String) field.get(object);
}
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
if (field.isAnnotationPresent(Path.class)) {
Expand All @@ -49,6 +51,7 @@ public <T> void saveToConfig(Plugin plugin, Class<T> clazz) {
File file = new File(plugin.getDataFolder(), name);
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
if (field.isAnnotationPresent(Path.class)) {
Path path = field.getAnnotation(Path.class);
try {
Expand Down Expand Up @@ -79,9 +82,9 @@ public <T> ArrayList<T> getFromConfig(Plugin plugin, Class<T> clazz) {
for (String key : configuration.getKeys(false)) {
T object = clazz.getDeclaredConstructor().newInstance();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
if (field.isAnnotationPresent(Path.class)) {
Path path = field.getAnnotation(Path.class);
field.setAccessible(true);
try {
field.set(object, configuration.get(key + path.value()));
} catch (IllegalAccessException e) {
Expand All @@ -101,6 +104,7 @@ public <T> ArrayList<T> getFromConfig(Plugin plugin, Class<T> clazz) {
File file = new File(plugin.getDataFolder(), name);
FileConfiguration configuration = YamlConfiguration.loadConfiguration(file);
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
if (field.isAnnotationPresent(Path.class)) {
Path path = field.getAnnotation(Path.class);
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.imdamilan.spigotadditions.events.custom;

import lombok.Getter;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.ItemStack;

public class AnvilItemTakeEvent extends Event {

private static final HandlerList handlers = new HandlerList();
private final @Getter Player player;
private final @Getter ItemStack item;
private final @Getter AnvilInventory inventory;

public AnvilItemTakeEvent(Player player, ItemStack item, AnvilInventory inventory) {
this.player = player;
this.item = item;
this.inventory = inventory;
}

@Override
public HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList() {
return handlers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.imdamilan.spigotadditions.events.custom;

import lombok.Getter;
import lombok.Setter;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;

import java.util.List;

public class PlayerKillEntityEvent extends Event {

private static final HandlerList handlers = new HandlerList();
private final @Getter Player killer;
private final @Getter LivingEntity entity;
private @Getter @Setter int exp;
private @Getter @Setter List<ItemStack> drops;

public PlayerKillEntityEvent(Player killer, LivingEntity entity, int exp, List<ItemStack> drops) {
this.killer = killer;
this.entity = entity;
this.exp = exp;
this.drops = drops;
}

@Override
public HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList() {
return handlers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.imdamilan.spigotadditions.events.custom.listeners;

import com.imdamilan.spigotadditions.events.Listener;
import com.imdamilan.spigotadditions.events.custom.AnvilItemTakeEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.AnvilInventory;

public class AnvilItemTakeListener {

public static @Listener void onAnvilItemTake(InventoryClickEvent event) {
if (event.getInventory() instanceof AnvilInventory inventory) {
if (event.getSlot() == 2) {
if (event.getCurrentItem() != null) {
Bukkit.getPluginManager().callEvent(new AnvilItemTakeEvent(Bukkit.getPlayer(event.getWhoClicked().getUniqueId()), event.getCurrentItem(), inventory));
}
}
} else if (event.getClickedInventory() instanceof AnvilInventory inventory) {
if (event.getSlot() == 2) {
if (event.getCurrentItem() != null) {
Bukkit.getPluginManager().callEvent(new AnvilItemTakeEvent(Bukkit.getPlayer(event.getWhoClicked().getUniqueId()), event.getCurrentItem(), inventory));
}
}
} else if (event.getWhoClicked().getOpenInventory().getTopInventory() instanceof AnvilInventory inventory) {
if (event.getSlot() == 2) {
if (event.getCurrentItem() != null) {
Bukkit.getPluginManager().callEvent(new AnvilItemTakeEvent(Bukkit.getPlayer(event.getWhoClicked().getUniqueId()), event.getCurrentItem(), inventory));
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.imdamilan.spigotadditions.events.custom.listeners;

import com.imdamilan.spigotadditions.events.Listener;
import com.imdamilan.spigotadditions.events.custom.PlayerKillEntityEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDeathEvent;

public class PlayerKillEntityListener {

public static @Listener void onPlayerKillEntity(EntityDeathEvent event) {
LivingEntity entity = event.getEntity();
Player player = entity.getKiller();
if (player != null) {
Bukkit.getPluginManager().callEvent(new PlayerKillEntityEvent(player, entity, event.getDroppedExp(), event.getDrops()));
}
}
}

0 comments on commit 8ce31ff

Please sign in to comment.