diff --git a/Core/src/main/java/com/songoda/core/utils/BlockUtils.java b/Core/src/main/java/com/songoda/core/utils/BlockUtils.java
index 51138daf..625da05e 100644
--- a/Core/src/main/java/com/songoda/core/utils/BlockUtils.java
+++ b/Core/src/main/java/com/songoda/core/utils/BlockUtils.java
@@ -1,17 +1,11 @@
package com.songoda.core.utils;
-import com.songoda.core.compatibility.ClassMapping;
import com.songoda.core.compatibility.CompatibleMaterial;
-import com.songoda.core.compatibility.MethodMapping;
-import com.songoda.core.compatibility.ServerVersion;
import org.bukkit.Effect;
-import org.bukkit.Location;
import org.bukkit.Material;
-import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
-import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.EnumSet;
@@ -328,66 +322,6 @@ public class BlockUtils {
return null;
}
- /* Only to be used by #setBlockFast */
- private static Class> clazzIBlockData, clazzBlocks, clazzCraftWorld, clazzBlockPosition;
- /* Only to be used by #setBlockFast */
- private static Method getHandle, getByCombinedId, setType, getChunkAt, getBlockData;
-
- /**
- * Set a block to a certain type by updating the block directly in the
- * NMS chunk.
- *
- * The chunk must be loaded and players must relog if they have the
- * chunk loaded in order to use this method.
- */
- public static void setBlockFast(World world, int x, int y, int z, Material material, byte data) {
- try {
- // Cache reflection
- if (clazzIBlockData == null) {
- clazzIBlockData = ClassMapping.I_BLOCK_DATA.getClazz();
- clazzBlockPosition = ClassMapping.BLOCK_POSITION.getClazz();
- clazzCraftWorld = ClassMapping.CRAFT_WORLD.getClazz();
- clazzBlocks = ClassMapping.BLOCKS.getClazz();
- Class> clazzBlock = ClassMapping.BLOCK.getClazz();
- Class> clazzWorld = ClassMapping.WORLD.getClazz();
- Class> clazzChunk = ClassMapping.CHUNK.getClazz();
-
- getHandle = clazzCraftWorld.getMethod("getHandle");
- getChunkAt = MethodMapping.WORLD__GET_CHUNK_AT.getMethod(clazzWorld);
-
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
- getBlockData = MethodMapping.BLOCK__GET_BLOCK_DATA.getMethod(ClassMapping.BLOCK.getClazz());
- setType = MethodMapping.CHUNK__SET_BLOCK_STATE.getMethod(ClassMapping.CHUNK.getClazz());
- } else {
- getByCombinedId = clazzBlock.getMethod("getByCombinedId", int.class);
- setType = clazzChunk.getMethod("a", clazzBlockPosition, clazzIBlockData);
- }
- }
-
- // invoke and cast objects.
- Object craftWorld = clazzCraftWorld.cast(world);
- Object nmsWorld = getHandle.invoke(craftWorld);
- Object chunk = getChunkAt.invoke(nmsWorld, x >> 4, z >> 4);
- Object blockPosition = clazzBlockPosition.getConstructor(int.class, int.class, int.class).newInstance(x & 0xF, y, z & 0xF);
-
- // Invoke final method.
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
- Object block = clazzBlocks.getField(material.name()).get(null);
- Object IBlockData = getBlockData.invoke(block);
- setType.invoke(chunk, blockPosition, IBlockData, true);
- } else {
- Object IBlockData = getByCombinedId.invoke(null, material.getId() + (data << 12));
- setType.invoke(chunk, blockPosition, IBlockData);
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
- public static void setBlockFast(World world, int x, int y, int z, CompatibleMaterial material, byte data) {
- setBlockFast(world, x, y, z, material.getBlockMaterial(), data);
- }
-
/**
* Checks if a crop is at its max growth stage
*
@@ -409,8 +343,7 @@ public class BlockUtils {
return false;
}
- return block.getData() >= (mat == CompatibleMaterial.BEETROOTS
- || mat == CompatibleMaterial.NETHER_WART ? 3 : 7);
+ return block.getData() >= (mat == CompatibleMaterial.BEETROOTS || mat == CompatibleMaterial.NETHER_WART ? 3 : 7);
}
/**
@@ -459,8 +392,7 @@ public class BlockUtils {
return -1;
}
- return (mat == CompatibleMaterial.BEETROOTS
- || mat == CompatibleMaterial.NETHER_WART ? 3 : 7);
+ return (mat == CompatibleMaterial.BEETROOTS || mat == CompatibleMaterial.NETHER_WART ? 3 : 7);
}
/**
diff --git a/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/SWorld.java b/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/SWorld.java
index cbb03732..6f2dd16b 100644
--- a/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/SWorld.java
+++ b/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/SWorld.java
@@ -1,9 +1,20 @@
package com.songoda.core.nms.world;
+import org.bukkit.Material;
import org.bukkit.entity.LivingEntity;
import java.util.List;
public interface SWorld {
List getLivingEntities();
+
+ /**
+ * Set a block to a certain type by updating the block directly in the NMS chunk.
+ *
+ * The chunk must be loaded and players must relog if they have the chunk loaded in order to use this method.
+ * (F3+A is not enough)
+ */
+ // TODO: Check if FabledSkyBlock *really* needs this method and if it can be removed.
+ // Would make thinks less complicated and I kinda cannot imagine it being *that* much faster to be worth it?
+ void setBlockFast(int x, int y, int z, Material material);
}
diff --git a/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/SWorldImpl.java b/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/SWorldImpl.java
index 04f7ea34..1c9667ed 100644
--- a/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_10_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_10_R1.Block;
+import net.minecraft.server.v1_10_R1.BlockPosition;
+import net.minecraft.server.v1_10_R1.Chunk;
+import net.minecraft.server.v1_10_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_10_R1.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java
index a579c1a1..423469c8 100644
--- a/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/SWorldImpl.java b/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/SWorldImpl.java
index e8d37fd4..2a53dde0 100644
--- a/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_11_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_11_R1.Block;
+import net.minecraft.server.v1_11_R1.BlockPosition;
+import net.minecraft.server.v1_11_R1.Chunk;
+import net.minecraft.server.v1_11_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_11_R1.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java
index e61cf992..ef02d083 100644
--- a/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/SWorldImpl.java b/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/SWorldImpl.java
index 6015dc65..7ac285dd 100644
--- a/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_12_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_12_R1.Block;
+import net.minecraft.server.v1_12_R1.BlockPosition;
+import net.minecraft.server.v1_12_R1.Chunk;
+import net.minecraft.server.v1_12_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java
index 3d7bb3af..dded1987 100644
--- a/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/SWorldImpl.java b/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/SWorldImpl.java
index 78312506..45a9920c 100644
--- a/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/SWorldImpl.java
@@ -1,17 +1,37 @@
package com.songoda.core.nms.v1_13_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_13_R1.BlockPosition;
+import net.minecraft.server.v1_13_R1.Chunk;
+import net.minecraft.server.v1_13_R1.IBlockData;
+import net.minecraft.server.v1_13_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_13_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_13_R1.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
}
}
diff --git a/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java
index 6b702dbb..3d644902 100644
--- a/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java
@@ -44,7 +44,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/SWorldImpl.java b/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/SWorldImpl.java
index 845b135a..61859a31 100644
--- a/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/SWorldImpl.java
+++ b/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/SWorldImpl.java
@@ -1,17 +1,37 @@
package com.songoda.core.nms.v1_13_R2.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_13_R2.BlockPosition;
+import net.minecraft.server.v1_13_R2.Chunk;
+import net.minecraft.server.v1_13_R2.IBlockData;
+import net.minecraft.server.v1_13_R2.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_13_R2.CraftWorld;
+import org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setType(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
}
}
diff --git a/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java
index f8178c66..427b7f8c 100644
--- a/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java
@@ -44,7 +44,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/SWorldImpl.java b/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/SWorldImpl.java
index ac14e66a..1ff6c9de 100644
--- a/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/SWorldImpl.java
@@ -1,17 +1,37 @@
package com.songoda.core.nms.v1_14_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_14_R1.BlockPosition;
+import net.minecraft.server.v1_14_R1.Chunk;
+import net.minecraft.server.v1_14_R1.IBlockData;
+import net.minecraft.server.v1_14_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_14_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_14_R1.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setType(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
}
}
diff --git a/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java
index 01eb81f1..cb8329a2 100644
--- a/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java
@@ -46,7 +46,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/SWorldImpl.java b/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/SWorldImpl.java
index 5b569025..c2c4c8b5 100644
--- a/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/SWorldImpl.java
@@ -1,17 +1,37 @@
package com.songoda.core.nms.v1_15_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_15_R1.BlockPosition;
+import net.minecraft.server.v1_15_R1.Chunk;
+import net.minecraft.server.v1_15_R1.IBlockData;
+import net.minecraft.server.v1_15_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_15_R1.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setType(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
}
}
diff --git a/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java
index 07e3ab2c..685f3bd4 100644
--- a/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java
@@ -46,7 +46,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/SWorldImpl.java b/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/SWorldImpl.java
index 1ad6bf55..e28e2e17 100644
--- a/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/SWorldImpl.java
@@ -1,17 +1,37 @@
package com.songoda.core.nms.v1_16_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_16_R1.BlockPosition;
+import net.minecraft.server.v1_16_R1.Chunk;
+import net.minecraft.server.v1_16_R1.IBlockData;
+import net.minecraft.server.v1_16_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_16_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_16_R1.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setType(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
}
}
diff --git a/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java
index 94163f10..85a76ea7 100644
--- a/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java
@@ -46,7 +46,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/SWorldImpl.java b/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/SWorldImpl.java
index b827e04f..9e5f668c 100644
--- a/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/SWorldImpl.java
+++ b/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/SWorldImpl.java
@@ -1,17 +1,37 @@
package com.songoda.core.nms.v1_16_R2.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_16_R2.BlockPosition;
+import net.minecraft.server.v1_16_R2.Chunk;
+import net.minecraft.server.v1_16_R2.IBlockData;
+import net.minecraft.server.v1_16_R2.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_16_R2.CraftWorld;
+import org.bukkit.craftbukkit.v1_16_R2.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setType(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
}
}
diff --git a/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java
index 72124e2b..a3e1051e 100644
--- a/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java
@@ -46,7 +46,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/SWorldImpl.java b/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/SWorldImpl.java
index 0b12fabd..e1a6e589 100644
--- a/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/SWorldImpl.java
+++ b/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/SWorldImpl.java
@@ -1,17 +1,37 @@
package com.songoda.core.nms.v1_16_R3.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_16_R3.BlockPosition;
+import net.minecraft.server.v1_16_R3.Chunk;
+import net.minecraft.server.v1_16_R3.IBlockData;
+import net.minecraft.server.v1_16_R3.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
+import org.bukkit.craftbukkit.v1_16_R3.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setType(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
}
}
diff --git a/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java b/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java
index c839b054..3d9243b9 100644
--- a/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java
@@ -46,7 +46,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/SWorldImpl.java b/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/SWorldImpl.java
index b7c5bd51..162e9f0e 100644
--- a/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/SWorldImpl.java
@@ -1,12 +1,17 @@
package com.songoda.core.nms.v1_17_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.core.BlockPosition;
import net.minecraft.server.level.WorldServer;
import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.block.state.IBlockData;
+import net.minecraft.world.level.chunk.Chunk;
import net.minecraft.world.level.entity.LevelEntityGetter;
import net.minecraft.world.level.entity.PersistentEntitySectionManager;
+import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_17_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.lang.reflect.Field;
@@ -37,9 +42,8 @@ public class SWorldImpl implements SWorld {
List list = new ArrayList<>();
try {
- WorldServer worldServer = ((CraftWorld) world).getHandle();
- LevelEntityGetter entities =
- ((PersistentEntitySectionManager) fieldG.get(worldServer)).d();
+ WorldServer worldServer = ((CraftWorld) this.world).getHandle();
+ LevelEntityGetter entities = ((PersistentEntitySectionManager) fieldG.get(worldServer)).d();
entities.a().forEach((mcEnt) -> {
org.bukkit.entity.Entity bukkitEntity = mcEnt.getBukkitEntity();
@@ -53,4 +57,13 @@ public class SWorldImpl implements SWorld {
return list;
}
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setType(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
+ }
}
diff --git a/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/SWorldImpl.java b/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/SWorldImpl.java
index 5551f813..df18b4b8 100644
--- a/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/SWorldImpl.java
@@ -1,10 +1,15 @@
package com.songoda.core.nms.v1_18_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.core.BlockPosition;
import net.minecraft.server.level.WorldServer;
+import net.minecraft.world.level.block.state.IBlockData;
+import net.minecraft.world.level.chunk.Chunk;
import net.minecraft.world.level.entity.LevelEntityGetter;
+import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_18_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_18_R1.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
@@ -21,7 +26,7 @@ public class SWorldImpl implements SWorld {
public List getLivingEntities() {
List result = new ArrayList<>();
- WorldServer worldServer = ((CraftWorld) world).getHandle();
+ WorldServer worldServer = ((CraftWorld) this.world).getHandle();
LevelEntityGetter entities = worldServer.P.d();
entities.a().forEach((mcEnt) -> {
@@ -34,4 +39,13 @@ public class SWorldImpl implements SWorld {
return result;
}
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+ IBlockData blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), blockState, true);
+ }
}
diff --git a/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/SWorldImpl.java b/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/SWorldImpl.java
index a3ac885c..5cf6f6f9 100644
--- a/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/SWorldImpl.java
+++ b/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/SWorldImpl.java
@@ -1,11 +1,16 @@
package com.songoda.core.nms.v1_18_R2.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.chunk.LevelChunk;
import net.minecraft.world.level.entity.LevelEntityGetter;
+import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
+import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
@@ -22,8 +27,8 @@ public class SWorldImpl implements SWorld {
public List getLivingEntities() {
List result = new ArrayList<>();
- ServerLevel worldServer = ((CraftWorld) world).getHandle();
- LevelEntityGetter entities = worldServer.entityManager.getEntityGetter();
+ ServerLevel serverLevel = ((CraftWorld) this.world).getHandle();
+ LevelEntityGetter entities = serverLevel.entityManager.getEntityGetter();
entities.getAll().forEach((mcEnt) -> {
org.bukkit.entity.Entity bukkitEntity = mcEnt.getBukkitEntity();
@@ -35,4 +40,13 @@ public class SWorldImpl implements SWorld {
return result;
}
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ ServerLevel serverLevel = ((CraftWorld) this.world).getHandle();
+ LevelChunk levelChunk = serverLevel.getChunk(x >> 4, z >> 4);
+ BlockState blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setBlockState(new BlockPos(x & 0xF, y, z & 0xF), blockState, true);
+ }
}
diff --git a/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/SWorldImpl.java b/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/SWorldImpl.java
index 0706be94..75ca33ab 100644
--- a/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/SWorldImpl.java
@@ -1,11 +1,16 @@
package com.songoda.core.nms.v1_19_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.chunk.LevelChunk;
import net.minecraft.world.level.entity.LevelEntityGetter;
+import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_19_R1.block.data.CraftBlockData;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
@@ -22,7 +27,7 @@ public class SWorldImpl implements SWorld {
public List getLivingEntities() {
List result = new ArrayList<>();
- ServerLevel worldServer = ((CraftWorld) world).getHandle();
+ ServerLevel worldServer = ((CraftWorld) this.world).getHandle();
LevelEntityGetter entities = worldServer.entityManager.getEntityGetter();
entities.getAll().forEach((mcEnt) -> {
@@ -35,4 +40,13 @@ public class SWorldImpl implements SWorld {
return result;
}
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ ServerLevel serverLevel = ((CraftWorld) this.world).getHandle();
+ LevelChunk levelChunk = serverLevel.getChunk(x >> 4, z >> 4);
+ BlockState blockState = ((CraftBlockData) material.createBlockData()).getState();
+
+ levelChunk.setBlockState(new BlockPos(x & 0xF, y, z & 0xF), blockState, true);
+ }
}
diff --git a/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/SWorldImpl.java b/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/SWorldImpl.java
index 2518d072..99cf9790 100644
--- a/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_8_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_8_R1.Block;
+import net.minecraft.server.v1_8_R1.BlockPosition;
+import net.minecraft.server.v1_8_R1.Chunk;
+import net.minecraft.server.v1_8_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_8_R1.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java
index 55c35dc1..df5ef295 100644
--- a/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/SWorldImpl.java b/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/SWorldImpl.java
index fa2fc439..f516bfef 100644
--- a/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/SWorldImpl.java
+++ b/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_8_R2.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_8_R2.Block;
+import net.minecraft.server.v1_8_R2.BlockPosition;
+import net.minecraft.server.v1_8_R2.Chunk;
+import net.minecraft.server.v1_8_R2.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_8_R2.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java
index 770896ea..9b94f43f 100644
--- a/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/SWorldImpl.java b/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/SWorldImpl.java
index f8430d5c..189fb6b5 100644
--- a/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/SWorldImpl.java
+++ b/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_8_R3.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_8_R3.Block;
+import net.minecraft.server.v1_8_R3.BlockPosition;
+import net.minecraft.server.v1_8_R3.Chunk;
+import net.minecraft.server.v1_8_R3.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java b/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java
index 144be4dc..58db037c 100644
--- a/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/SWorldImpl.java b/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/SWorldImpl.java
index fdfe63fa..49d6b8b0 100644
--- a/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/SWorldImpl.java
+++ b/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_9_R1.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_9_R1.Block;
+import net.minecraft.server.v1_9_R1.BlockPosition;
+import net.minecraft.server.v1_9_R1.Chunk;
+import net.minecraft.server.v1_9_R1.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_9_R1.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java
index 99b48185..6bf93248 100644
--- a/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override
diff --git a/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/SWorldImpl.java b/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/SWorldImpl.java
index 4e118871..deebc639 100644
--- a/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/SWorldImpl.java
+++ b/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/SWorldImpl.java
@@ -1,17 +1,35 @@
package com.songoda.core.nms.v1_9_R2.world;
import com.songoda.core.nms.world.SWorld;
+import net.minecraft.server.v1_9_R2.Block;
+import net.minecraft.server.v1_9_R2.BlockPosition;
+import net.minecraft.server.v1_9_R2.Chunk;
+import net.minecraft.server.v1_9_R2.WorldServer;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.craftbukkit.v1_9_R2.CraftWorld;
import org.bukkit.entity.LivingEntity;
import java.util.ArrayList;
import java.util.List;
public class SWorldImpl implements SWorld {
- public SWorldImpl() {
+ private final World world;
+
+ public SWorldImpl(World world) {
+ this.world = world;
}
@Override
public List getLivingEntities() {
- return new ArrayList<>();
+ return new ArrayList<>(); // FIXME
+ }
+
+ @Override
+ public void setBlockFast(int x, int y, int z, Material material) {
+ WorldServer serverLevel = ((CraftWorld) this.world).getHandle();
+ Chunk levelChunk = serverLevel.getChunkIfLoaded(x >> 4, z >> 4);
+
+ levelChunk.a(new BlockPosition(x & 0xF, y, z & 0xF), Block.getByCombinedId(0));
}
}
diff --git a/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java
index ad35fe04..008551a5 100644
--- a/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java
+++ b/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java
@@ -43,7 +43,7 @@ public class WorldCoreImpl implements WorldCore {
@Override
public SWorld getWorld(World world) {
- return new SWorldImpl();
+ return new SWorldImpl(world);
}
@Override