d089acb3bd
ForgeFlower is better than Spigots FernFlower at decompiling the source. However, in order to maintain the CraftBukkit patches, we must keep using spigots for the primary. However, for any file that we import on top of Spigots imported files there is nothing stopping us from using better decompiled files. So these changes will use ForgeFlower to maintain a better set of decomped files, so anything we add on top of Paper can start off in a better spot.
170 lines
7.1 KiB
Diff
170 lines
7.1 KiB
Diff
From fe5d1f6d166e14ba309e16fb90c12c82ab35e5c4 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sun, 8 Mar 2015 22:55:25 -0600
|
|
Subject: [PATCH] Optimize TileEntity Ticking
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockChest.java b/src/main/java/net/minecraft/server/BlockChest.java
|
|
index 9ffec378a9..5401f7d754 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockChest.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockChest.java
|
|
@@ -216,7 +216,7 @@ public class BlockChest extends BlockTileEntity implements IFluidSource, IFluidC
|
|
}
|
|
|
|
private boolean b(World world, BlockPosition blockposition) {
|
|
- List list = world.a(EntityOcelot.class, new AxisAlignedBB((double)blockposition.getX(), (double)(blockposition.getY() + 1), (double)blockposition.getZ(), (double)(blockposition.getX() + 1), (double)(blockposition.getY() + 2), (double)(blockposition.getZ() + 1)));
|
|
+ List<EntityOcelot> list = world.a(EntityOcelot.class, new AxisAlignedBB((double)blockposition.getX(), (double)(blockposition.getY() + 1), (double)blockposition.getZ(), (double)(blockposition.getX() + 1), (double)(blockposition.getY() + 2), (double)(blockposition.getZ() + 1))); // Paper - decompile fix
|
|
if (!list.isEmpty()) {
|
|
for(EntityOcelot entityocelot : list) {
|
|
if (entityocelot.isSitting()) {
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java
|
|
index ad601a39d9..9573a4ecdf 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntityChest.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntityChest.java
|
|
@@ -7,7 +7,7 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
|
|
import org.bukkit.entity.HumanEntity;
|
|
// CraftBukkit end
|
|
|
|
-public class TileEntityChest extends TileEntityLootable implements ITickable {
|
|
+public class TileEntityChest extends TileEntityLootable { // Paper - Remove ITickable
|
|
|
|
private NonNullList<ItemStack> items;
|
|
protected float a;
|
|
@@ -113,9 +113,15 @@ public class TileEntityChest extends TileEntityLootable implements ITickable {
|
|
int k = this.position.getZ();
|
|
|
|
++this.k;
|
|
+ // Paper start
|
|
+ }
|
|
+ private void doOpenLogic() {
|
|
float f;
|
|
-
|
|
- if (!this.world.isClientSide && this.f != 0 && (this.k + i + j + k) % 200 == 0) {
|
|
+ int i = this.position.getX();
|
|
+ int j = this.position.getY();
|
|
+ int k = this.position.getZ();
|
|
+ if (false && !this.world.isClientSide && this.f != 0 && (this.k + i + j + k) % 200 == 0) { // Paper - disable block
|
|
+ // Paper end
|
|
this.f = 0;
|
|
f = 5.0F;
|
|
List list = this.world.a(EntityHuman.class, new AxisAlignedBB((double) ((float) i - 5.0F), (double) ((float) j - 5.0F), (double) ((float) k - 5.0F), (double) ((float) (i + 1) + 5.0F), (double) ((float) (j + 1) + 5.0F), (double) ((float) (k + 1) + 5.0F)));
|
|
@@ -134,13 +140,17 @@ public class TileEntityChest extends TileEntityLootable implements ITickable {
|
|
}
|
|
}
|
|
|
|
- this.e = this.a;
|
|
- f = 0.1F;
|
|
- if (this.f > 0 && this.a == 0.0F) {
|
|
+ if (this.f == 1 && this.a == 0.0F) { // check == 1 instead of > 0, first open
|
|
this.a(SoundEffects.BLOCK_CHEST_OPEN);
|
|
}
|
|
+ // Paper start
|
|
+ }
|
|
+ private void doCloseLogic() {
|
|
+ this.e = this.a;
|
|
+ // Paper end
|
|
|
|
- if (this.f == 0 && this.a > 0.0F || this.f > 0 && this.a < 1.0F) {
|
|
+ if (this.f == 0/* && this.a > 0.0F || this.f > 0 && this.a < 1.0F*/) { // Paper disable all but player count check
|
|
+ /* // Paper disable animation stuff
|
|
float f1 = this.a;
|
|
|
|
if (this.f > 0) {
|
|
@@ -155,9 +165,14 @@ public class TileEntityChest extends TileEntityLootable implements ITickable {
|
|
|
|
float f2 = 0.5F;
|
|
|
|
+
|
|
if (this.a < 0.5F && f1 >= 0.5F) {
|
|
- this.a(SoundEffects.BLOCK_CHEST_CLOSE);
|
|
- }
|
|
+ */
|
|
+ // add some delay
|
|
+ MCUtil.scheduleTask(10, () -> {
|
|
+ if (this.f == 0) this.a(SoundEffects.BLOCK_CHEST_CLOSE);
|
|
+ });
|
|
+ // } // Paper end
|
|
|
|
if (this.a < 0.0F) {
|
|
this.a = 0.0F;
|
|
@@ -203,6 +218,7 @@ public class TileEntityChest extends TileEntityLootable implements ITickable {
|
|
|
|
++this.f;
|
|
if (this.world == null) return; // CraftBukkit
|
|
+ doOpenLogic(); // Paper
|
|
|
|
// CraftBukkit start - Call redstone event
|
|
if (this.getBlock() == Blocks.TRAPPED_CHEST) {
|
|
@@ -224,6 +240,7 @@ public class TileEntityChest extends TileEntityLootable implements ITickable {
|
|
--this.f;
|
|
|
|
// CraftBukkit start - Call redstone event
|
|
+ doCloseLogic(); // Paper
|
|
if (this.getBlock() == Blocks.TRAPPED_CHEST) {
|
|
int newPower = Math.max(0, Math.min(15, this.f));
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
|
|
index 05de26405e..bc851d2a04 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntityEnderChest.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
|
|
@@ -1,6 +1,6 @@
|
|
package net.minecraft.server;
|
|
|
|
-public class TileEntityEnderChest extends TileEntity implements ITickable {
|
|
+public class TileEntityEnderChest extends TileEntity { // Paper - Remove ITickable
|
|
public float a;
|
|
public float e;
|
|
public int f;
|
|
@@ -16,16 +16,34 @@ public class TileEntityEnderChest extends TileEntity implements ITickable {
|
|
}
|
|
|
|
this.e = this.a;
|
|
+ // Paper start
|
|
+ /*
|
|
int i = this.position.getX();
|
|
int j = this.position.getY();
|
|
int k = this.position.getZ();
|
|
float fx = 0.1F;
|
|
+ */
|
|
+ // Paper start
|
|
+ }
|
|
+ private void doOpenLogic() {
|
|
+ int i = this.position.getX();
|
|
+ int j = this.position.getY();
|
|
+ int k = this.position.getZ();
|
|
+ // Paper end
|
|
if (this.f > 0 && this.a == 0.0F) {
|
|
double d0 = (double)i + 0.5D;
|
|
double d1 = (double)k + 0.5D;
|
|
this.world.a((EntityHuman)null, d0, (double)j + 0.5D, d1, SoundEffects.BLOCK_ENDER_CHEST_OPEN, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
|
}
|
|
-
|
|
+ // Paper start
|
|
+ }
|
|
+ private void doCloseLogic() {
|
|
+ int i = this.position.getX();
|
|
+ int j = this.position.getY();
|
|
+ int k = this.position.getZ();
|
|
+ this.e = this.a;
|
|
+ double d0;
|
|
+ // Paper end
|
|
if (this.f == 0 && this.a > 0.0F || this.f > 0 && this.a < 1.0F) {
|
|
float f2 = this.a;
|
|
if (this.f > 0) {
|
|
@@ -69,11 +87,13 @@ public class TileEntityEnderChest extends TileEntity implements ITickable {
|
|
public void c() {
|
|
++this.f;
|
|
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.f);
|
|
+ doOpenLogic(); // Paper
|
|
}
|
|
|
|
public void d() {
|
|
--this.f;
|
|
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.f);
|
|
+ doCloseLogic(); // Paper
|
|
}
|
|
|
|
public boolean a(EntityHuman entityhuman) {
|
|
--
|
|
2.18.0
|
|
|