Added ability to stack by spawn reason.

This commit is contained in:
Brianna 2019-06-15 04:49:12 -04:00
parent 4dfe48bc16
commit 7fdf7bbe3d
4 changed files with 14 additions and 2 deletions

View File

@ -2,7 +2,7 @@ package com.songoda.ultimatestacker.entity;
public enum Check { public enum Check {
SPAWN_REASON(false), // ToDo: This SPAWN_REASON(false),
NERFED(true), NERFED(true),
AGE(true), AGE(true),
TICK_AGE(false), TICK_AGE(false),

View File

@ -15,9 +15,12 @@ import org.bukkit.entity.*;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
@ -31,6 +34,11 @@ public class EntityListeners implements Listener {
this.instance = instance; this.instance = instance;
} }
@EventHandler
public void onSpawn(CreatureSpawnEvent event) {
event.getEntity().setMetadata("US_REASON", new FixedMetadataValue(instance, event.getSpawnReason().name()));
}
@EventHandler @EventHandler
public void onEgg(ItemSpawnEvent event) { public void onEgg(ItemSpawnEvent event) {
if (event.getEntity().getItemStack().getType() != Material.EGG) return; if (event.getEntity().getItemStack().getType() != Material.EGG) return;

View File

@ -188,6 +188,10 @@ public class Methods {
for (String checkStr : checks) { for (String checkStr : checks) {
Check check = Check.valueOf(checkStr); Check check = Check.valueOf(checkStr);
switch (check) { switch (check) {
case SPAWN_REASON: {
if (initalEntity.hasMetadata("US_REASON"))
entityList.removeIf(entity -> entity.hasMetadata("US_REASON") && !entity.getMetadata("US_REASON").get(0).asString().equals("US_REASON"));
}
case AGE: { case AGE: {
if (!(initalEntity instanceof Ageable)) break; if (!(initalEntity instanceof Ageable)) break;

View File

@ -61,7 +61,7 @@ public enum Setting {
"These are checks that are processed before an entity is stacked.", "These are checks that are processed before an entity is stacked.",
"You can add and remove from the list at will.", "You can add and remove from the list at will.",
"The acceptable check options are:", "The acceptable check options are:",
"NERFED, AGE, TICK_AGE, PHANTOM_SIZE", "SPAWN_REASON, NERFED, AGE, TICK_AGE, PHANTOM_SIZE",
"CAN_BREED, IS_TAMED, ANIMAL_OWNER, SKELETON_TYPE", "CAN_BREED, IS_TAMED, ANIMAL_OWNER, SKELETON_TYPE",
"ZOMBIE_BABY, SLIME_SIZE, PIG_SADDLE, SHEEP_SHEERED", "ZOMBIE_BABY, SLIME_SIZE, PIG_SADDLE, SHEEP_SHEERED",
"SHEEP_COLOR, WOLF_COLLAR_COLOR, OCELOT_TYPE, HORSE_COLOR", "SHEEP_COLOR, WOLF_COLLAR_COLOR, OCELOT_TYPE, HORSE_COLOR",