From 589c3e9629184dc5636f66f95cd267602d38de0a Mon Sep 17 00:00:00 2001
From: sk89q
null
- * should not be returned.
- *
- * The returned block is mutable and is a snapshot of the block at the time
- * of call. It has no position attached to it, so it could be reused in
- * {@link Pattern}s and so on.
- *
- * Calls to this method can actually be quite expensive, so cache results
- * whenever it is possible, while being aware of the mutability aspect.
- * The cost, however, depends on the implementation and particular extent.
- * If only basic information about the block is required, then use of
- * {@link #getLazyBlock(Vector)} is recommended.
- *
- * @param position position of the block
- * @return the block
- */
- BaseBlock getBlock(Vector position);
-
- /**
- * Get a lazy, immutable snapshot of the block at the given location that only
- * immediately contains information about the block's type (and metadata).
- *
- * Further information (such as NBT data) will be available by the
- * time of access. Therefore, it is not recommended that
- * this method is used if the world is being simulated at the time of
- * call. If the block needs to be stored for future use, then this method should
- * definitely not be used. Moreover, the block that is returned is immutable (or
- * should be), and therefore modifications should not be attempted on it. If a
- * modifiable copy is required, then the block should be cloned.
- *
- * This method exists because it is sometimes important to inspect the block
- * at a given location, but {@link #getBlock(Vector)} may be too expensive in
- * the underlying implementation. It is also not possible to implement
- * caching if the returned object is mutable, so this methods allows caching
- * implementations to be used.
- *
- * @param position position of the block
- * @return the block
- */
- BaseBlock getLazyBlock(Vector position);
-
- /**
- * Change the block at the given location to the given block. The operation may
- * not tie the given {@link BaseBlock} to the world, so future changes to the
- * {@link BaseBlock} do not affect the world until this method is called again.
- *
- * The return value of this method indicates whether the change was probably
- * successful. It may not be successful if, for example, the location is out
- * of the bounds of the extent. It may be unsuccessful if the block passed
- * is the same as the one in the world. However, the return value is only an
- * estimation and it may be incorrect, but it could be used to count, for
- * example, the approximate number of changes.
- *
- * @param position position of the block
- * @param block block to set
- * @return true if the block was successfully set (return value may not be accurate)
- */
- boolean setBlock(Vector position, BaseBlock block) throws WorldEditException;
-
- /**
- * Return an {@link Operation} that should be called to tie up loose ends
- * (such as to commit changes in a buffer).
- *
- * @return an operation or null if there is none to execute
- */
- @Nullable Operation commit();
-
+public interface Extent extends InputExtent, OutputExtent {
}
diff --git a/src/main/java/com/sk89q/worldedit/extent/InputExtent.java b/src/main/java/com/sk89q/worldedit/extent/InputExtent.java
new file mode 100644
index 000000000..8f77fe276
--- /dev/null
+++ b/src/main/java/com/sk89q/worldedit/extent/InputExtent.java
@@ -0,0 +1,76 @@
+/*
+ * WorldEdit, a Minecraft world manipulation toolkit
+ * Copyright (C) sk89q null
+ * should not be returned.
+ *
+ * The returned block is mutable and is a snapshot of the block at the time
+ * of call. It has no position attached to it, so it could be reused in
+ * {@link Pattern}s and so on.
+ *
+ * Calls to this method can actually be quite expensive, so cache results
+ * whenever it is possible, while being aware of the mutability aspect.
+ * The cost, however, depends on the implementation and particular extent.
+ * If only basic information about the block is required, then use of
+ * {@link #getLazyBlock(Vector)} is recommended.
+ *
+ * @param position position of the block
+ * @return the block
+ */
+ BaseBlock getBlock(Vector position);
+
+ /**
+ * Get a lazy, immutable snapshot of the block at the given location that only
+ * immediately contains information about the block's type (and metadata).
+ *
+ * Further information (such as NBT data) will be available by the
+ * time of access. Therefore, it is not recommended that
+ * this method is used if the world is being simulated at the time of
+ * call. If the block needs to be stored for future use, then this method should
+ * definitely not be used. Moreover, the block that is returned is immutable (or
+ * should be), and therefore modifications should not be attempted on it. If a
+ * modifiable copy is required, then the block should be cloned.
+ *
+ * This method exists because it is sometimes important to inspect the block
+ * at a given location, but {@link #getBlock(Vector)} may be too expensive in
+ * the underlying implementation. It is also not possible to implement
+ * caching if the returned object is mutable, so this methods allows caching
+ * implementations to be used.
+ *
+ * @param position position of the block
+ * @return the block
+ */
+ BaseBlock getLazyBlock(Vector position);
+
+}
diff --git a/src/main/java/com/sk89q/worldedit/extent/OutputExtent.java b/src/main/java/com/sk89q/worldedit/extent/OutputExtent.java
new file mode 100644
index 000000000..042812d8f
--- /dev/null
+++ b/src/main/java/com/sk89q/worldedit/extent/OutputExtent.java
@@ -0,0 +1,60 @@
+/*
+ * WorldEdit, a Minecraft world manipulation toolkit
+ * Copyright (C) sk89q