Skip to content

Commit

Permalink
Add NOAIR argument to schematic
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Apr 6, 2016
1 parent 76ba784 commit 5125aa1
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 26 deletions.
Expand Up @@ -2632,63 +2632,59 @@ public void registerCoreMembers() {
// @Author aufdemrand
// @Group core
// @Description
// TODO: Document Command Details
// DEPRECATED.
// @Tags
// TODO: Document Command Details
// DEPRECATED.
// @Usage
// TODO: Document Command Details
// DO NOT USE.
// -->
registerCoreMember(RuntaskCommand.class,
"RUNTASK", "runtask [<name>] (instantly) (queue(:<name>)) (delay:<#>) (define:<element>|...)", 1);


// <--[command]
// @Name Schematic
// @Syntax schematic [create/load/unload/rotate/paste/save] [name:<name>] (angle:<#>) (<location>) (<cuboid>) (delayed)
// @Syntax schematic [create/load/unload/rotate/paste/save] [name:<name>] (angle:<#>) (<location>) (<cuboid>) (delayed) (noair)
// @Group World
// @Required 2
// @Stable unstable
// @Short Creates, loads, pastes, and saves schematics (Sets of blocks).
// @Author mcmonkey

//
// @Description
// Todo

// TODO: Document Command Details
//
// @Tags
// <schematic[<name>].height>
// <schematic[<name>].length>
// <schematic[<name>].width>
// <schematic[<name>].block[<location>]>
// <schematic[<name>].origin>
// <schematic[<name>].blocks>

//
// @Usage
// Use to create a new schematic from a cuboid and an origin location
// - schematic create name:MySchematic cu@<player.location.sub[5,5,5]>|<player.location.add[5,5,5]> <player.location>

//
// @Usage
// Use to load a schematic
// - schematic load name:MySchematic

//
// @Usage
// Use to unload a schematic
// - schematic unload name:MySchematic

// @Usage
// Use to rotate a loaded schematic
// - schematic rotate name:MySchematic angle:90

//
// @Usage
// Use to paste a loaded schematic
// - schematic paste name:MySchematic <player.location> noair

//
// @Usage
// Use to save a created schematic
// - schematic save name:MySchematic

//
// -->
registerCoreMember(SchematicCommand.class,
"SCHEMATIC", "schematic [create/load/unload/rotate/paste/save] [name:<name>] (angle:<#>) (<location>) (<cuboid>) (delayed)", 2);
"SCHEMATIC", "schematic [create/load/unload/rotate/paste/save] [name:<name>] (angle:<#>) (<location>) (<cuboid>) (delayed) (noair)", 2);


// <--[command]
Expand Down
Expand Up @@ -68,6 +68,10 @@ else if (!scriptEntry.hasObject("delayed")
&& arg.matches("delayed")) {
scriptEntry.addObject("delayed", new Element("true"));
}
else if (!scriptEntry.hasObject("noair")
&& arg.matches("noair")) {
scriptEntry.addObject("noair", new Element("true"));
}
else {
arg.reportUnhandled();
}
Expand All @@ -89,6 +93,7 @@ public void execute(final ScriptEntry scriptEntry) throws CommandExecutionExcept
Element angle = scriptEntry.getElement("angle");
Element type = scriptEntry.getElement("type");
Element name = scriptEntry.getElement("name");
Element noair = scriptEntry.getElement("noair");
Element delayed = scriptEntry.getElement("delayed");
dLocation location = scriptEntry.getdObject("location");
dCuboid cuboid = scriptEntry.getdObject("cuboid");
Expand All @@ -98,6 +103,7 @@ public void execute(final ScriptEntry scriptEntry) throws CommandExecutionExcept
+ (location != null ? location.debug() : "")
+ (cuboid != null ? cuboid.debug() : "")
+ (angle != null ? angle.debug() : "")
+ (noair != null ? noair.debug(): "")
+ (delayed != null ? delayed.debug() : ""));

CuboidBlockSet set;
Expand Down Expand Up @@ -198,11 +204,11 @@ public void execute(final ScriptEntry scriptEntry) throws CommandExecutionExcept
public void run() {
scriptEntry.setFinished(true);
}
});
}, noair != null && noair.asBoolean());
}
else {
scriptEntry.setFinished(true);
schematics.get(name.asString().toUpperCase()).setBlocks(location);
schematics.get(name.asString().toUpperCase()).setBlocks(location, noair != null && noair.asBoolean());
}
}
catch (Exception ex) {
Expand Down
Expand Up @@ -8,9 +8,9 @@ public interface BlockSet {

public abstract List<BlockData> getBlocks();

public abstract void setBlocksDelayed(Location loc, Runnable runme);
public abstract void setBlocksDelayed(Location loc, Runnable runme, boolean noAir);

public abstract void setBlocks(Location loc);
public abstract void setBlocks(Location loc, boolean noAir);

public abstract String toCompressedFormat();
}
Expand Up @@ -7,6 +7,7 @@
import net.aufdemrand.denizencore.utilities.CoreUtilities;
import net.minecraft.server.v1_9_R1.NBTTagCompound;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector;
Expand Down Expand Up @@ -73,7 +74,7 @@ public class IntHolder {
}

@Override
public void setBlocksDelayed(final Location loc, final Runnable runme) {
public void setBlocksDelayed(final Location loc, final Runnable runme, final boolean noAir) {
final IntHolder index = new IntHolder();
final long goal = (long) (x_width * y_length * z_height);
new BukkitRunnable() {
Expand All @@ -84,7 +85,9 @@ public void run() {
long z = index.theInt % ((long) (z_height));
long y = ((index.theInt - z) % ((long) (y_length * z_height))) / ((long) z_height);
long x = (index.theInt - y - z) / ((long) (y_length * z_height));
blocks.get((int) index.theInt).setBlock(loc.clone().add(x, y, z).getBlock());
if (!noAir || blocks.get((int)index.theInt).material != Material.AIR) {
blocks.get((int) index.theInt).setBlock(loc.clone().add(x, y, z).getBlock());
}
index.theInt++;
if (System.currentTimeMillis() - start > 50) {
return;
Expand All @@ -100,12 +103,14 @@ public void run() {
}

@Override
public void setBlocks(Location loc) {
public void setBlocks(Location loc, boolean noAir) {
int index = 0;
for (int x = 0; x < x_width; x++) {
for (int y = 0; y < y_length; y++) {
for (int z = 0; z < z_height; z++) {
blocks.get(index).setBlock(loc.clone().add(x, y, z).getBlock());
if (!noAir || blocks.get(index).material != Material.AIR) {
blocks.get(index).setBlock(loc.clone().add(x, y, z).getBlock());
}
index++;
}
}
Expand Down

0 comments on commit 5125aa1

Please sign in to comment.