Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 19:10:09 +01:00
9ff01b16ab
This will be used by my next commit. But trying to get the build going since CI blew up
192 Zeilen
7.1 KiB
Diff
192 Zeilen
7.1 KiB
Diff
From 97671c73d297bf6f9938d518d162b9323c1482ae Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
Date: Tue, 1 Mar 2016 22:01:19 -0600
|
|
Subject: [PATCH] Optimize TileEntity Ticking
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java
|
|
index 8f988c3..4b510b9 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntityChest.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntityChest.java
|
|
@@ -8,17 +8,17 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
|
|
import org.bukkit.entity.HumanEntity;
|
|
// CraftBukkit end
|
|
|
|
-public class TileEntityChest extends TileEntityLootable implements ITickable, IInventory {
|
|
+public class TileEntityChest extends TileEntityLootable implements IInventory { // Paper - Remove ITickable
|
|
|
|
private ItemStack[] items = new ItemStack[27];
|
|
public boolean a;
|
|
- public TileEntityChest f;
|
|
- public TileEntityChest g;
|
|
- public TileEntityChest h;
|
|
- public TileEntityChest i;
|
|
- public float j;
|
|
+ public TileEntityChest f; // Paper - Adjacent Chest Z Neg
|
|
+ public TileEntityChest g; // Paper - Adjacent Chest X Pos
|
|
+ public TileEntityChest h; // Paper - Adjacent Chest X Neg
|
|
+ public TileEntityChest i; // Paper - Adjacent Chest Z Pos
|
|
+ public float j; // Paper - lid angle
|
|
public float k;
|
|
- public int l;
|
|
+ public int l; // Paper - Number of viewers
|
|
private int p;
|
|
private BlockChest.Type q;
|
|
private String r;
|
|
@@ -231,6 +231,8 @@ public class TileEntityChest extends TileEntityLootable implements ITickable, II
|
|
}
|
|
|
|
public void c() {
|
|
+ // Paper - Disable all of this, just in case this does get ticked
|
|
+ /*
|
|
this.m();
|
|
int i = this.position.getX();
|
|
int j = this.position.getY();
|
|
@@ -311,7 +313,8 @@ public class TileEntityChest extends TileEntityLootable implements ITickable, II
|
|
this.j = 0.0F;
|
|
}
|
|
}
|
|
-
|
|
+ */
|
|
+ // Paper end
|
|
}
|
|
|
|
public boolean c(int i, int j) {
|
|
@@ -331,6 +334,29 @@ public class TileEntityChest extends TileEntityLootable implements ITickable, II
|
|
int oldPower = Math.max(0, Math.min(15, this.l)); // CraftBukkit - Get power before new viewer is added
|
|
|
|
++this.l;
|
|
+
|
|
+ // Paper start - Move chest open sound out of the tick loop
|
|
+ this.m();
|
|
+
|
|
+ if (this.l > 0 && this.j == 0.0F && this.f == null && this.h == null) {
|
|
+ this.j = 0.7F;
|
|
+
|
|
+ double d0 = (double) this.position.getZ() + 0.5D;
|
|
+ double d1 = (double) this.position.getX() + 0.5D;
|
|
+ int yLoc = this.position.getY();
|
|
+
|
|
+ if (this.i != null) {
|
|
+ d0 += 0.5D;
|
|
+ }
|
|
+
|
|
+ if (this.g != null) {
|
|
+ d1 += 0.5D;
|
|
+ }
|
|
+
|
|
+ this.world.a((EntityHuman) null, d1, (double) yLoc + 0.5D, d0, SoundEffects.X, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
if (this.world == null) return; // CraftBukkit
|
|
this.world.playBlockAction(this.position, this.getBlock(), 1, this.l);
|
|
|
|
@@ -354,6 +380,34 @@ public class TileEntityChest extends TileEntityLootable implements ITickable, II
|
|
int oldPower = Math.max(0, Math.min(15, this.l)); // CraftBukkit - Get power before new viewer is added
|
|
--this.l;
|
|
if (this.world == null) return; // CraftBukkit
|
|
+
|
|
+ // Paper start - Move chest close sound out of the tick loop
|
|
+ if (this.l == 0 && this.j > 0.0F || this.l > 0 && this.j < 1.0F) {
|
|
+ float f = 0.1F;
|
|
+
|
|
+ if (this.l > 0) {
|
|
+ this.j += f;
|
|
+ } else {
|
|
+ this.j -= f;
|
|
+ }
|
|
+
|
|
+ double d0 = (double) this.getPosition().getX() + 0.5D;
|
|
+ double d2 = (double) this.getPosition().getZ() + 0.5D;
|
|
+ int yLoc = this.position.getY();
|
|
+
|
|
+ if (this.i != null) {
|
|
+ d2 += 0.5D;
|
|
+ }
|
|
+
|
|
+ if (this.g != null) {
|
|
+ d0 += 0.5D;
|
|
+ }
|
|
+
|
|
+ this.world.a((EntityHuman) null, d0, (double) yLoc + 0.5D, d2, SoundEffects.V, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
|
+ this.j = 0.0F;
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
this.world.playBlockAction(this.position, this.getBlock(), 1, this.l);
|
|
|
|
// CraftBukkit start - Call redstone event
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
|
|
index e454622..d01b65a 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntityEnderChest.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
|
|
@@ -1,15 +1,17 @@
|
|
package net.minecraft.server;
|
|
|
|
-public class TileEntityEnderChest extends TileEntity implements ITickable {
|
|
+public class TileEntityEnderChest extends TileEntity { // Paper - Remove ITickable
|
|
|
|
- public float a;
|
|
+ public float a; // Paper - lid angle
|
|
public float f;
|
|
- public int g;
|
|
+ public int g; // Paper - Number of viewers
|
|
private int h;
|
|
|
|
public TileEntityEnderChest() {}
|
|
|
|
public void c() {
|
|
+ // Paper start - Disable all of this, just in case this does get ticked
|
|
+ /*
|
|
if (++this.h % 20 * 4 == 0) {
|
|
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
|
|
}
|
|
@@ -54,6 +56,8 @@ public class TileEntityEnderChest extends TileEntity implements ITickable {
|
|
this.a = 0.0F;
|
|
}
|
|
}
|
|
+ */
|
|
+ // Paper end
|
|
|
|
}
|
|
|
|
@@ -73,11 +77,34 @@ public class TileEntityEnderChest extends TileEntity implements ITickable {
|
|
|
|
public void b() {
|
|
++this.g;
|
|
+
|
|
+ // Paper start - Move enderchest open sounds out of the tick loop
|
|
+ if (this.g > 0 && this.a == 0.0F) {
|
|
+ this.a = 0.7F;
|
|
+
|
|
+ double d1 = (double) this.getPosition().getX() + 0.5D;
|
|
+ double d0 = (double) this.getPosition().getZ() + 0.5D;
|
|
+
|
|
+ this.world.a((EntityHuman) null, d1, (double) this.getPosition().getY() + 0.5D, d0, SoundEffects.aL, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
|
|
}
|
|
|
|
public void d() {
|
|
--this.g;
|
|
+
|
|
+ // Paper start - Move enderchest close sounds out of the tick loop
|
|
+ if (this.g == 0 && this.a > 0.0F || this.g > 0 && this.a < 1.0F) {
|
|
+ double d0 = (double) this.getPosition().getX() + 0.5D;
|
|
+ double d2 = (double) this.getPosition().getZ() + 0.5D;
|
|
+
|
|
+ this.world.a((EntityHuman) null, d0, (double) this.getPosition().getY() + 0.5D, d2, SoundEffects.aK, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
|
+ this.a = 0.0F;
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
|
|
}
|
|
|
|
--
|
|
2.7.4
|
|
|