Remove our own (outdated) TE handling, for one that's closer to vanilla

This commit is contained in:
Zach Brown 2015-09-19 09:34:17 -05:00
parent ea565eff61
commit 7aa4900879
49 changed files with 256 additions and 566 deletions

View file

@ -1,90 +1,201 @@
From aa2e76930579e08f02deb52ab784371c7bad93fa Mon Sep 17 00:00:00 2001
From 5a25c7f79274223ab53f27336824a0d251c15f30 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 8 Mar 2015 01:56:22 -0600
Subject: [PATCH] Optimize TileEntity Ticking
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index c268a40..1971941 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -21,6 +21,12 @@ public abstract class TileEntity {
private int h;
protected Block e;
+ // PaperSpigot start - Optimized TileEntity tick changes
+ private static int tileEntityCounter = 0;
+ public boolean isAdded = false;
+ public int tileId = tileEntityCounter++;
+ // PaperSpigot end
+
public TileEntity() {
this.position = BlockPosition.ZERO;
this.h = -1;
diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java
index 4f280dd..3ea1b62 100644
--- a/src/main/java/net/minecraft/server/TileEntityBeacon.java
+++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java
@@ -48,7 +48,7 @@ public class TileEntityBeacon extends TileEntityContainer implements IUpdatePlay
public TileEntityBeacon() {}
public void c() {
- if (this.world.getTime() % 80L == 0L) {
+ if (true || this.world.getTime() % 80L == 0L) { // PaperSpigot - Controlled by improved tick handling
this.m();
}
diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java
index 5eb55e5..b31973a 100644
index 5eb55e5..5192d95 100644
--- a/src/main/java/net/minecraft/server/TileEntityChest.java
+++ b/src/main/java/net/minecraft/server/TileEntityChest.java
@@ -246,7 +246,7 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
++this.n;
float f;
@@ -8,17 +8,17 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
import org.bukkit.entity.HumanEntity;
// CraftBukkit end
- if (!this.world.isClientSide && this.l != 0 && (this.n + i + j + k) % 200 == 0) {
+ if (!this.world.isClientSide && this.l != 0 && (this.n + i + j + k) % 10 == 0) { // PaperSpigot - Reduced 200 -> 10 due to reduced interval from improved tick handling
this.l = 0;
f = 5.0F;
List list = this.world.a(EntityHuman.class, new AxisAlignedBB((double) ((float) i - f), (double) ((float) j - f), (double) ((float) k - f), (double) ((float) (i + 1) + f), (double) ((float) (j + 1) + f), (double) ((float) (k + 1) + f)));
-public class TileEntityChest extends TileEntityContainer implements IUpdatePlayerListBox, IInventory {
+public class TileEntityChest extends TileEntityContainer implements IInventory { // PaperSpigot - remove IUpdatePlayerListBox
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; // PaperSpigot - adjacentChestZNeg
+ public TileEntityChest g; // PaperSpigot - adjacentChestXPos
+ public TileEntityChest h; // PaperSpigot - adjacentChestXNeg
+ public TileEntityChest i; // PaperSpigot - adjacentChestZPos
+ public float j; // PaperSpigot - lidAngle
public float k;
- public int l;
+ public int l; // PaperSpigot - numPlayersUsing
private int n;
private int o = -1;
private String p;
@@ -238,6 +238,8 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
}
public void c() {
+ // PaperSpigot - Move chest sounds out of the tick loop
+ /*
this.m();
int i = this.position.getX();
int j = this.position.getY();
@@ -318,7 +320,8 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
this.j = 0.0F;
}
}
-
+ */
+ // PaperSpigot end
}
public boolean c(int i, int j) {
@@ -339,6 +342,28 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
++this.l;
if (this.world == null) return; // CraftBukkit
+
+ // PaperSpigot 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;
+
+ if (this.i != null) {
+ d0 += 0.5D;
+ }
+
+ if (this.g != null) {
+ d1 += 0.5D;
+ }
+
+ this.world.makeSound(d1, (double) this.position.getY() + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, this.w(), 1, this.l);
// CraftBukkit start - Call redstone event
@@ -361,6 +386,33 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
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
+
+ // PaperSpigot start - Move chest close sound handling 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;
+
+ if (this.i != null) {
+ d2 += 0.5D;
+ }
+
+ if (this.g != null) {
+ d0 += 0.5D;
+ }
+
+ this.world.makeSound(d0, (double) this.getPosition().getY() + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ this.j = 0.0F;
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, this.w(), 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 794cdc8..f712885 100644
index 794cdc8..00fceda 100644
--- a/src/main/java/net/minecraft/server/TileEntityEnderChest.java
+++ b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
@@ -10,7 +10,7 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis
@@ -1,15 +1,17 @@
package net.minecraft.server;
-public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerListBox {
+public class TileEntityEnderChest extends TileEntity { // PaperSpigot - remove IUpdatePlayerListBox
- public float a;
+ public float a; // PaperSpigot - lidAngle
public float f;
- public int g;
+ public int g; // PaperSpigot - numPlayersUsing
private int h;
public TileEntityEnderChest() {}
public void c() {
- if (++this.h % 20 * 4 == 0) {
+ if (++this.h % 4 == 0) { // PaperSpigot - Reduced (20 * 4) -> 4 interval due to reduced tick rate from improved tick handling
+ // PaperSpigot start - Move enderchest sound handling out of the tick loop
+ /*
if (++this.h % 20 * 4 == 0) {
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
}
@@ -54,7 +56,8 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis
this.a = 0.0F;
}
}
-
+ */
+ // PaperSpigot end
}
public boolean c(int i, int j) {
@@ -73,11 +76,34 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis
public void b() {
++this.g;
+
+ // PaperSpigot 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.makeSound(d1, (double) this.getPosition().getY() + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
}
diff --git a/src/main/java/net/minecraft/server/TileEntityLightDetector.java b/src/main/java/net/minecraft/server/TileEntityLightDetector.java
index f75e2de..7119612 100644
--- a/src/main/java/net/minecraft/server/TileEntityLightDetector.java
+++ b/src/main/java/net/minecraft/server/TileEntityLightDetector.java
@@ -5,7 +5,7 @@ public class TileEntityLightDetector extends TileEntity implements IUpdatePlayer
public TileEntityLightDetector() {}
public void d() {
--this.g;
+
+ // PaperSpigot 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.makeSound(d0, (double) this.getPosition().getY() + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ this.a = 0.0F;
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
}
public void c() {
- if (this.world != null && !this.world.isClientSide && this.world.getTime() % 20L == 0L) {
+ if (this.world != null && !this.world.isClientSide /*&& this.world.getTime() % 20L == 0L*/) { // PaperSpigot - interval controlled by improved tick handling
this.e = this.w();
if (this.e instanceof BlockDaylightDetector) {
((BlockDaylightDetector) this.e).f(this.world, this.position);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 641db2a..22237c9 100644
index 641db2a..8a2d2c0 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -28,6 +28,19 @@ public abstract class World implements IBlockAccess {
@@ -28,6 +28,18 @@ public abstract class World implements IBlockAccess {
// Spigot start - guard entity list from removals
public final List<Entity> entityList = new java.util.ArrayList<Entity>()
{
+ // PaperSpigot start - move always activated entities to top of tick list
+ @Override
+ public boolean add(Entity e)
+ {
+ public boolean add(Entity e) {
+ if (e.defaultActivationState) {
+ super.add(0, e);
+ return true;
@ -97,25 +208,7 @@ index 641db2a..22237c9 100644
@Override
public Entity remove(int index)
{
@@ -53,7 +66,7 @@ public abstract class World implements IBlockAccess {
// Spigot end
protected final List<Entity> g = Lists.newArrayList();
public final List<TileEntity> h = Lists.newArrayList();
- public final List<TileEntity> tileEntityList = Lists.newArrayList();
+ public final Set<TileEntity> tileEntityList = new org.github.paperspigot.WorldTileEntityList(this); // PaperSpigot
private final List<TileEntity> b = Lists.newArrayList();
private final List<TileEntity> c = Lists.newArrayList();
public final List<EntityHuman> players = Lists.newArrayList();
@@ -219,7 +232,7 @@ public abstract class World implements IBlockAccess {
this.getServer().addWorld(this.world);
// CraftBukkit end
this.keepSpawnInMemory = this.paperSpigotConfig.keepSpawnInMemory; // PaperSpigot
- timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
+ timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime);
this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime);
}
@@ -1394,9 +1407,21 @@ public abstract class World implements IBlockAccess {
@@ -1394,10 +1406,22 @@ public abstract class World implements IBlockAccess {
guardEntityList = true; // Spigot
// CraftBukkit start - Use field for loop variable
int entitiesThisCycle = 0;
@ -134,218 +227,12 @@ index 641db2a..22237c9 100644
if (tickPosition < 0) tickPosition = 0;
for (entityLimiter.initTick();
- entitiesThisCycle < entityList.size() && (entitiesThisCycle % 10 == 0 || entityLimiter.shouldContinue());
- tickPosition++, entitiesThisCycle++) {
+ entitiesThisCycle < entityList.size() && (tickPosition <= minTickIndex || entitiesThisCycle % 10 == 0 || entityLimiter.shouldContinue()); // PaperSpigot
tickPosition++, entitiesThisCycle++) {
+ tickPosition++, entitiesThisCycle++) {
tickPosition = (tickPosition < entityList.size()) ? tickPosition : 0;
entity = (Entity) this.entityList.get(this.tickPosition);
@@ -1454,19 +1479,13 @@ public abstract class World implements IBlockAccess {
this.c.clear();
}
// CraftBukkit end
+ Iterator iterator = this.tileEntityList.iterator();
- // Spigot start
- int tilesThisCycle = 0;
- for (tileLimiter.initTick();
- tilesThisCycle < tileEntityList.size() && (tilesThisCycle % 10 == 0 || tileLimiter.shouldContinue());
- tileTickPosition++, tilesThisCycle++) {
- tileTickPosition = (tileTickPosition < tileEntityList.size()) ? tileTickPosition : 0;
- TileEntity tileentity = (TileEntity) this.tileEntityList.get(tileTickPosition);
- // Spigot start
+ while (iterator.hasNext()) {
+ TileEntity tileentity = (TileEntity) iterator.next();
if (tileentity == null) {
getServer().getLogger().severe("Spigot has detected a null entity and has removed it, preventing a crash");
- tilesThisCycle--;
- this.tileEntityList.remove(tileTickPosition--);
+ iterator.remove();
continue;
}
// Spigot end
@@ -1494,8 +1513,7 @@ public abstract class World implements IBlockAccess {
}
if (tileentity.x()) {
- tilesThisCycle--;
- this.tileEntityList.remove(tileTickPosition--);
+ iterator.remove();
this.h.remove(tileentity);
if (this.isLoaded(tileentity.getPosition())) {
this.getChunkAtWorldCoords(tileentity.getPosition()).e(tileentity.getPosition());
diff --git a/src/main/java/org/github/paperspigot/WorldTileEntityList.java b/src/main/java/org/github/paperspigot/WorldTileEntityList.java
new file mode 100644
index 0000000..66b6af0
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/WorldTileEntityList.java
@@ -0,0 +1,168 @@
+package org.github.paperspigot;
+
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Multimap;
+import net.minecraft.server.*;
+import gnu.trove.map.hash.TObjectIntHashMap;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+
+public class WorldTileEntityList extends HashSet<TileEntity> {
+ private static final TObjectIntHashMap<Class<? extends TileEntity>> tileEntityTickIntervals =
+ new TObjectIntHashMap<Class<? extends TileEntity>>() {{
+ // Use -1 for no ticking
+ // These TE's have empty tick methods, doing nothing. Never bother ticking them.
+ for (Class<? extends TileEntity> ignored : new Class[]{
+ BlockJukeBox.TileEntityRecordPlayer.class,
+ TileEntityDispenser.class,
+ TileEntityDropper.class,
+ TileEntitySign.class,
+ TileEntityNote.class,
+ TileEntityEnderPortal.class,
+ TileEntityCommand.class,
+ TileEntitySkull.class,
+ TileEntityComparator.class,
+ TileEntityFlowerPot.class
+ }) {
+ put(ignored, -1);
+ }
+
+ // does findPlayer lookup, so this helps performance to slow down
+ put(TileEntityEnchantTable.class, 20);
+
+ // Vanilla controlled values - These are checks already done in vanilla, so don't tick on ticks we know
+ // won't do anything anyways
+ put(TileEntityBeacon.class, 80);
+ put(TileEntityLightDetector.class, 20);
+ }};
+
+ private static int getInterval(Class<? extends TileEntity> cls) {
+ int tickInterval = tileEntityTickIntervals.get(cls);
+ return tickInterval != 0 ? tickInterval : 1;
+ }
+
+ private static int getBucketId(TileEntity entity, Integer interval) {
+ return entity.tileId % interval;
+ }
+
+ private final Map<Integer, Multimap<Integer, TileEntity>> tickList = Maps.newHashMap();
+ private final WorldServer world;
+
+ public WorldTileEntityList(World world) {
+ this.world = (WorldServer) world;
+ }
+
+
+ private Multimap<Integer, TileEntity> getBucket(int interval) {
+ Multimap<Integer, TileEntity> intervalBucket = tickList.get(interval);
+ if (intervalBucket == null) {
+ intervalBucket = ArrayListMultimap.create();
+ tickList.put(interval, intervalBucket);
+ }
+ return intervalBucket;
+ }
+
+ /**
+ * Adds the TileEntity to the tick list only if it is expected to tick
+ */
+ @Override
+ public boolean add(TileEntity entity) {
+ if (entity.isAdded) {
+ return false;
+ }
+
+ int interval = getInterval(entity.getClass());
+ if (interval > 0) {
+ entity.isAdded = true;
+ int bucket = getBucketId(entity, interval);
+ Multimap<Integer, TileEntity> typeBucket = getBucket(interval);
+ return typeBucket.put(bucket, entity);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ if (!(o instanceof TileEntity)) {
+ return false;
+ }
+ TileEntity entity = (TileEntity) o;
+ if (!entity.isAdded) {
+ return false;
+ }
+ entity.isAdded = false;
+ int interval = getInterval(entity.getClass());
+ int bucket = getBucketId(entity, interval);
+ Multimap<Integer, TileEntity> typeBucket = getBucket(interval);
+ return typeBucket.remove(bucket, entity);
+ }
+
+ @Override
+ public Iterator iterator() {
+ return new WorldTileEntityIterator();
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return o instanceof TileEntity && ((TileEntity) o).isAdded;
+ }
+
+ private class WorldTileEntityIterator implements Iterator<TileEntity> {
+ private final Iterator<Map.Entry<Integer, Multimap<Integer, TileEntity>>> intervalIterator;
+ private Map.Entry<Integer, Multimap<Integer, TileEntity>> intervalMap = null;
+ private Iterator<TileEntity> listIterator = null;
+
+ protected WorldTileEntityIterator() {
+ intervalIterator = tickList.entrySet().iterator();
+ nextInterval();
+ }
+
+ private boolean nextInterval() {
+ listIterator = null;
+ if (intervalIterator.hasNext()) {
+ intervalMap = intervalIterator.next();
+
+ final Integer interval = intervalMap.getKey();
+ final Multimap<Integer, TileEntity> buckets = intervalMap.getValue();
+
+ int bucket = (int) (world.getTime() % interval);
+
+ if (!buckets.isEmpty() && buckets.containsKey(bucket)) {
+ final Collection<TileEntity> tileList = buckets.get(bucket);
+
+ if (tileList != null && !tileList.isEmpty()) {
+ listIterator = tileList.iterator();
+ return true;
+ }
+ }
+ }
+
+ return false;
+
+ }
+
+ @Override
+ public boolean hasNext() {
+ do {
+ if (listIterator != null && listIterator.hasNext()) {
+ return true;
+ }
+ } while (nextInterval());
+ return false;
+ }
+
+ @Override
+ public TileEntity next() {
+ return listIterator.next();
+ }
+
+ @Override
+ public void remove() {
+ listIterator.remove();
+ }
+ }
+}
--
2.5.2

View file

@ -1,198 +0,0 @@
From 99cdc956ee7168e0e3b709d59c661e044118750b Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Sun, 8 Mar 2015 03:16:39 -0500
Subject: [PATCH] Move sound handling out of the chest tick loop
diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java
index b31973a..49726c6 100644
--- a/src/main/java/net/minecraft/server/TileEntityChest.java
+++ b/src/main/java/net/minecraft/server/TileEntityChest.java
@@ -12,13 +12,13 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
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; // PaperSpigot - adjacentChestZNeg
+ public TileEntityChest g; // PaperSpigot - adjacentChestXPos
+ public TileEntityChest h; // PaperSpigot - adjacentChestXNeg
+ public TileEntityChest i; // PaperSpigot - adjacentChestZPos
+ public float j; // PaperSpigot - lidAngle
public float k;
- public int l;
+ public int l; // PaperSpigot - numPlayersUsing
private int n;
private int o = -1;
private String p;
@@ -238,6 +238,8 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
}
public void c() {
+ // PaperSpigot - Move chest sounds out of the tick loop
+ /*
this.m();
int i = this.position.getX();
int j = this.position.getY();
@@ -318,7 +320,8 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
this.j = 0.0F;
}
}
-
+ */
+ // PaperSpigot end
}
public boolean c(int i, int j) {
@@ -339,6 +342,28 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
++this.l;
if (this.world == null) return; // CraftBukkit
+
+ // PaperSpigot 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;
+
+ if (this.i != null) {
+ d0 += 0.5D;
+ }
+
+ if (this.g != null) {
+ d1 += 0.5D;
+ }
+
+ this.world.makeSound(d1, (double) this.position.getY() + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, this.w(), 1, this.l);
// CraftBukkit start - Call redstone event
@@ -361,6 +386,33 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye
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
+
+ // PaperSpigot start - Move chest close sound handling 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;
+
+ if (this.i != null) {
+ d2 += 0.5D;
+ }
+
+ if (this.g != null) {
+ d0 += 0.5D;
+ }
+
+ this.world.makeSound(d0, (double) this.getPosition().getY() + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ this.j = 0.0F;
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, this.w(), 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 f712885..d2ef4c4 100644
--- a/src/main/java/net/minecraft/server/TileEntityEnderChest.java
+++ b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
@@ -2,14 +2,16 @@ package net.minecraft.server;
public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerListBox {
- public float a;
+ public float a; // PaperSpigot - lidAngle
public float f;
- public int g;
+ public int g; // PaperSpigot - numPlayersUsing
private int h;
public TileEntityEnderChest() {}
public void c() {
+ // PaperSpigot start - Move enderchest sound handling out of the tick loop
+ /*
if (++this.h % 4 == 0) { // PaperSpigot - Reduced (20 * 4) -> 4 interval due to reduced tick rate from improved tick handling
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
}
@@ -54,7 +56,8 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis
this.a = 0.0F;
}
}
-
+ */
+ // PaperSpigot end
}
public boolean c(int i, int j) {
@@ -73,11 +76,34 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis
public void b() {
++this.g;
+
+ // PaperSpigot 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.makeSound(d1, (double) this.getPosition().getY() + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
}
public void d() {
--this.g;
+
+ // PaperSpigot 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.makeSound(d0, (double) this.getPosition().getY() + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
+ this.a = 0.0F;
+ }
+ // PaperSpigot end
+
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
}
diff --git a/src/main/java/org/github/paperspigot/WorldTileEntityList.java b/src/main/java/org/github/paperspigot/WorldTileEntityList.java
index 66b6af0..16804d2 100644
--- a/src/main/java/org/github/paperspigot/WorldTileEntityList.java
+++ b/src/main/java/org/github/paperspigot/WorldTileEntityList.java
@@ -26,7 +26,9 @@ public class WorldTileEntityList extends HashSet<TileEntity> {
TileEntityCommand.class,
TileEntitySkull.class,
TileEntityComparator.class,
- TileEntityFlowerPot.class
+ TileEntityFlowerPot.class,
+ TileEntityChest.class,
+ TileEntityEnderChest.class
}) {
put(ignored, -1);
}
--
2.5.2

View file

@ -1,4 +1,4 @@
From c6bdd68547cafb9bd201b18fcc907ef042793479 Mon Sep 17 00:00:00 2001
From 4baf22e970cea6e654c103d01f439c96887eadb7 Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Sun, 8 Mar 2015 03:34:15 -0500
Subject: [PATCH] Remove certain entities that fly through unloaded chunks
@ -34,7 +34,7 @@ index 48ada4d..f4b5032 100644
this.world.addParticle(EnumParticle.PORTAL, this.locX, this.locY + this.random.nextDouble() * 2.0D, this.locZ, this.random.nextGaussian(), 0.0D, this.random.nextGaussian(), new int[0]);
}
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
index ef93776..5931e1d 100644
index 95c188b..86556cd 100644
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
@@ -70,6 +70,12 @@ public class EntityFallingBlock extends Entity {
@ -70,10 +70,10 @@ index 2d22327..50423eb 100644
this.motY *= 0.9800000190734863D;
this.motZ *= 0.9800000190734863D;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 22237c9..cb18500 100644
index 8a2d2c0..6226a6e 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1173,6 +1173,7 @@ public abstract class World implements IBlockAccess {
@@ -1172,6 +1172,7 @@ public abstract class World implements IBlockAccess {
{
if ( !this.isChunkLoaded( chunkx, chunkz, true ) )
{
@ -81,7 +81,7 @@ index 22237c9..cb18500 100644
continue;
}
int cz = chunkz << 4;
@@ -1601,6 +1602,14 @@ public abstract class World implements IBlockAccess {
@@ -1607,6 +1608,14 @@ public abstract class World implements IBlockAccess {
if (!org.spigotmc.ActivationRange.checkIfActive(entity)) {
entity.ticksLived++;
entity.inactiveTick();

View file

@ -1,4 +1,4 @@
From d1776584c27a8accdbea0f52d15c109ed39c7264 Mon Sep 17 00:00:00 2001
From f4bb4188db4477614faec7dcfb84f67496cdde11 Mon Sep 17 00:00:00 2001
From: gsand <gsandowns@gmail.com>
Date: Sun, 8 Mar 2015 03:41:33 -0500
Subject: [PATCH] Configurable strength and weakness effect modifiers

View file

@ -1,4 +1,4 @@
From d345901e9cf60cd5116d942943554f6b28217eef Mon Sep 17 00:00:00 2001
From 8cae5d46b1afced146412ba40e28ac7e08d61d83 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 8 Mar 2015 03:47:32 -0500
Subject: [PATCH] Further improve server tick loop

View file

@ -1,4 +1,4 @@
From 7d7a99521d76d82fca456a31c23a379de4c51974 Mon Sep 17 00:00:00 2001
From dbcd027da8be15f1eb656da2f13bf0cbba8fa583 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 28 Nov 2014 13:20:22 -0600
Subject: [PATCH] Only refresh abilities if needed

View file

@ -1,4 +1,4 @@
From d7f24069b1a8b71054130f629e671ac5c858e09d Mon Sep 17 00:00:00 2001
From 9d77de8e9fe61e0032c6534d3bd8fb127493db36 Mon Sep 17 00:00:00 2001
From: gsand <gsandowns@gmail.com>
Date: Sun, 8 Mar 2015 04:10:02 -0500
Subject: [PATCH] Configurable game mechanics changes

View file

@ -1,4 +1,4 @@
From 44c3f1e06cf4cdf6abf175b441089997e1f7a160 Mon Sep 17 00:00:00 2001
From 33a53bb028aadbb40a503e0f4087cb6718bfc420 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 6 Nov 2014 18:29:20 -0600
Subject: [PATCH] Add async chunk load API

View file

@ -1,4 +1,4 @@
From 881e28b060f69f64a8714a8efba1d9504d225392 Mon Sep 17 00:00:00 2001
From 6a96486151df3e2561efe99e284926b68531aef0 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Sun, 30 Nov 2014 18:58:07 -0600
Subject: [PATCH] Allow specified ItemStacks to retain their invalid data

View file

@ -1,4 +1,4 @@
From cc5daca1c11aec789248376d581251fbd78ab7eb Mon Sep 17 00:00:00 2001
From ec281d8d7494f7338e01f25c7b256b74862383ca Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 8 Mar 2015 04:23:41 -0500
Subject: [PATCH] Add TNT source location API

View file

@ -1,14 +1,14 @@
From 32133cf12527dd63c45e714733847f1226c33a98 Mon Sep 17 00:00:00 2001
From 444300b298e4126354a42bd37a086cf98da99bb0 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 8 Mar 2015 04:37:23 -0500
Subject: [PATCH] Prevent tile entity and entity crashes
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index 1971941..d258604 100644
index c268a40..3fc6450 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -163,7 +163,12 @@ public abstract class TileEntity {
@@ -157,7 +157,12 @@ public abstract class TileEntity {
}
});
if (this.world != null) {
@ -23,10 +23,10 @@ index 1971941..d258604 100644
public String a() throws Exception {
int i = Block.getId(TileEntity.this.world.getType(TileEntity.this.position).getBlock());
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index cb18500..a70c6ac 100644
index 6226a6e..a899ee2 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1443,10 +1443,13 @@ public abstract class World implements IBlockAccess {
@@ -1442,10 +1442,13 @@ public abstract class World implements IBlockAccess {
this.g(entity);
SpigotTimings.tickEntityTimer.stopTiming(); // Spigot
} catch (Throwable throwable1) {
@ -44,7 +44,7 @@ index cb18500..a70c6ac 100644
}
}
@@ -1499,11 +1502,13 @@ public abstract class World implements IBlockAccess {
@@ -1504,11 +1507,14 @@ public abstract class World implements IBlockAccess {
tileentity.tickTimer.startTiming(); // Spigot
((IUpdatePlayerListBox) tileentity).c();
} catch (Throwable throwable2) {
@ -57,7 +57,8 @@ index cb18500..a70c6ac 100644
+ tileentity.tickTimer.stopTiming();
+ System.err.println("TileEntity threw exception at " + tileentity.world.getWorld().getName() + ":" + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ());
+ throwable2.printStackTrace();
+ iterator.remove();
+ tilesThisCycle--;
+ this.tileEntityList.remove(tileTickPosition--);
+ continue;
+ // PaperSpigot end
}

View file

@ -1,4 +1,4 @@
From ca87d8b9c448410b824a90a96271b59ff6013057 Mon Sep 17 00:00:00 2001
From 66f764d702640b3cf873889ecc41ff921481bbfa Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Mon, 23 Feb 2015 14:57:28 -0600
Subject: [PATCH] Configurable top of nether void damage

View file

@ -1,4 +1,4 @@
From 00c35bcd2392c48a4d19f2ed255777ccc9c46366 Mon Sep 17 00:00:00 2001
From addd766578b634af56ba6ceef98ea1d74426f9f1 Mon Sep 17 00:00:00 2001
From: Zach <zach.brown@destroystokyo.com>
Date: Fri, 13 Feb 2015 14:49:30 -0600
Subject: [PATCH] Enderman drop the block they're holding when they die

View file

@ -1,4 +1,4 @@
From 28aef7121f1624bdaf403a0475a8e2d82b5c8bc8 Mon Sep 17 00:00:00 2001
From b667634876a8af5cfc59125dffafebc1c8d5b685 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Thu, 5 Mar 2015 15:30:06 -0600
Subject: [PATCH] Check online mode before converting and renaming player data

View file

@ -1,4 +1,4 @@
From e031a2fdb5f287270a421f36d518ecadd94e8f2c Mon Sep 17 00:00:00 2001
From 81b8f96f7f26a7f0d2805bc3f9681544f6c1432b Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Mon, 13 Apr 2015 15:47:15 -0500
Subject: [PATCH] Fix redstone lag issues

View file

@ -1,4 +1,4 @@
From 3df8bfc1c7035c7d7a39f29968d3213513bc81b1 Mon Sep 17 00:00:00 2001
From 8e7c47614e9af22d1823a2d1bfde89dfbd7153d3 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Fri, 10 Apr 2015 18:07:36 -0500
Subject: [PATCH] Always tick falling blocks

View file

@ -1,4 +1,4 @@
From 65eca689e3eba010eedb77394c062d08c40e49f9 Mon Sep 17 00:00:00 2001
From a3fff475189a1edc286a2305139ff98d8e73eb0a Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Fri, 17 Apr 2015 02:26:14 -0700
Subject: [PATCH] Add FallingBlock source location API

View file

@ -1,4 +1,4 @@
From fed5fc8b4674e1f722eed072d2922623358c96d5 Mon Sep 17 00:00:00 2001
From 430a2e0719a436e296f676022616e0f5174df805 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Wed, 1 Jul 2015 00:18:10 -0700
Subject: [PATCH] Configurable async light updates
@ -88,7 +88,7 @@ index 975d666..ae0f276 100644
if (!this.world.c(i, j)) {
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index a70c6ac..f5ca87c 100644
index a899ee2..0de2af1 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -18,6 +18,12 @@ import org.bukkit.generator.ChunkGenerator;
@ -104,7 +104,7 @@ index a70c6ac..f5ca87c 100644
// CraftBukkit start
// CraftBukkit end
@@ -141,6 +147,7 @@ public abstract class World implements IBlockAccess {
@@ -140,6 +146,7 @@ public abstract class World implements IBlockAccess {
private org.spigotmc.TickLimiter entityLimiter;
private org.spigotmc.TickLimiter tileLimiter;
private int tileTickPosition;
@ -112,7 +112,7 @@ index a70c6ac..f5ca87c 100644
public static long chunkToKey(int x, int z)
{
@@ -510,7 +517,7 @@ public abstract class World implements IBlockAccess {
@@ -509,7 +516,7 @@ public abstract class World implements IBlockAccess {
if (!this.worldProvider.o()) {
for (i1 = k; i1 <= l; ++i1) {
@ -121,7 +121,7 @@ index a70c6ac..f5ca87c 100644
}
}
@@ -2342,10 +2349,10 @@ public abstract class World implements IBlockAccess {
@@ -2349,10 +2356,10 @@ public abstract class World implements IBlockAccess {
boolean flag = false;
if (!this.worldProvider.o()) {
@ -134,7 +134,7 @@ index a70c6ac..f5ca87c 100644
return flag;
}
@@ -2392,10 +2399,10 @@ public abstract class World implements IBlockAccess {
@@ -2399,10 +2406,10 @@ public abstract class World implements IBlockAccess {
}
}
@ -148,7 +148,7 @@ index a70c6ac..f5ca87c 100644
// CraftBukkit end
return false;
} else {
@@ -2513,11 +2520,66 @@ public abstract class World implements IBlockAccess {
@@ -2520,11 +2527,66 @@ public abstract class World implements IBlockAccess {
}
}

View file

@ -1,4 +1,4 @@
From 97ad9f212cb616d704bcde54c2ed2294c1367a80 Mon Sep 17 00:00:00 2001
From e930fc7dbc68671274199b2268d34bb3d8179990 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Fri, 10 Apr 2015 02:24:20 -0700
Subject: [PATCH] Optimize draining

View file

@ -1,4 +1,4 @@
From 8ad9c97c7fe7e8065460593d225c5d3b9ba131b8 Mon Sep 17 00:00:00 2001
From cc596c88c9f0dfe7eb582439bbacacc878959871 Mon Sep 17 00:00:00 2001
From: Roman Alexander <romanalexander@users.noreply.github.com>
Date: Fri, 27 Mar 2015 00:52:24 -0400
Subject: [PATCH] Toggleable player crits, helps mitigate hacked clients.

View file

@ -1,4 +1,4 @@
From 59957f2d97df8ed4bfbf3656779fbbe1414a11f1 Mon Sep 17 00:00:00 2001
From 3652d4118b8ce9662aff38f6c0f91afb578aea7c Mon Sep 17 00:00:00 2001
From: Isaac Moore <rmsy@me.com>
Date: Mon, 27 Apr 2015 21:41:39 -0500
Subject: [PATCH] Add PlayerLocaleChangeEvent

View file

@ -1,4 +1,4 @@
From 8388402abcbf1bad41fb130f28bbe81e727d72ae Mon Sep 17 00:00:00 2001
From 6e35bbc4b6dcf3e52655ceb9562f5cdfe4b140a9 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Thu, 30 Apr 2015 22:42:34 -0400
Subject: [PATCH] Fix jar being shaded multiple times

View file

@ -1,4 +1,4 @@
From 018c8c052c2427a66dc44a0629ce75f9e6ae24f0 Mon Sep 17 00:00:00 2001
From 6d3998003267900af6bfed5014920c15eabbf502 Mon Sep 17 00:00:00 2001
From: DoctorDark <doctordark11@gmail.com>
Date: Thu, 28 May 2015 20:12:38 -0500
Subject: [PATCH] Configurable end credits when leaving the end

View file

@ -1,4 +1,4 @@
From 0ed5d74f4f96b4b54ffe24e085e412165281f5e8 Mon Sep 17 00:00:00 2001
From 068eb2ed78e703619a74bcd0005e5b1d82187def Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Tue, 30 Jun 2015 20:45:24 -0700
Subject: [PATCH] Force load chunks for specific entities that fly through
@ -79,7 +79,7 @@ index f4b5032..319c0bc 100644
protected void a(MovingObjectPosition movingobjectposition) {
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
index 44219cd..34627c6 100644
index aeade54..ba1cadb 100644
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
@@ -26,6 +26,7 @@ public class EntityFallingBlock extends Entity {
@ -141,10 +141,10 @@ index 1daba4e..3a7c4fa 100644
protected void b(NBTTagCompound nbttagcompound) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index f5ca87c..a1e46c2 100644
index 0de2af1..9cfa54c 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1180,8 +1180,14 @@ public abstract class World implements IBlockAccess {
@@ -1179,8 +1179,14 @@ public abstract class World implements IBlockAccess {
{
if ( !this.isChunkLoaded( chunkx, chunkz, true ) )
{
@ -161,7 +161,7 @@ index f5ca87c..a1e46c2 100644
}
int cz = chunkz << 4;
Chunk chunk = this.getChunkAt( chunkx, chunkz );
@@ -1665,6 +1671,7 @@ public abstract class World implements IBlockAccess {
@@ -1672,6 +1678,7 @@ public abstract class World implements IBlockAccess {
int i1 = MathHelper.floor(entity.locZ / 16.0D);
if (!entity.ad || entity.ae != k || entity.af != l || entity.ag != i1) {

View file

@ -1,4 +1,4 @@
From 1144b7cd79291119ddcc5ca023e8343754b8cbee Mon Sep 17 00:00:00 2001
From ebf538a6ac13883b289be7ed1b172f28d860c4cb Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Mon, 1 Jun 2015 22:21:52 -0700
Subject: [PATCH] Stackable Buckets

View file

@ -1,4 +1,4 @@
From 87de801e202c178f8f93ae6a11cf94c7e6d9c49a Mon Sep 17 00:00:00 2001
From ddac02b42300698b7bff62fc5dc572ecb91cac5f Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Mon, 1 Jun 2015 22:54:18 -0700
Subject: [PATCH] Fix lag from explosions processing dead entities

View file

@ -1,4 +1,4 @@
From 3ecfe83fdf25f999d5d6eca388169bd1842d7ce8 Mon Sep 17 00:00:00 2001
From bcfba603222a07cf5b77763853394956f01727ea Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Tue, 2 Jun 2015 00:41:23 -0700
Subject: [PATCH] Generator Settings

View file

@ -1,4 +1,4 @@
From ad160d40d1ec4b21b2af65b5a22541e343e286e6 Mon Sep 17 00:00:00 2001
From 513c7165df7e3a5308123b771ed5e59fc0151c0b Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Thu, 4 Jun 2015 13:55:02 -0700
Subject: [PATCH] Configurable TNT cannon fix
@ -172,7 +172,7 @@ index bc07d3d..cc7a1e3 100644
world.getServer().getPluginManager().callEvent(event);
}
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
index 34627c6..cf02997 100644
index ba1cadb..e559049 100644
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
@@ -278,4 +278,22 @@ public class EntityFallingBlock extends Entity {

View file

@ -1,14 +1,14 @@
From 94088bc7f6b6f0e56aef4c9e8bb96ccd04922ee8 Mon Sep 17 00:00:00 2001
From 04270222ffbe066aa03eb70991cb243a771cf89a Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Fri, 5 Jun 2015 00:43:17 -0700
Subject: [PATCH] FallingBlock and TNT entities collide with specific blocks
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index a1e46c2..83197b2 100644
index 9cfa54c..7c90dd9 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1220,7 +1220,15 @@ public abstract class World implements IBlockAccess {
@@ -1219,7 +1219,15 @@ public abstract class World implements IBlockAccess {
}
if ( block != null )
{

View file

@ -1,4 +1,4 @@
From 72dad786d96891b88c7f89796c4d394a5d4bd319 Mon Sep 17 00:00:00 2001
From 617a0b0fb8cec2797ac378a971d7e7ec4954dc14 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Tue, 16 Jun 2015 05:52:58 -0700
Subject: [PATCH] Optimize explosions
@ -122,10 +122,10 @@ index 06ae3fc..eac71e8 100644
// this.i[i][this.ticks % 100] = System.nanoTime() - j; // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 83197b2..0fcbc01 100644
index 7c90dd9..254e155 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -148,6 +148,7 @@ public abstract class World implements IBlockAccess {
@@ -147,6 +147,7 @@ public abstract class World implements IBlockAccess {
private org.spigotmc.TickLimiter tileLimiter;
private int tileTickPosition;
public ExecutorService lightingExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("PaperSpigot - Lighting Thread").build()); // PaperSpigot - Asynchronous lighting updates

View file

@ -1,4 +1,4 @@
From 7d5c47c8684090a2d862c32d3981b8afcb97d764 Mon Sep 17 00:00:00 2001
From adb1d170502e3b0e44d08399ec31c0633f411c1c Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Tue, 30 Jun 2015 19:31:02 -0700
Subject: [PATCH] Stop updating flowing block if material has changed

View file

@ -1,4 +1,4 @@
From 46c0380bf9709b5b2e38bea6e6ac8685ffdb58cc Mon Sep 17 00:00:00 2001
From 02730e4570adc6ea676a5e9d6a12e0b5bbdc55e5 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Tue, 30 Jun 2015 19:53:03 -0700
Subject: [PATCH] Fast draining

View file

@ -1,4 +1,4 @@
From 2cc7f3e2402effab8c2175535c6e27058b9f51a2 Mon Sep 17 00:00:00 2001
From 4983f09972f340718b3dce467b9ae791be927718 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Wed, 1 Jul 2015 00:38:10 -0700
Subject: [PATCH] Configurable lava flow speed

View file

@ -1,4 +1,4 @@
From 4cbe6b918529e6b540a672f3743b06ea6849490e Mon Sep 17 00:00:00 2001
From b4ecfa2c2bc253d8f2f91efab37cffd7c2f7d9a0 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Wed, 1 Jul 2015 00:59:06 -0700
Subject: [PATCH] Add player view distance API

View file

@ -1,4 +1,4 @@
From a399bed1fe1a973d637d250c1af48501494d693a Mon Sep 17 00:00:00 2001
From a2e155ea58f56fac11c16a6ea54faa60a35557c1 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Tue, 14 Jul 2015 09:20:44 -0700
Subject: [PATCH] Disable explosion knockback

View file

@ -1,4 +1,4 @@
From 7f3a073ad67c4562856c3a0f7ed7dc3b3824abd6 Mon Sep 17 00:00:00 2001
From bc5228ac287ff7d3d28af35781958c3695991670 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Tue, 14 Jul 2015 09:26:41 -0700
Subject: [PATCH] Disable thunder

View file

@ -1,4 +1,4 @@
From 7ef2d06a703696c08a8fd08da896fedc07ebdc95 Mon Sep 17 00:00:00 2001
From 250fcdbcd4a67cb389bee872357ffa0906746790 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Tue, 14 Jul 2015 09:28:31 -0700
Subject: [PATCH] Disable ice and snow

View file

@ -1,14 +1,14 @@
From 3ca15649e655be5701ecb7d7ed84f03e2ea3e38f Mon Sep 17 00:00:00 2001
From 87d59743e8e845b874b622a0d9ef86cdd75ffda3 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Tue, 14 Jul 2015 09:30:28 -0700
Subject: [PATCH] Disable mood sounds
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 0fcbc01..4fad879 100644
index 254e155..1c82aaa 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -2265,7 +2265,7 @@ public abstract class World implements IBlockAccess {
@@ -2272,7 +2272,7 @@ public abstract class World implements IBlockAccess {
protected void a(int i, int j, Chunk chunk) {
this.methodProfiler.c("moodSound");

View file

@ -1,4 +1,4 @@
From 43a3cb4aa8a440f60f0387666307447af3d6847b Mon Sep 17 00:00:00 2001
From ef6d2eb2901e52146ebbb4c0c8d7ac6aa0ec94b4 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Tue, 14 Jul 2015 09:58:15 -0700
Subject: [PATCH] Configurable mob spawner tick rate

View file

@ -1,14 +1,14 @@
From 70d87148e1e2635243381737ad6d0cb572fa50cd Mon Sep 17 00:00:00 2001
From 8e392550b6970e1553f6d09108797b60f618a7a4 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Tue, 14 Jul 2015 10:03:45 -0700
Subject: [PATCH] Optimize getCubes()
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 4fad879..d481bc4 100644
index 1c82aaa..816a2f6 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1179,11 +1179,12 @@ public abstract class World implements IBlockAccess {
@@ -1178,11 +1178,12 @@ public abstract class World implements IBlockAccess {
int cx = chunkx << 4;
for ( int chunkz = ( i1 >> 4 ); chunkz <= ( ( j1 - 1 ) >> 4 ); chunkz++ )
{
@ -23,7 +23,7 @@ index 4fad879..d481bc4 100644
} else {
entity.inUnloadedChunk = true; // PaperSpigot - Remove entities in unloaded chunks
continue;
@@ -1191,7 +1192,6 @@ public abstract class World implements IBlockAccess {
@@ -1190,7 +1191,6 @@ public abstract class World implements IBlockAccess {
// PaperSpigot end
}
int cz = chunkz << 4;
@ -31,7 +31,7 @@ index 4fad879..d481bc4 100644
// Compute ranges within chunk
int xstart = ( i < cx ) ? cx : i;
int xend = ( j < ( cx + 16 ) ) ? j : ( cx + 16 );
@@ -1238,6 +1238,8 @@ public abstract class World implements IBlockAccess {
@@ -1237,6 +1237,8 @@ public abstract class World implements IBlockAccess {
}
// Spigot end

View file

@ -1,4 +1,4 @@
From 117484cb5d195384bee5c27523e350684dfd7ddb Mon Sep 17 00:00:00 2001
From 001bb0997eb6555d5bfb56ec280061c590f8d2a2 Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Wed, 15 Jul 2015 02:41:12 -0700
Subject: [PATCH] ChunkMap caching

View file

@ -1,4 +1,4 @@
From 9841ba8d8df30cfa1daef06078e755125c431839 Mon Sep 17 00:00:00 2001
From 5b6d3af20b71d1941643519ce0e037432d264c17 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Fri, 3 Apr 2015 17:26:21 -0400
Subject: [PATCH] Send absolute position the first time an entity is seen

View file

@ -1,4 +1,4 @@
From 315bc28bbfe77ff6d81264e331d3f4ec557efeb2 Mon Sep 17 00:00:00 2001
From b082a854d2fa598ed788c8e7803b10e7c95a1e78 Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Thu, 23 Jul 2015 04:23:23 -0700
Subject: [PATCH] Optimize Spigot's Anti X-Ray

View file

@ -1,11 +1,11 @@
From 0744a8d72a689bc4e7b485e9269bff15a19efe3f Mon Sep 17 00:00:00 2001
From 3e7777bd774d36609d4d8a66bce37462ecf5424e Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Thu, 23 Jul 2015 12:44:06 -0700
Subject: [PATCH] Add BeaconEffectEvent
diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java
index 3ea1b62..a24dc68 100644
index 4f280dd..f4717af 100644
--- a/src/main/java/net/minecraft/server/TileEntityBeacon.java
+++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java
@@ -10,6 +10,14 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;

View file

@ -1,4 +1,4 @@
From 59249116c7812dd2e653a4a371c14c9d616d1dab Mon Sep 17 00:00:00 2001
From b3648456c35595d816fc03a27dee08070d9414ef Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Thu, 23 Jul 2015 22:05:22 -0700
Subject: [PATCH] Configurable container update tick rate

View file

@ -1,4 +1,4 @@
From ae0bafba16c127e0ef08c62a9a65bd8bbb47473e Mon Sep 17 00:00:00 2001
From 828d3214e608e5d47b09df72d7cdb285dd01ad97 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Tue, 4 Aug 2015 17:45:00 -0700
Subject: [PATCH] Configurable TNT explosion volume

View file

@ -1,4 +1,4 @@
From dee961efe3d5df8534e197a1ab74107384cb22e9 Mon Sep 17 00:00:00 2001
From 7a75bfc6005068781daff4e13863ad30ed28a60f Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv>
Date: Tue, 4 Aug 2015 18:15:05 -0700
Subject: [PATCH] Fix lava/water some times creating air instead of cobblestone

View file

@ -1,4 +1,4 @@
From c1775435d2baf97d280e8558afa48069ab8df201 Mon Sep 17 00:00:00 2001
From eb37d0158909779aa56c6a6c67ec300a80b07796 Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com>
Date: Fri, 7 Aug 2015 19:31:31 -0700
Subject: [PATCH] Use UserCache for player heads

View file

@ -1,4 +1,4 @@
From f0d04b8fe1871c21e723335b5c268c81796baa23 Mon Sep 17 00:00:00 2001
From 0cf9e5edd72d42954cfe131d1aa6bc15b17f35fe Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Thu, 13 Aug 2015 10:33:34 -0700
Subject: [PATCH] Re-add Spigot's hopper-check feature