Add a clans map generator to codebase
This commit is contained in:
parent
a219a2d072
commit
4fc2b875d4
4
Plugins/Mineplex.ClansGenerator/plugin.yml
Normal file
4
Plugins/Mineplex.ClansGenerator/plugin.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: ClansGenerator
|
||||||
|
main: mineplex.clansgenerator.ClansGenerator
|
||||||
|
version: 1.0
|
||||||
|
author: Alex
|
23
Plugins/Mineplex.ClansGenerator/pom.xml
Normal file
23
Plugins/Mineplex.ClansGenerator/pom.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.mineplex</groupId>
|
||||||
|
<artifactId>mineplex-plugin</artifactId>
|
||||||
|
<version>dev-SNAPSHOT</version>
|
||||||
|
<relativePath>../plugin.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<name>ClansGenerator</name>
|
||||||
|
<artifactId>mineplex-clansgenerator</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>mineplex-core-common</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
@ -0,0 +1,176 @@
|
|||||||
|
package mineplex.clansgenerator;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.World.Environment;
|
||||||
|
import org.bukkit.WorldCreator;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerPreLoginEvent.Result;
|
||||||
|
import org.bukkit.event.world.ChunkPopulateEvent;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.spigotmc.WatchdogThread;
|
||||||
|
|
||||||
|
import net.minecraft.server.v1_8_R3.BiomeBase;
|
||||||
|
|
||||||
|
public class ClansGenerator extends JavaPlugin implements Runnable, Listener
|
||||||
|
{
|
||||||
|
private static final int MIN_X = -100;
|
||||||
|
private static final int MIN_Z = -100;
|
||||||
|
private static final int MAX_X = 100;
|
||||||
|
private static final int MAX_Z = 100;
|
||||||
|
|
||||||
|
private File _root;
|
||||||
|
private File _outputDir;
|
||||||
|
private boolean _debug = false;
|
||||||
|
|
||||||
|
public void onEnable()
|
||||||
|
{
|
||||||
|
_root = new File(".");
|
||||||
|
if (!_root.exists())
|
||||||
|
{
|
||||||
|
getLogger().severe("Root folder does not exist. Aborting");
|
||||||
|
getServer().shutdown();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_outputDir = new File(_root, "output");
|
||||||
|
if (new File(_root, "DEBUG.dat").exists())
|
||||||
|
{
|
||||||
|
_debug = true;
|
||||||
|
}
|
||||||
|
if (!_outputDir.exists())
|
||||||
|
{
|
||||||
|
if (_debug)
|
||||||
|
{
|
||||||
|
getLogger().info("Creating map output directory!");
|
||||||
|
}
|
||||||
|
_outputDir.mkdir();
|
||||||
|
}
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.OCEAN.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.PLAINS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.DESERT.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.EXTREME_HILLS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.FOREST.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.TAIGA.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.SWAMPLAND.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.RIVER.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.HELL.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.SKY.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.FROZEN_OCEAN.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.FROZEN_RIVER.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.ICE_PLAINS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.ICE_MOUNTAINS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.MUSHROOM_ISLAND.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.MUSHROOM_SHORE.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.BEACH.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.DESERT_HILLS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.FOREST_HILLS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.TAIGA_HILLS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.SMALL_MOUNTAINS.id] = BiomeBase.PLAINS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.JUNGLE.id] = BiomeBase.EXTREME_HILLS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.JUNGLE_HILLS.id] = BiomeBase.EXTREME_HILLS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.JUNGLE_EDGE.id] = BiomeBase.EXTREME_HILLS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.DEEP_OCEAN.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.STONE_BEACH.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.COLD_BEACH.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.BIRCH_FOREST.id] = BiomeBase.BIRCH_FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.BIRCH_FOREST_HILLS.id] = BiomeBase.BIRCH_FOREST_HILLS;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.ROOFED_FOREST.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.COLD_TAIGA.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.COLD_TAIGA_HILLS.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.MEGA_TAIGA.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.MEGA_TAIGA_HILLS.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.EXTREME_HILLS_PLUS.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.SAVANNA.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.SAVANNA_PLATEAU.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.MESA.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.MESA_PLATEAU_F.id] = BiomeBase.FOREST;
|
||||||
|
BiomeBase.getBiomes()[BiomeBase.MESA_PLATEAU.id] = BiomeBase.FOREST;
|
||||||
|
WatchdogThread.doStop();
|
||||||
|
getServer().getScheduler().runTaskTimer(this, this, 20L, 100L);
|
||||||
|
getServer().getPluginManager().registerEvents(this, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPopulate(ChunkPopulateEvent event)
|
||||||
|
{
|
||||||
|
Block block;
|
||||||
|
for (int x = 0; x < 16; x++)
|
||||||
|
{
|
||||||
|
for (int y = 1; y < 128; y++)
|
||||||
|
{
|
||||||
|
for (int z = 0; z < 16; z++)
|
||||||
|
{
|
||||||
|
block = event.getChunk().getBlock(x, y, z);
|
||||||
|
if (block.getType() == Material.CHEST || block.getType() == Material.TRAPPED_CHEST || block.getType() == Material.MOB_SPAWNER)
|
||||||
|
{
|
||||||
|
block.setType(Material.AIR);
|
||||||
|
if (_debug)
|
||||||
|
{
|
||||||
|
getLogger().info("Removing dungeon pieces");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onJoin(AsyncPlayerPreLoginEvent event)
|
||||||
|
{
|
||||||
|
event.setLoginResult(Result.KICK_OTHER);
|
||||||
|
event.setKickMessage("Shoo, go away");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
int nextFileId = 0;
|
||||||
|
for (int existingFiles = 0; new File(_outputDir, "Clans_Map_" + existingFiles).exists(); existingFiles++)
|
||||||
|
{
|
||||||
|
nextFileId++;
|
||||||
|
}
|
||||||
|
|
||||||
|
getLogger().info("Generating world id " + nextFileId);
|
||||||
|
World world = (new WorldCreator("Clans_Map_" + nextFileId)).environment(Environment.NORMAL).generateStructures(false).seed(ThreadLocalRandom.current().nextLong()).createWorld();
|
||||||
|
world.setKeepSpawnInMemory(false);
|
||||||
|
for (int x = MIN_X; x <= MAX_X; x++)
|
||||||
|
{
|
||||||
|
getLogger().info("Generating chunks for x coord " + x);
|
||||||
|
for (int z = MIN_Z; z <= MAX_Z; z++)
|
||||||
|
{
|
||||||
|
world.getChunkAt(x, z).load(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int x = MIN_X; x <= MAX_X; x++)
|
||||||
|
{
|
||||||
|
getLogger().info("Unloading chunks for x coord " + x);
|
||||||
|
for (int z = MIN_Z; z <= MAX_Z; z++)
|
||||||
|
{
|
||||||
|
world.getChunkAt(x, z).unload(true, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getLogger().info("Unloading and saving world");
|
||||||
|
Bukkit.unloadWorld(world, true);
|
||||||
|
getLogger().info("Finished unloading and saving world");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
FileUtils.moveDirectoryToDirectory(new File(_root, "Clans_Map_" + nextFileId), _outputDir, false);
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
getLogger().info("Finished generating world id " + nextFileId);
|
||||||
|
getServer().shutdown();
|
||||||
|
}
|
||||||
|
}
|
@ -29,6 +29,7 @@
|
|||||||
<module>Mineplex.Hub</module>
|
<module>Mineplex.Hub</module>
|
||||||
<module>Mineplex.Hub.Clans</module>
|
<module>Mineplex.Hub.Clans</module>
|
||||||
<module>Mineplex.MapParser</module>
|
<module>Mineplex.MapParser</module>
|
||||||
|
<module>Mineplex.ClansGenerator</module>
|
||||||
<module>Mineplex.Minecraft.Game.ClassCombat</module>
|
<module>Mineplex.Minecraft.Game.ClassCombat</module>
|
||||||
<module>Mineplex.Minecraft.Game.Core</module>
|
<module>Mineplex.Minecraft.Game.Core</module>
|
||||||
<module>Mineplex.ServerData</module>
|
<module>Mineplex.ServerData</module>
|
||||||
|
Loading…
Reference in New Issue
Block a user