mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-12-27 20:27:37 +00:00
Starting v2.6
Updated cleanroom generator. Dont need to define server in some listeners, never use it.
This commit is contained in:
parent
5838eb23ff
commit
614d502bb6
@ -1,5 +1,5 @@
|
||||
#Sat, 28 Jul 2012 15:17:23 -0400
|
||||
#Thu, 13 Sep 2012 19:16:42 -0400
|
||||
|
||||
program.VERSION=2.5
|
||||
program.BUILDNUM=77
|
||||
program.BUILDDATE=07/28/2012 03\:17 PM
|
||||
program.VERSION=2.6
|
||||
program.BUILDNUM=20
|
||||
program.BUILDDATE=09/13/2012 07\:16 PM
|
||||
|
@ -74,7 +74,7 @@
|
||||
<target name="-pre-jar">
|
||||
<buildnumber file="buildnumber.properties" />
|
||||
<propertyfile file="appinfo.properties">
|
||||
<entry key="program.VERSION" default="2.5" />
|
||||
<entry key="program.VERSION" default="0.0" />
|
||||
<entry key="program.BUILDNUM" value="${build.number}" />
|
||||
<entry key="program.BUILDDATE" type="date" value="now" pattern="MM/dd/yyyy hh:mm aa" />
|
||||
</propertyfile>
|
||||
|
@ -1,3 +1,3 @@
|
||||
#Build Number for ANT. Do not edit!
|
||||
#Sat Jul 28 15:17:23 EDT 2012
|
||||
build.number=78
|
||||
#Thu Sep 13 19:16:42 EDT 2012
|
||||
build.number=21
|
||||
|
@ -1,73 +1,73 @@
|
||||
annotation.processing.enabled=true
|
||||
annotation.processing.enabled.in.editor=false
|
||||
annotation.processing.run.all.processors=true
|
||||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
|
||||
application.title=TotalFreedomMod
|
||||
application.vendor=Michael
|
||||
build.classes.dir=${build.dir}/classes
|
||||
build.classes.excludes=**/*.java,**/*.form
|
||||
# This directory is removed when the project is cleaned:
|
||||
build.dir=build
|
||||
build.generated.dir=${build.dir}/generated
|
||||
build.generated.sources.dir=${build.dir}/generated-sources
|
||||
# Only compile against the classpath explicitly listed here:
|
||||
build.sysclasspath=ignore
|
||||
build.test.classes.dir=${build.dir}/test/classes
|
||||
build.test.results.dir=${build.dir}/test/results
|
||||
# Uncomment to specify the preferred debugger connection transport:
|
||||
#debug.transport=dt_socket
|
||||
debug.classpath=\
|
||||
${run.classpath}
|
||||
debug.test.classpath=\
|
||||
${run.test.classpath}
|
||||
# This directory is removed when the project is cleaned:
|
||||
dist.dir=dist
|
||||
dist.jar=${dist.dir}/TotalFreedomMod.jar
|
||||
dist.javadoc.dir=${dist.dir}/javadoc
|
||||
endorsed.classpath=
|
||||
excludes=
|
||||
includes=**
|
||||
jar.compress=false
|
||||
javac.classpath=\
|
||||
${libs.Bukkit.classpath}
|
||||
# Space-separated list of extra javac options
|
||||
javac.compilerargs=-Xlint:unchecked -Xlint:deprecation
|
||||
javac.deprecation=false
|
||||
javac.processorpath=\
|
||||
${javac.classpath}
|
||||
javac.source=1.6
|
||||
javac.target=1.6
|
||||
javac.test.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
javac.test.processorpath=\
|
||||
${javac.test.classpath}
|
||||
javadoc.additionalparam=
|
||||
javadoc.author=false
|
||||
javadoc.encoding=${source.encoding}
|
||||
javadoc.noindex=false
|
||||
javadoc.nonavbar=false
|
||||
javadoc.notree=false
|
||||
javadoc.private=false
|
||||
javadoc.splitindex=true
|
||||
javadoc.use=true
|
||||
javadoc.version=false
|
||||
javadoc.windowtitle=
|
||||
main.class=totalfreedommod.TotalFreedomMod
|
||||
manifest.file=manifest.mf
|
||||
meta.inf.dir=${src.dir}/META-INF
|
||||
mkdist.disabled=false
|
||||
platform.active=default_platform
|
||||
run.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
# Space-separated list of JVM arguments used when running the project
|
||||
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||
run.jvmargs=
|
||||
run.test.classpath=\
|
||||
${javac.test.classpath}:\
|
||||
${build.test.classes.dir}
|
||||
source.encoding=UTF-8
|
||||
src.dir=src
|
||||
test.src.dir=test
|
||||
annotation.processing.enabled=true
|
||||
annotation.processing.enabled.in.editor=false
|
||||
annotation.processing.run.all.processors=true
|
||||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
|
||||
application.title=TotalFreedomMod
|
||||
application.vendor=Michael
|
||||
build.classes.dir=${build.dir}/classes
|
||||
build.classes.excludes=**/*.java,**/*.form
|
||||
# This directory is removed when the project is cleaned:
|
||||
build.dir=build
|
||||
build.generated.dir=${build.dir}/generated
|
||||
build.generated.sources.dir=${build.dir}/generated-sources
|
||||
# Only compile against the classpath explicitly listed here:
|
||||
build.sysclasspath=ignore
|
||||
build.test.classes.dir=${build.dir}/test/classes
|
||||
build.test.results.dir=${build.dir}/test/results
|
||||
# Uncomment to specify the preferred debugger connection transport:
|
||||
#debug.transport=dt_socket
|
||||
debug.classpath=\
|
||||
${run.classpath}
|
||||
debug.test.classpath=\
|
||||
${run.test.classpath}
|
||||
# This directory is removed when the project is cleaned:
|
||||
dist.dir=dist
|
||||
dist.jar=${dist.dir}/TotalFreedomMod.jar
|
||||
dist.javadoc.dir=${dist.dir}/javadoc
|
||||
endorsed.classpath=
|
||||
excludes=
|
||||
includes=**
|
||||
jar.compress=false
|
||||
javac.classpath=\
|
||||
${libs.CraftBukkit.classpath}
|
||||
# Space-separated list of extra javac options
|
||||
javac.compilerargs=-Xlint:unchecked -Xlint:deprecation
|
||||
javac.deprecation=false
|
||||
javac.processorpath=\
|
||||
${javac.classpath}
|
||||
javac.source=1.6
|
||||
javac.target=1.6
|
||||
javac.test.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
javac.test.processorpath=\
|
||||
${javac.test.classpath}
|
||||
javadoc.additionalparam=
|
||||
javadoc.author=false
|
||||
javadoc.encoding=${source.encoding}
|
||||
javadoc.noindex=false
|
||||
javadoc.nonavbar=false
|
||||
javadoc.notree=false
|
||||
javadoc.private=false
|
||||
javadoc.splitindex=true
|
||||
javadoc.use=true
|
||||
javadoc.version=false
|
||||
javadoc.windowtitle=
|
||||
main.class=totalfreedommod.TotalFreedomMod
|
||||
manifest.file=manifest.mf
|
||||
meta.inf.dir=${src.dir}/META-INF
|
||||
mkdist.disabled=false
|
||||
platform.active=default_platform
|
||||
run.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
# Space-separated list of JVM arguments used when running the project
|
||||
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||
run.jvmargs=
|
||||
run.test.classpath=\
|
||||
${javac.test.classpath}:\
|
||||
${build.test.classes.dir}
|
||||
source.encoding=UTF-8
|
||||
src.dir=src
|
||||
test.src.dir=test
|
||||
|
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Cleanroom Generator
|
||||
* Copyright (C) 2011-2012 nvx
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package me.StevenLawson.TotalFreedomMod;
|
||||
|
||||
import java.util.Random;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
public class CleanroomBlockPopulator extends BlockPopulator
|
||||
{
|
||||
byte[] layerDataValues;
|
||||
protected CleanroomBlockPopulator(byte[] layerDataValues)
|
||||
{
|
||||
this.layerDataValues = layerDataValues;
|
||||
}
|
||||
|
||||
public void populate(World world, Random random, Chunk chunk)
|
||||
{
|
||||
if (layerDataValues != null)
|
||||
{
|
||||
int x = chunk.getX() << 4;
|
||||
int z = chunk.getZ() << 4;
|
||||
|
||||
for (int y = 0; y < layerDataValues.length ; y++)
|
||||
{
|
||||
byte dataValue = layerDataValues[y];
|
||||
if (dataValue == 0) continue;
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
{
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
{
|
||||
world.getBlockAt(x + xx, y, z + zz).setData(dataValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Cleanroom Generator
|
||||
* Copyright (C) 2011 nvx
|
||||
* Copyright (C) 2011-2012 nvx
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
@ -18,22 +18,23 @@
|
||||
|
||||
package me.StevenLawson.TotalFreedomMod;
|
||||
|
||||
import static java.lang.System.arraycopy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
|
||||
import static java.lang.System.arraycopy;
|
||||
|
||||
public class CleanroomChunkGenerator extends ChunkGenerator
|
||||
{
|
||||
private byte[] chunk = new byte[32768];
|
||||
private Logger log = Logger.getLogger("Minecraft");
|
||||
private short[] layer;
|
||||
private byte[] layerDataValues;
|
||||
|
||||
public CleanroomChunkGenerator()
|
||||
{
|
||||
@ -42,19 +43,21 @@ public class CleanroomChunkGenerator extends ChunkGenerator
|
||||
|
||||
public CleanroomChunkGenerator(String id)
|
||||
{
|
||||
byte[] layer = new byte[128];
|
||||
if (id != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
int y = 0;
|
||||
|
||||
layer = new short[128]; // Default to 128, will be resized later if required
|
||||
layerDataValues = null;
|
||||
|
||||
if ((id.length() > 0) && (id.charAt(0) == '.')) // Is the first character a '.'? If so, skip bedrock generation.
|
||||
{
|
||||
id = id.substring(1); // Skip bedrock then and remove the .
|
||||
} else // Guess not, bedrock at layer0 it is then.
|
||||
{
|
||||
layer[y++] = (byte)Material.BEDROCK.getId();
|
||||
layer[y++] = (short)Material.BEDROCK.getId();
|
||||
}
|
||||
|
||||
if (id.length() > 0)
|
||||
@ -66,25 +69,33 @@ public class CleanroomChunkGenerator extends ChunkGenerator
|
||||
for (int i = 0; i < tokens.length; i += 2)
|
||||
{
|
||||
int height = Integer.parseInt(tokens[i]);
|
||||
if ((height <= 0) || (height > 127))
|
||||
if (height <= 0)
|
||||
{
|
||||
System.out.println("Invalid height '" + tokens[i] + "'. Using 64 instead.");
|
||||
log.warning("[CleanroomGenerator] Invalid height '" + tokens[i] + "'. Using 64 instead.");
|
||||
height = 64;
|
||||
}
|
||||
|
||||
if ((height + y) > 127)
|
||||
String materialTokens[] = tokens[i + 1].split("[:]", 2);
|
||||
byte dataValue = 0;
|
||||
if (materialTokens.length == 2)
|
||||
{
|
||||
System.out.println("Maximum height reached, ignoring additional layers.");
|
||||
break;
|
||||
try
|
||||
{
|
||||
// Lets try to read the data value
|
||||
dataValue = Byte.parseByte(materialTokens[1]);
|
||||
} catch (Exception e)
|
||||
{
|
||||
log.warning("[CleanroomGenerator] Invalid Data Value '" + materialTokens[1] + "'. Defaulting to 0.");
|
||||
dataValue = 0;
|
||||
}
|
||||
}
|
||||
|
||||
Material mat = Material.matchMaterial(tokens[i + 1]);
|
||||
Material mat = Material.matchMaterial(materialTokens[0]);
|
||||
if (mat == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Mabe it's an integer?
|
||||
mat = Material.getMaterial(Integer.parseInt(tokens[i + 1]));
|
||||
mat = Material.getMaterial(Integer.parseInt(materialTokens[0]));
|
||||
} catch (Exception e)
|
||||
{
|
||||
// Well, I guess it wasn't an integer after all... Awkward...
|
||||
@ -92,51 +103,109 @@ public class CleanroomChunkGenerator extends ChunkGenerator
|
||||
|
||||
if (mat == null)
|
||||
{
|
||||
System.out.println("Invalid Block ID '" + tokens[i + 1] + "'. Defaulting to stone.");
|
||||
log.warning("[CleanroomGenerator] Invalid Block ID '" + materialTokens[0] + "'. Defaulting to stone.");
|
||||
mat = Material.STONE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mat.isBlock())
|
||||
{
|
||||
System.out.println("Error, '" + tokens[i + 1] + "' is not a block. Defaulting to stone.");
|
||||
log.warning("[CleanroomGenerator] Error, '" + materialTokens[0] + "' is not a block. Defaulting to stone.");
|
||||
mat = Material.STONE;
|
||||
}
|
||||
|
||||
Arrays.fill(layer, y, y + height, (byte)mat.getId());
|
||||
if (y + height > layer.length)
|
||||
{
|
||||
short[] newLayer = new short[Math.max(y + height, layer.length * 2)];
|
||||
arraycopy(layer, 0, newLayer, 0, y);
|
||||
layer = newLayer;
|
||||
if (layerDataValues != null)
|
||||
{
|
||||
byte[] newLayerDataValues = new byte[Math.max(y + height, layerDataValues.length * 2)];
|
||||
arraycopy(layerDataValues, 0, newLayerDataValues, 0, y);
|
||||
layerDataValues = newLayerDataValues;
|
||||
}
|
||||
}
|
||||
|
||||
Arrays.fill(layer, y, y + height, (short)mat.getId());
|
||||
if (dataValue != 0)
|
||||
{
|
||||
if (layerDataValues == null)
|
||||
{
|
||||
layerDataValues = new byte[layer.length];
|
||||
}
|
||||
Arrays.fill(layerDataValues, y, y + height, dataValue);
|
||||
}
|
||||
y += height;
|
||||
}
|
||||
}
|
||||
} catch(Exception e)
|
||||
|
||||
// Trim to size
|
||||
if (layer.length > y)
|
||||
{
|
||||
short[] newLayer = new short[y];
|
||||
arraycopy(layer, 0, newLayer, 0, y);
|
||||
layer = newLayer;
|
||||
}
|
||||
if (layerDataValues != null && layerDataValues.length > y)
|
||||
{
|
||||
byte[] newLayerDataValues = new byte[y];
|
||||
arraycopy(layerDataValues, 0, newLayerDataValues, 0, y);
|
||||
layerDataValues = newLayerDataValues;
|
||||
}
|
||||
} catch (Exception e)
|
||||
{
|
||||
System.out.println("Error parsing CleanroomGenerator ID '" + id + "'. using defaults '64,1': " + e.toString());
|
||||
log.severe("[CleanroomGenerator] Error parsing CleanroomGenerator ID '" + id + "'. using defaults '64,1': " + e.toString());
|
||||
e.printStackTrace();
|
||||
layer[0] = (byte)Material.BEDROCK.getId();
|
||||
Arrays.fill(layer, 1, 65, (byte)Material.STONE.getId());
|
||||
Arrays.fill(layer, 65, 128, (byte)Material.AIR.getId()); // Just in case...
|
||||
layerDataValues = null;
|
||||
layer = new short[65];
|
||||
layer[0] = (short)Material.BEDROCK.getId();
|
||||
Arrays.fill(layer, 1, 65, (short)Material.STONE.getId());
|
||||
}
|
||||
} else
|
||||
{
|
||||
layer[0] = (byte)Material.BEDROCK.getId();
|
||||
Arrays.fill(layer, 1, 65, (byte)Material.STONE.getId());
|
||||
}
|
||||
|
||||
for (int xz = 0; xz < 256; xz++)
|
||||
{
|
||||
arraycopy(layer, 0, chunk, xz * 128, layer.length);
|
||||
layerDataValues = null;
|
||||
layer = new short[65];
|
||||
layer[0] = (short)Material.BEDROCK.getId();
|
||||
Arrays.fill(layer, 1, 65, (short)Material.STONE.getId());
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] generate(World world, Random random, int cx, int cz)
|
||||
@Override
|
||||
public short[][] generateExtBlockSections(World world, Random random, int x, int z, BiomeGrid biomes)
|
||||
{
|
||||
return chunk.clone(); // Can't get more efficient than that...
|
||||
int maxHeight = world.getMaxHeight();
|
||||
if (layer.length > maxHeight)
|
||||
{
|
||||
log.warning("[CleanroomGenerator] Error, chunk height " + layer.length + " is greater than the world max height (" + maxHeight + "). Trimming to world max height.");
|
||||
short[] newLayer = new short[maxHeight];
|
||||
arraycopy(layer, 0, newLayer, 0, maxHeight);
|
||||
layer = newLayer;
|
||||
}
|
||||
short[][] result = new short[maxHeight / 16][]; // 16x16x16 chunks
|
||||
for (int i = 0; i < layer.length; i += 16)
|
||||
{
|
||||
result[i >> 4] = new short[4096];
|
||||
for (int y = 0; y < Math.min(16, layer.length - i); y++)
|
||||
{
|
||||
Arrays.fill(result[i >> 4], y * 16 * 16, (y + 1) * 16 * 16, layer[i + y]);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BlockPopulator> getDefaultPopulators(World world)
|
||||
{
|
||||
// This is the default, but just in case default populators change to stock minecraft populators by default...
|
||||
return new ArrayList<BlockPopulator>();
|
||||
if (layerDataValues != null)
|
||||
{
|
||||
return Arrays.asList((BlockPopulator)new CleanroomBlockPopulator(layerDataValues));
|
||||
} else
|
||||
{
|
||||
// This is the default, but just in case default populators change to stock minecraft populators by default...
|
||||
return new ArrayList<BlockPopulator>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -154,4 +223,4 @@ public class CleanroomChunkGenerator extends ChunkGenerator
|
||||
|
||||
return new Location(world, 0, world.getHighestBlockYAt(0, 0), 0);
|
||||
}
|
||||
}
|
||||
}
|
@ -7,7 +7,6 @@ import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -18,13 +17,11 @@ import org.bukkit.inventory.ItemStack;
|
||||
public class TFM_BlockListener implements Listener
|
||||
{
|
||||
private final TotalFreedomMod plugin;
|
||||
private final Server server;
|
||||
private static final Logger log = Logger.getLogger("Minecraft");
|
||||
|
||||
public TFM_BlockListener(TotalFreedomMod instance)
|
||||
{
|
||||
this.plugin = instance;
|
||||
this.server = plugin.getServer();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
|
@ -1,7 +1,6 @@
|
||||
package me.StevenLawson.TotalFreedomMod.Listener;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.entity.*;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -11,12 +10,10 @@ import org.bukkit.event.entity.*;
|
||||
public class TFM_EntityListener implements Listener
|
||||
{
|
||||
private final TotalFreedomMod plugin;
|
||||
private final Server server;
|
||||
|
||||
public TFM_EntityListener(TotalFreedomMod instance)
|
||||
{
|
||||
this.plugin = instance;
|
||||
this.server = plugin.getServer();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
|
@ -1,7 +1,6 @@
|
||||
package me.StevenLawson.TotalFreedomMod.Listener;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
@ -11,12 +10,10 @@ import org.bukkit.event.weather.WeatherChangeEvent;
|
||||
public class TFM_WeatherListener implements Listener
|
||||
{
|
||||
private final TotalFreedomMod plugin;
|
||||
private final Server server;
|
||||
|
||||
public TFM_WeatherListener(TotalFreedomMod instance)
|
||||
{
|
||||
this.plugin = instance;
|
||||
this.server = plugin.getServer();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: TotalFreedomMod
|
||||
main: me.StevenLawson.TotalFreedomMod.TotalFreedomMod
|
||||
version: 2.5
|
||||
version: 2.6
|
||||
description: Plugin for the Total Freedom server.
|
||||
author: StevenLawson / Madgeek1450
|
||||
commands:
|
||||
|
Loading…
Reference in New Issue
Block a user