fix: getIdByNameId, sendBlock

- исправлен getIdByNameId
- добавлена отправка блоков, которые устанавливаются с помощью BlockSource
This commit is contained in:
Reider745
2023-12-15 20:13:50 +03:00
parent 4794804bf1
commit 8fbd6c2316
2 changed files with 17 additions and 3 deletions
@@ -22,6 +22,7 @@ import com.reider745.hooks.GlobalBlockPalette;
import com.reider745.hooks.ItemUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
public class BlockSourceMethods {
@@ -34,6 +35,17 @@ public class BlockSourceMethods {
}
}
private static void sendBlock(Level level, int x, int y, int z){
final int X = x/16, Z = z/16;
final ArrayList<Player> players = new ArrayList<>();
for(int xo = -1;xo <= 1;xo++)
for(int zo = -1;zo <= 1;zo++)
players.addAll(level.getChunkPlayers(X+xo, Z+zo).values());
level.sendBlocks(players.toArray(new Player[0]), new Vector3[]{new Vector3(x, y, z)});
}
public static Level getLevelForDimension(int dimension) {
if (dimension >= 0 && dimension <= 2) {
return InnerCoreServer.server.getLevelByName(switch (dimension) {
@@ -62,6 +74,7 @@ public class BlockSourceMethods {
}
defDestroy(pointer, block);
pointer.setBlock(x, y, z, Block.get(0), false, update);
sendBlock(pointer, x, y, z);
}
public static int getBlockId(Level pointer, int x, int y, int z) {
@@ -129,6 +142,7 @@ public class BlockSourceMethods {
Block block = pointer.getBlock(x, y, z);
defDestroy(pointer, block);
pointer.setBlock(x, y, z, Block.get(id, data).clone(), false, allowUpdate);
sendBlock(pointer, x, y, z);
}
public static void setBlockByRuntimeId(Level pointer, int x, int y, int z, int runtimeId, boolean allowUpdate,
@@ -141,6 +155,7 @@ public class BlockSourceMethods {
public static void setExtraBlock(Level pointer, int x, int y, int z, int id, int data, boolean allowUpdate,
int updateType) {
pointer.setBlockExtraDataAt(x, y, z, id, data);
sendBlock(pointer, x, y, z);
}
public static void setExtraBlockByRuntimeId(Level pointer, int x, int y, int z, int runtimeId, boolean allowUpdate,
@@ -114,11 +114,10 @@ public class IDRegistry {
}
public static int getIdByNameId(String id) {
System.out.println(id);
if (id.startsWith("item_")) {
return CustomItem.getIdForText(id.replace("item_", ""));
return CustomItem.getIdForText(id);
}
return CustomBlock.getIdForText(id.replace("block_", ""));
return CustomBlock.getIdForText(id);
}
static boolean isOccupied(int id) {