2020-10-12 00:52:57 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
|
|
|
Date: Wed, 3 Jun 2020 11:37:13 -0700
|
|
|
|
Subject: [PATCH] Optimise getType calls
|
|
|
|
|
|
|
|
Remove the map lookup for converting from Block->Bukkit Material
|
|
|
|
|
2021-03-16 08:19:45 +01:00
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/state/IBlockData.java b/src/main/java/net/minecraft/world/level/block/state/IBlockData.java
|
2020-10-12 00:52:57 +02:00
|
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
2021-03-16 08:19:45 +01:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/block/state/IBlockData.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/block/state/IBlockData.java
|
2020-10-12 00:52:57 +02:00
|
|
|
@@ -0,0 +0,0 @@ public class IBlockData extends BlockBase.BlockData {
|
|
|
|
|
|
|
|
public static final Codec<IBlockData> b = a((Codec) IRegistry.BLOCK, Block::getBlockData).stable();
|
|
|
|
|
|
|
|
+
|
|
|
|
+ // Paper start - optimise getType calls
|
|
|
|
+ org.bukkit.Material cachedMaterial;
|
|
|
|
+
|
|
|
|
+ public final org.bukkit.Material getBukkitMaterial() {
|
|
|
|
+ if (this.cachedMaterial == null) {
|
|
|
|
+ this.cachedMaterial = org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(this.getBlock());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return this.cachedMaterial;
|
|
|
|
+ }
|
|
|
|
+ // Paper end - optimise getType calls
|
|
|
|
+
|
|
|
|
public IBlockData(Block block, ImmutableMap<IBlockState<?>, Comparable<?>> immutablemap, MapCodec<IBlockData> mapcodec) {
|
|
|
|
super(block, immutablemap, mapcodec);
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
|
|
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
|
|
|
|
@@ -0,0 +0,0 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
|
|
|
|
public Material getBlockType(int x, int y, int z) {
|
|
|
|
CraftChunk.validateChunkCoordinates(x, y, z);
|
|
|
|
|
|
|
|
- return CraftMagicNumbers.getMaterial(blockids[y >> 4].a(x, y & 0xF, z).getBlock());
|
|
|
|
+ return blockids[y >> 4].a(x, y & 0xF, z).getBukkitMaterial(); // Paper - optimise getType calls
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
|
|
@@ -0,0 +0,0 @@ public class CraftBlock implements Block {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Material getType() {
|
|
|
|
- return CraftMagicNumbers.getMaterial(world.getType(position).getBlock());
|
|
|
|
+ return world.getType(position).getBukkitMaterial(); // Paper - optimise getType calls
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
|
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
|
|
|
@@ -0,0 +0,0 @@ public class CraftBlockState implements BlockState {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Material getType() {
|
|
|
|
- return CraftMagicNumbers.getMaterial(data.getBlock());
|
|
|
|
+ return data.getBukkitMaterial(); // Paper - optimise getType calls
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setFlag(int flag) {
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
|
|
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
|
|
|
|
@@ -0,0 +0,0 @@ public class CraftBlockData implements BlockData {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Material getMaterial() {
|
|
|
|
- return CraftMagicNumbers.getMaterial(state.getBlock());
|
|
|
|
+ return state.getBukkitMaterial(); // Paper - optimise getType calls
|
|
|
|
}
|
|
|
|
|
|
|
|
public IBlockData getState() {
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java
|
|
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java
|
|
|
|
@@ -0,0 +0,0 @@ public final class CraftChunkData implements ChunkGenerator.ChunkData {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Material getType(int x, int y, int z) {
|
|
|
|
- return CraftMagicNumbers.getMaterial(getTypeId(x, y, z).getBlock());
|
|
|
|
+ return getTypeId(x, y, z).getBukkitMaterial(); // Paper - optimise getType calls
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|