Fix version token parsing, spawner & stackable fix, water/lava fix

This commit is contained in:
Esophose 2019-04-22 13:51:49 -06:00
parent 1b824278ac
commit b45446d13c
2 changed files with 42 additions and 20 deletions

View File

@ -37,8 +37,8 @@ dependencies {
}
processResources {
filter ReplaceTokens, tokens: ["version": project.property("version")]
from (sourceSets.main.resources.srcDirs) {
include '**/*.yml'
filter ReplaceTokens, tokens: ["version": project.property("version")]
}
}

View File

@ -12,7 +12,11 @@ import me.goodandevil.skyblock.utils.version.Materials;
import me.goodandevil.skyblock.utils.version.NMSUtil;
import me.goodandevil.skyblock.utils.version.Sounds;
import me.goodandevil.skyblock.world.WorldManager;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.ChunkSnapshot;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.EntityType;
@ -22,7 +26,11 @@ import org.bukkit.scheduler.BukkitRunnable;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.logging.Level;
public class LevellingManager {
@ -63,6 +71,13 @@ public class LevellingManager {
Map<LevellingData, Long> levellingData = new HashMap<>();
List<Material> blacklistedMaterials = new ArrayList<>();
blacklistedMaterials.add(Materials.AIR.getPostMaterial());
blacklistedMaterials.add(Materials.WATER.getPostMaterial());
blacklistedMaterials.add(Materials.LEGACY_STATIONARY_WATER.getPostMaterial());
blacklistedMaterials.add(Materials.LAVA.getPostMaterial());
blacklistedMaterials.add(Materials.LEGACY_STATIONARY_LAVA.getPostMaterial());
new BukkitRunnable() {
@Override
public void run() {
@ -118,7 +133,7 @@ public class LevellingManager {
blockData = (int) getBlockTypeDataMethod.invoke(chunkSnapshotList, x, y, z);
}
if (blockMaterial == org.bukkit.Material.AIR)
if (blacklistedMaterials.contains(blockMaterial))
continue;
long amount = 1;
@ -134,14 +149,18 @@ public class LevellingManager {
amount = spawner.getSpawnerDataCount();
spawnerType = spawner.getCreatureSpawner().getSpawnedType();
}
} else if (isWildStackerEnabled) {
}
if (isWildStackerEnabled && spawnerType == null) {
com.bgsoftware.wildstacker.api.handlers.SystemManager wildStacker = com.bgsoftware.wildstacker.api.WildStackerAPI.getWildStacker().getSystemManager();
if (wildStacker.isStackedSpawner(location.getBlock())) {
com.bgsoftware.wildstacker.api.objects.StackedSpawner spawner = wildStacker.getStackedSpawner(location);
amount = spawner.getStackAmount();
spawnerType = spawner.getSpawnedType();
}
} else {
}
if (spawnerType == null) {
spawnerType = ((CreatureSpawner) location.getBlock().getState()).getSpawnedType();
}
} else {
@ -159,12 +178,14 @@ public class LevellingManager {
blockData = 0;
}
}
} else if (stackableManager != null && stackableManager.getStackableMaterials().contains(blockMaterial)) {
}
if (stackableManager != null && stackableManager.getStackableMaterials().contains(blockMaterial) && amount == 1) {
World world = Bukkit.getWorld(chunkSnapshotList.getWorldName());
Location location = new Location(world, chunkSnapshotList.getX() * 16 + x, y, chunkSnapshotList.getZ() * 16 + z);
if (stackableManager.isStacked(location)) {
Stackable stackable = stackableManager.getStack(location, blockMaterial);
amount = stackable.getSize();
amount += stackable.getSize();
}
}
}
@ -307,7 +328,8 @@ public class LevellingManager {
if (NMSUtil.getVersionNumber() > 12) {
try {
return Materials.fromString(material.name());
} catch (Exception ignored) {}
} catch (Exception ignored) {
}
}
return Materials.getMaterials(this.material, this.data);