mirror of
https://github.com/songoda/UltimateStacker.git
synced 2024-09-27 14:12:59 +02:00
Fix spawner stacking disabled mobs
This commit is contained in:
parent
96d825044f
commit
d40db23f2f
@ -51,7 +51,6 @@ public class SpawnerListeners implements Listener {
|
|||||||
if (entity.getType() == EntityType.FIREWORK) return;
|
if (entity.getType() == EntityType.FIREWORK) return;
|
||||||
if (entity.getVehicle() != null) {
|
if (entity.getVehicle() != null) {
|
||||||
entity.getVehicle().remove();
|
entity.getVehicle().remove();
|
||||||
entity.remove();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
|
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
|
||||||
@ -59,16 +58,16 @@ public class SpawnerListeners implements Listener {
|
|||||||
for (Entity e : entity.getPassengers()) {
|
for (Entity e : entity.getPassengers()) {
|
||||||
e.remove();
|
e.remove();
|
||||||
}
|
}
|
||||||
entity.remove();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
entity.remove();
|
|
||||||
|
|
||||||
Location location = event.getSpawner().getLocation();
|
Location location = event.getSpawner().getLocation();
|
||||||
|
|
||||||
SpawnerStack spawnerStack = spawnerStackManager.getSpawner(location);
|
SpawnerStack spawnerStack = spawnerStackManager.getSpawner(location);
|
||||||
|
|
||||||
int amountToSpawn = spawnerStack.calculateSpawnCount();
|
int amountToSpawn = spawnerStack.calculateSpawnCount(entity.getType());
|
||||||
|
if (amountToSpawn <= 1) return;
|
||||||
|
entity.remove();
|
||||||
|
|
||||||
spawnerStack.spawn(amountToSpawn, "EXPLOSION_NORMAL", null, (e) -> {
|
spawnerStack.spawn(amountToSpawn, "EXPLOSION_NORMAL", null, (e) -> {
|
||||||
if (Settings.NO_AI.getBoolean())
|
if (Settings.NO_AI.getBoolean())
|
||||||
|
@ -1,21 +1,12 @@
|
|||||||
package com.songoda.ultimatestacker.stackable.entity;
|
package com.songoda.ultimatestacker.stackable.entity;
|
||||||
|
|
||||||
import com.songoda.ultimatestacker.UltimateStacker;
|
import com.songoda.ultimatestacker.UltimateStacker;
|
||||||
import com.songoda.ultimatestacker.utils.Methods;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Chunk;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class EntityStackManager {
|
public class EntityStackManager {
|
||||||
@ -132,6 +123,7 @@ public class EntityStackManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setStack(LivingEntity newEntity, int amount) {
|
public void setStack(LivingEntity newEntity, int amount) {
|
||||||
|
if (amount <= 0) return;
|
||||||
if (isStackedEntity(newEntity)) {
|
if (isStackedEntity(newEntity)) {
|
||||||
EntityStack stack = getStack(newEntity);
|
EntityStack stack = getStack(newEntity);
|
||||||
stack.setAmount(amount);
|
stack.setAmount(amount);
|
||||||
|
@ -10,6 +10,7 @@ import com.songoda.ultimatestacker.utils.Stackable;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.CreatureSpawner;
|
import org.bukkit.block.CreatureSpawner;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -47,7 +48,11 @@ public class SpawnerStack extends SSpawner implements Stackable, Hologramable {
|
|||||||
plugin.getDataManager().updateSpawner(this);
|
plugin.getDataManager().updateSpawner(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int calculateSpawnCount() {
|
public int calculateSpawnCount(EntityType type) {
|
||||||
|
if (!UltimateStacker.getInstance().getMobFile().getBoolean("Mobs." + type.name() + ".Enabled")) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (int i = 0; i < getAmount(); i++) {
|
for (int i = 0; i < getAmount(); i++) {
|
||||||
|
@ -9,12 +9,9 @@ import com.songoda.ultimatestacker.settings.Settings;
|
|||||||
import com.songoda.ultimatestacker.stackable.entity.Check;
|
import com.songoda.ultimatestacker.stackable.entity.Check;
|
||||||
import com.songoda.ultimatestacker.stackable.entity.EntityStack;
|
import com.songoda.ultimatestacker.stackable.entity.EntityStack;
|
||||||
import com.songoda.ultimatestacker.stackable.entity.EntityStackManager;
|
import com.songoda.ultimatestacker.stackable.entity.EntityStackManager;
|
||||||
import com.songoda.ultimatestacker.stackable.entity.StackedEntity;
|
|
||||||
import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntity;
|
import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntity;
|
||||||
import com.songoda.ultimatestacker.utils.Async;
|
|
||||||
import com.songoda.ultimatestacker.utils.CachedChunk;
|
import com.songoda.ultimatestacker.utils.CachedChunk;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -45,16 +42,12 @@ import org.bukkit.entity.TropicalFish;
|
|||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
import org.bukkit.entity.Zombie;
|
import org.bukkit.entity.Zombie;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
|
||||||
import org.bukkit.inventory.EntityEquipment;
|
import org.bukkit.inventory.EntityEquipment;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -67,7 +60,6 @@ import java.util.concurrent.Executors;
|
|||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class StackingTask extends TimerTask {
|
public class StackingTask extends TimerTask {
|
||||||
|
|
||||||
@ -187,6 +179,10 @@ public class StackingTask extends TimerTask {
|
|||||||
|| entity.hasMetadata("breedCooldown"))
|
|| entity.hasMetadata("breedCooldown"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!configurationSection.getBoolean("Mobs." + entity.getType().name() + ".Enabled")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Allow spawn if stackreasons are set and match, or if from a spawner
|
// Allow spawn if stackreasons are set and match, or if from a spawner
|
||||||
final String spawnReason = entity.hasMetadata("US_REASON") && !entity.getMetadata("US_REASON").isEmpty()
|
final String spawnReason = entity.hasMetadata("US_REASON") && !entity.getMetadata("US_REASON").isEmpty()
|
||||||
? entity.getMetadata("US_REASON").get(0).asString() : null;
|
? entity.getMetadata("US_REASON").get(0).asString() : null;
|
||||||
|
Loading…
Reference in New Issue
Block a user