Remove our own (outdated) TE handling, for one that's closer to vanilla
This commit is contained in:
parent
ea565eff61
commit
7aa4900879
@ -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>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sun, 8 Mar 2015 01:56:22 -0600
|
Date: Sun, 8 Mar 2015 01:56:22 -0600
|
||||||
Subject: [PATCH] Optimize TileEntity Ticking
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/TileEntityChest.java
|
||||||
+++ b/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
|
@@ -8,17 +8,17 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
|
||||||
++this.n;
|
import org.bukkit.entity.HumanEntity;
|
||||||
float f;
|
// CraftBukkit end
|
||||||
|
|
||||||
- if (!this.world.isClientSide && this.l != 0 && (this.n + i + j + k) % 200 == 0) {
|
-public class TileEntityChest extends TileEntityContainer implements IUpdatePlayerListBox, IInventory {
|
||||||
+ 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
|
+public class TileEntityChest extends TileEntityContainer implements IInventory { // PaperSpigot - remove IUpdatePlayerListBox
|
||||||
this.l = 0;
|
|
||||||
f = 5.0F;
|
private ItemStack[] items = new ItemStack[27];
|
||||||
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 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
|
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
|
--- a/src/main/java/net/minecraft/server/TileEntityEnderChest.java
|
||||||
+++ b/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 TileEntityEnderChest() {}
|
||||||
|
|
||||||
public void c() {
|
public void c() {
|
||||||
- if (++this.h % 20 * 4 == 0) {
|
+ // 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
|
+ /*
|
||||||
|
if (++this.h % 20 * 4 == 0) {
|
||||||
this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g);
|
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
|
||||||
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntityLightDetector.java b/src/main/java/net/minecraft/server/TileEntityLightDetector.java
|
public boolean c(int i, int j) {
|
||||||
index f75e2de..7119612 100644
|
@@ -73,11 +76,34 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis
|
||||||
--- a/src/main/java/net/minecraft/server/TileEntityLightDetector.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/TileEntityLightDetector.java
|
public void b() {
|
||||||
@@ -5,7 +5,7 @@ public class TileEntityLightDetector extends TileEntity implements IUpdatePlayer
|
++this.g;
|
||||||
public TileEntityLightDetector() {}
|
+
|
||||||
|
+ // 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);
|
||||||
|
}
|
||||||
|
|
||||||
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
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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
|
// Spigot start - guard entity list from removals
|
||||||
public final List<Entity> entityList = new java.util.ArrayList<Entity>()
|
public final List<Entity> entityList = new java.util.ArrayList<Entity>()
|
||||||
{
|
{
|
||||||
+ // PaperSpigot start - move always activated entities to top of tick list
|
+ // PaperSpigot start - move always activated entities to top of tick list
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean add(Entity e)
|
+ public boolean add(Entity e) {
|
||||||
+ {
|
|
||||||
+ if (e.defaultActivationState) {
|
+ if (e.defaultActivationState) {
|
||||||
+ super.add(0, e);
|
+ super.add(0, e);
|
||||||
+ return true;
|
+ return true;
|
||||||
@ -97,25 +208,7 @@ index 641db2a..22237c9 100644
|
|||||||
@Override
|
@Override
|
||||||
public Entity remove(int index)
|
public Entity remove(int index)
|
||||||
{
|
{
|
||||||
@@ -53,7 +66,7 @@ public abstract class World implements IBlockAccess {
|
@@ -1394,10 +1406,22 @@ 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 {
|
|
||||||
guardEntityList = true; // Spigot
|
guardEntityList = true; // Spigot
|
||||||
// CraftBukkit start - Use field for loop variable
|
// CraftBukkit start - Use field for loop variable
|
||||||
int entitiesThisCycle = 0;
|
int entitiesThisCycle = 0;
|
||||||
@ -134,218 +227,12 @@ index 641db2a..22237c9 100644
|
|||||||
if (tickPosition < 0) tickPosition = 0;
|
if (tickPosition < 0) tickPosition = 0;
|
||||||
for (entityLimiter.initTick();
|
for (entityLimiter.initTick();
|
||||||
- entitiesThisCycle < entityList.size() && (entitiesThisCycle % 10 == 0 || entityLimiter.shouldContinue());
|
- entitiesThisCycle < entityList.size() && (entitiesThisCycle % 10 == 0 || entityLimiter.shouldContinue());
|
||||||
+ entitiesThisCycle < entityList.size() && (tickPosition <= minTickIndex || entitiesThisCycle % 10 == 0 || entityLimiter.shouldContinue()); // PaperSpigot
|
- tickPosition++, entitiesThisCycle++) {
|
||||||
tickPosition++, entitiesThisCycle++) {
|
+ entitiesThisCycle < entityList.size() && (tickPosition <= minTickIndex || entitiesThisCycle % 10 == 0 || entityLimiter.shouldContinue()); // PaperSpigot
|
||||||
|
+ tickPosition++, entitiesThisCycle++) {
|
||||||
tickPosition = (tickPosition < entityList.size()) ? tickPosition : 0;
|
tickPosition = (tickPosition < entityList.size()) ? tickPosition : 0;
|
||||||
entity = (Entity) this.entityList.get(this.tickPosition);
|
entity = (Entity) this.entityList.get(this.tickPosition);
|
||||||
@@ -1454,19 +1479,13 @@ public abstract class World implements IBlockAccess {
|
// CraftBukkit end
|
||||||
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
|
2.5.2
|
||||||
|
|
||||||
|
@ -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
|
|
||||||
|
|
@ -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>
|
From: Iceee <andrew@opticgaming.tv>
|
||||||
Date: Sun, 8 Mar 2015 03:34:15 -0500
|
Date: Sun, 8 Mar 2015 03:34:15 -0500
|
||||||
Subject: [PATCH] Remove certain entities that fly through unloaded chunks
|
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]);
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
||||||
+++ b/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,6 +70,12 @@ public class EntityFallingBlock extends Entity {
|
||||||
@ -70,10 +70,10 @@ index 2d22327..50423eb 100644
|
|||||||
this.motY *= 0.9800000190734863D;
|
this.motY *= 0.9800000190734863D;
|
||||||
this.motZ *= 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
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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 ) )
|
if ( !this.isChunkLoaded( chunkx, chunkz, true ) )
|
||||||
{
|
{
|
||||||
@ -81,7 +81,7 @@ index 22237c9..cb18500 100644
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
int cz = chunkz << 4;
|
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)) {
|
if (!org.spigotmc.ActivationRange.checkIfActive(entity)) {
|
||||||
entity.ticksLived++;
|
entity.ticksLived++;
|
||||||
entity.inactiveTick();
|
entity.inactiveTick();
|
@ -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>
|
From: gsand <gsandowns@gmail.com>
|
||||||
Date: Sun, 8 Mar 2015 03:41:33 -0500
|
Date: Sun, 8 Mar 2015 03:41:33 -0500
|
||||||
Subject: [PATCH] Configurable strength and weakness effect modifiers
|
Subject: [PATCH] Configurable strength and weakness effect modifiers
|
@ -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>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sun, 8 Mar 2015 03:47:32 -0500
|
Date: Sun, 8 Mar 2015 03:47:32 -0500
|
||||||
Subject: [PATCH] Further improve server tick loop
|
Subject: [PATCH] Further improve server tick loop
|
@ -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>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 28 Nov 2014 13:20:22 -0600
|
Date: Fri, 28 Nov 2014 13:20:22 -0600
|
||||||
Subject: [PATCH] Only refresh abilities if needed
|
Subject: [PATCH] Only refresh abilities if needed
|
@ -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>
|
From: gsand <gsandowns@gmail.com>
|
||||||
Date: Sun, 8 Mar 2015 04:10:02 -0500
|
Date: Sun, 8 Mar 2015 04:10:02 -0500
|
||||||
Subject: [PATCH] Configurable game mechanics changes
|
Subject: [PATCH] Configurable game mechanics changes
|
@ -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>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Thu, 6 Nov 2014 18:29:20 -0600
|
Date: Thu, 6 Nov 2014 18:29:20 -0600
|
||||||
Subject: [PATCH] Add async chunk load API
|
Subject: [PATCH] Add async chunk load API
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Sun, 30 Nov 2014 18:58:07 -0600
|
Date: Sun, 30 Nov 2014 18:58:07 -0600
|
||||||
Subject: [PATCH] Allow specified ItemStacks to retain their invalid data
|
Subject: [PATCH] Allow specified ItemStacks to retain their invalid data
|
@ -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>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sun, 8 Mar 2015 04:23:41 -0500
|
Date: Sun, 8 Mar 2015 04:23:41 -0500
|
||||||
Subject: [PATCH] Add TNT source location API
|
Subject: [PATCH] Add TNT source location API
|
@ -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>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sun, 8 Mar 2015 04:37:23 -0500
|
Date: Sun, 8 Mar 2015 04:37:23 -0500
|
||||||
Subject: [PATCH] Prevent tile entity and entity crashes
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/TileEntity.java
|
||||||
+++ b/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) {
|
if (this.world != null) {
|
||||||
@ -23,10 +23,10 @@ index 1971941..d258604 100644
|
|||||||
public String a() throws Exception {
|
public String a() throws Exception {
|
||||||
int i = Block.getId(TileEntity.this.world.getType(TileEntity.this.position).getBlock());
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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);
|
this.g(entity);
|
||||||
SpigotTimings.tickEntityTimer.stopTiming(); // Spigot
|
SpigotTimings.tickEntityTimer.stopTiming(); // Spigot
|
||||||
} catch (Throwable throwable1) {
|
} 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
|
tileentity.tickTimer.startTiming(); // Spigot
|
||||||
((IUpdatePlayerListBox) tileentity).c();
|
((IUpdatePlayerListBox) tileentity).c();
|
||||||
} catch (Throwable throwable2) {
|
} catch (Throwable throwable2) {
|
||||||
@ -57,7 +57,8 @@ index cb18500..a70c6ac 100644
|
|||||||
+ tileentity.tickTimer.stopTiming();
|
+ tileentity.tickTimer.stopTiming();
|
||||||
+ System.err.println("TileEntity threw exception at " + tileentity.world.getWorld().getName() + ":" + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ());
|
+ System.err.println("TileEntity threw exception at " + tileentity.world.getWorld().getName() + ":" + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ());
|
||||||
+ throwable2.printStackTrace();
|
+ throwable2.printStackTrace();
|
||||||
+ iterator.remove();
|
+ tilesThisCycle--;
|
||||||
|
+ this.tileEntityList.remove(tileTickPosition--);
|
||||||
+ continue;
|
+ continue;
|
||||||
+ // PaperSpigot end
|
+ // PaperSpigot end
|
||||||
}
|
}
|
@ -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>
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
||||||
Date: Mon, 23 Feb 2015 14:57:28 -0600
|
Date: Mon, 23 Feb 2015 14:57:28 -0600
|
||||||
Subject: [PATCH] Configurable top of nether void damage
|
Subject: [PATCH] Configurable top of nether void damage
|
@ -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>
|
From: Zach <zach.brown@destroystokyo.com>
|
||||||
Date: Fri, 13 Feb 2015 14:49:30 -0600
|
Date: Fri, 13 Feb 2015 14:49:30 -0600
|
||||||
Subject: [PATCH] Enderman drop the block they're holding when they die
|
Subject: [PATCH] Enderman drop the block they're holding when they die
|
@ -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>
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
||||||
Date: Thu, 5 Mar 2015 15:30:06 -0600
|
Date: Thu, 5 Mar 2015 15:30:06 -0600
|
||||||
Subject: [PATCH] Check online mode before converting and renaming player data
|
Subject: [PATCH] Check online mode before converting and renaming player data
|
@ -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>
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
||||||
Date: Mon, 13 Apr 2015 15:47:15 -0500
|
Date: Mon, 13 Apr 2015 15:47:15 -0500
|
||||||
Subject: [PATCH] Fix redstone lag issues
|
Subject: [PATCH] Fix redstone lag issues
|
@ -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>
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
||||||
Date: Fri, 10 Apr 2015 18:07:36 -0500
|
Date: Fri, 10 Apr 2015 18:07:36 -0500
|
||||||
Subject: [PATCH] Always tick falling blocks
|
Subject: [PATCH] Always tick falling blocks
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Fri, 17 Apr 2015 02:26:14 -0700
|
Date: Fri, 17 Apr 2015 02:26:14 -0700
|
||||||
Subject: [PATCH] Add FallingBlock source location API
|
Subject: [PATCH] Add FallingBlock source location API
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Wed, 1 Jul 2015 00:18:10 -0700
|
Date: Wed, 1 Jul 2015 00:18:10 -0700
|
||||||
Subject: [PATCH] Configurable async light updates
|
Subject: [PATCH] Configurable async light updates
|
||||||
@ -88,7 +88,7 @@ index 975d666..ae0f276 100644
|
|||||||
if (!this.world.c(i, j)) {
|
if (!this.world.c(i, j)) {
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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;
|
@@ -18,6 +18,12 @@ import org.bukkit.generator.ChunkGenerator;
|
||||||
@ -104,7 +104,7 @@ index a70c6ac..f5ca87c 100644
|
|||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
// CraftBukkit end
|
// 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 entityLimiter;
|
||||||
private org.spigotmc.TickLimiter tileLimiter;
|
private org.spigotmc.TickLimiter tileLimiter;
|
||||||
private int tileTickPosition;
|
private int tileTickPosition;
|
||||||
@ -112,7 +112,7 @@ index a70c6ac..f5ca87c 100644
|
|||||||
|
|
||||||
public static long chunkToKey(int x, int z)
|
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()) {
|
if (!this.worldProvider.o()) {
|
||||||
for (i1 = k; i1 <= l; ++i1) {
|
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;
|
boolean flag = false;
|
||||||
|
|
||||||
if (!this.worldProvider.o()) {
|
if (!this.worldProvider.o()) {
|
||||||
@ -134,7 +134,7 @@ index a70c6ac..f5ca87c 100644
|
|||||||
return flag;
|
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
|
// CraftBukkit end
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
@@ -2513,11 +2520,66 @@ public abstract class World implements IBlockAccess {
|
@@ -2520,11 +2527,66 @@ public abstract class World implements IBlockAccess {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Fri, 10 Apr 2015 02:24:20 -0700
|
Date: Fri, 10 Apr 2015 02:24:20 -0700
|
||||||
Subject: [PATCH] Optimize draining
|
Subject: [PATCH] Optimize draining
|
@ -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>
|
From: Roman Alexander <romanalexander@users.noreply.github.com>
|
||||||
Date: Fri, 27 Mar 2015 00:52:24 -0400
|
Date: Fri, 27 Mar 2015 00:52:24 -0400
|
||||||
Subject: [PATCH] Toggleable player crits, helps mitigate hacked clients.
|
Subject: [PATCH] Toggleable player crits, helps mitigate hacked clients.
|
@ -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>
|
From: Isaac Moore <rmsy@me.com>
|
||||||
Date: Mon, 27 Apr 2015 21:41:39 -0500
|
Date: Mon, 27 Apr 2015 21:41:39 -0500
|
||||||
Subject: [PATCH] Add PlayerLocaleChangeEvent
|
Subject: [PATCH] Add PlayerLocaleChangeEvent
|
@ -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>
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
Date: Thu, 30 Apr 2015 22:42:34 -0400
|
Date: Thu, 30 Apr 2015 22:42:34 -0400
|
||||||
Subject: [PATCH] Fix jar being shaded multiple times
|
Subject: [PATCH] Fix jar being shaded multiple times
|
@ -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>
|
From: DoctorDark <doctordark11@gmail.com>
|
||||||
Date: Thu, 28 May 2015 20:12:38 -0500
|
Date: Thu, 28 May 2015 20:12:38 -0500
|
||||||
Subject: [PATCH] Configurable end credits when leaving the end
|
Subject: [PATCH] Configurable end credits when leaving the end
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Tue, 30 Jun 2015 20:45:24 -0700
|
Date: Tue, 30 Jun 2015 20:45:24 -0700
|
||||||
Subject: [PATCH] Force load chunks for specific entities that fly through
|
Subject: [PATCH] Force load chunks for specific entities that fly through
|
||||||
@ -79,7 +79,7 @@ index f4b5032..319c0bc 100644
|
|||||||
|
|
||||||
protected void a(MovingObjectPosition movingobjectposition) {
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
||||||
+++ b/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 {
|
@@ -26,6 +26,7 @@ public class EntityFallingBlock extends Entity {
|
||||||
@ -141,10 +141,10 @@ index 1daba4e..3a7c4fa 100644
|
|||||||
|
|
||||||
protected void b(NBTTagCompound nbttagcompound) {
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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 ) )
|
if ( !this.isChunkLoaded( chunkx, chunkz, true ) )
|
||||||
{
|
{
|
||||||
@ -161,7 +161,7 @@ index f5ca87c..a1e46c2 100644
|
|||||||
}
|
}
|
||||||
int cz = chunkz << 4;
|
int cz = chunkz << 4;
|
||||||
Chunk chunk = this.getChunkAt( chunkx, chunkz );
|
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);
|
int i1 = MathHelper.floor(entity.locZ / 16.0D);
|
||||||
|
|
||||||
if (!entity.ad || entity.ae != k || entity.af != l || entity.ag != i1) {
|
if (!entity.ad || entity.ae != k || entity.af != l || entity.ag != i1) {
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Mon, 1 Jun 2015 22:21:52 -0700
|
Date: Mon, 1 Jun 2015 22:21:52 -0700
|
||||||
Subject: [PATCH] Stackable Buckets
|
Subject: [PATCH] Stackable Buckets
|
@ -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>
|
From: Iceee <andrew@opticgaming.tv>
|
||||||
Date: Mon, 1 Jun 2015 22:54:18 -0700
|
Date: Mon, 1 Jun 2015 22:54:18 -0700
|
||||||
Subject: [PATCH] Fix lag from explosions processing dead entities
|
Subject: [PATCH] Fix lag from explosions processing dead entities
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Tue, 2 Jun 2015 00:41:23 -0700
|
Date: Tue, 2 Jun 2015 00:41:23 -0700
|
||||||
Subject: [PATCH] Generator Settings
|
Subject: [PATCH] Generator Settings
|
@ -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>
|
From: Iceee <andrew@opticgaming.tv>
|
||||||
Date: Thu, 4 Jun 2015 13:55:02 -0700
|
Date: Thu, 4 Jun 2015 13:55:02 -0700
|
||||||
Subject: [PATCH] Configurable TNT cannon fix
|
Subject: [PATCH] Configurable TNT cannon fix
|
||||||
@ -172,7 +172,7 @@ index bc07d3d..cc7a1e3 100644
|
|||||||
world.getServer().getPluginManager().callEvent(event);
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
||||||
+++ b/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 {
|
@@ -278,4 +278,22 @@ public class EntityFallingBlock extends Entity {
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Fri, 5 Jun 2015 00:43:17 -0700
|
Date: Fri, 5 Jun 2015 00:43:17 -0700
|
||||||
Subject: [PATCH] FallingBlock and TNT entities collide with specific blocks
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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 )
|
if ( block != null )
|
||||||
{
|
{
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Tue, 16 Jun 2015 05:52:58 -0700
|
Date: Tue, 16 Jun 2015 05:52:58 -0700
|
||||||
Subject: [PATCH] Optimize explosions
|
Subject: [PATCH] Optimize explosions
|
||||||
@ -122,10 +122,10 @@ index 06ae3fc..eac71e8 100644
|
|||||||
|
|
||||||
// this.i[i][this.ticks % 100] = System.nanoTime() - j; // CraftBukkit
|
// 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
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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 org.spigotmc.TickLimiter tileLimiter;
|
||||||
private int tileTickPosition;
|
private int tileTickPosition;
|
||||||
public ExecutorService lightingExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("PaperSpigot - Lighting Thread").build()); // PaperSpigot - Asynchronous lighting updates
|
public ExecutorService lightingExecutor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("PaperSpigot - Lighting Thread").build()); // PaperSpigot - Asynchronous lighting updates
|
@ -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>
|
From: Iceee <andrew@opticgaming.tv>
|
||||||
Date: Tue, 30 Jun 2015 19:31:02 -0700
|
Date: Tue, 30 Jun 2015 19:31:02 -0700
|
||||||
Subject: [PATCH] Stop updating flowing block if material has changed
|
Subject: [PATCH] Stop updating flowing block if material has changed
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Tue, 30 Jun 2015 19:53:03 -0700
|
Date: Tue, 30 Jun 2015 19:53:03 -0700
|
||||||
Subject: [PATCH] Fast draining
|
Subject: [PATCH] Fast draining
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Wed, 1 Jul 2015 00:38:10 -0700
|
Date: Wed, 1 Jul 2015 00:38:10 -0700
|
||||||
Subject: [PATCH] Configurable lava flow speed
|
Subject: [PATCH] Configurable lava flow speed
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Wed, 1 Jul 2015 00:59:06 -0700
|
Date: Wed, 1 Jul 2015 00:59:06 -0700
|
||||||
Subject: [PATCH] Add player view distance API
|
Subject: [PATCH] Add player view distance API
|
@ -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>
|
From: Sudzzy <originmc@outlook.com>
|
||||||
Date: Tue, 14 Jul 2015 09:20:44 -0700
|
Date: Tue, 14 Jul 2015 09:20:44 -0700
|
||||||
Subject: [PATCH] Disable explosion knockback
|
Subject: [PATCH] Disable explosion knockback
|
@ -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>
|
From: Sudzzy <originmc@outlook.com>
|
||||||
Date: Tue, 14 Jul 2015 09:26:41 -0700
|
Date: Tue, 14 Jul 2015 09:26:41 -0700
|
||||||
Subject: [PATCH] Disable thunder
|
Subject: [PATCH] Disable thunder
|
@ -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>
|
From: Sudzzy <originmc@outlook.com>
|
||||||
Date: Tue, 14 Jul 2015 09:28:31 -0700
|
Date: Tue, 14 Jul 2015 09:28:31 -0700
|
||||||
Subject: [PATCH] Disable ice and snow
|
Subject: [PATCH] Disable ice and snow
|
@ -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>
|
From: Sudzzy <originmc@outlook.com>
|
||||||
Date: Tue, 14 Jul 2015 09:30:28 -0700
|
Date: Tue, 14 Jul 2015 09:30:28 -0700
|
||||||
Subject: [PATCH] Disable mood sounds
|
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
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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) {
|
protected void a(int i, int j, Chunk chunk) {
|
||||||
this.methodProfiler.c("moodSound");
|
this.methodProfiler.c("moodSound");
|
@ -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>
|
From: Sudzzy <originmc@outlook.com>
|
||||||
Date: Tue, 14 Jul 2015 09:58:15 -0700
|
Date: Tue, 14 Jul 2015 09:58:15 -0700
|
||||||
Subject: [PATCH] Configurable mob spawner tick rate
|
Subject: [PATCH] Configurable mob spawner tick rate
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Tue, 14 Jul 2015 10:03:45 -0700
|
Date: Tue, 14 Jul 2015 10:03:45 -0700
|
||||||
Subject: [PATCH] Optimize getCubes()
|
Subject: [PATCH] Optimize getCubes()
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
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
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/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;
|
int cx = chunkx << 4;
|
||||||
for ( int chunkz = ( i1 >> 4 ); chunkz <= ( ( j1 - 1 ) >> 4 ); chunkz++ )
|
for ( int chunkz = ( i1 >> 4 ); chunkz <= ( ( j1 - 1 ) >> 4 ); chunkz++ )
|
||||||
{
|
{
|
||||||
@ -23,7 +23,7 @@ index 4fad879..d481bc4 100644
|
|||||||
} else {
|
} else {
|
||||||
entity.inUnloadedChunk = true; // PaperSpigot - Remove entities in unloaded chunks
|
entity.inUnloadedChunk = true; // PaperSpigot - Remove entities in unloaded chunks
|
||||||
continue;
|
continue;
|
||||||
@@ -1191,7 +1192,6 @@ public abstract class World implements IBlockAccess {
|
@@ -1190,7 +1191,6 @@ public abstract class World implements IBlockAccess {
|
||||||
// PaperSpigot end
|
// PaperSpigot end
|
||||||
}
|
}
|
||||||
int cz = chunkz << 4;
|
int cz = chunkz << 4;
|
||||||
@ -31,7 +31,7 @@ index 4fad879..d481bc4 100644
|
|||||||
// Compute ranges within chunk
|
// Compute ranges within chunk
|
||||||
int xstart = ( i < cx ) ? cx : i;
|
int xstart = ( i < cx ) ? cx : i;
|
||||||
int xend = ( j < ( cx + 16 ) ) ? j : ( cx + 16 );
|
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
|
// Spigot end
|
||||||
|
|
@ -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>
|
From: Iceee <andrew@opticgaming.tv>
|
||||||
Date: Wed, 15 Jul 2015 02:41:12 -0700
|
Date: Wed, 15 Jul 2015 02:41:12 -0700
|
||||||
Subject: [PATCH] ChunkMap caching
|
Subject: [PATCH] ChunkMap caching
|
@ -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>
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
Date: Fri, 3 Apr 2015 17:26:21 -0400
|
Date: Fri, 3 Apr 2015 17:26:21 -0400
|
||||||
Subject: [PATCH] Send absolute position the first time an entity is seen
|
Subject: [PATCH] Send absolute position the first time an entity is seen
|
@ -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>
|
From: Iceee <andrew@opticgaming.tv>
|
||||||
Date: Thu, 23 Jul 2015 04:23:23 -0700
|
Date: Thu, 23 Jul 2015 04:23:23 -0700
|
||||||
Subject: [PATCH] Optimize Spigot's Anti X-Ray
|
Subject: [PATCH] Optimize Spigot's Anti X-Ray
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Thu, 23 Jul 2015 12:44:06 -0700
|
Date: Thu, 23 Jul 2015 12:44:06 -0700
|
||||||
Subject: [PATCH] Add BeaconEffectEvent
|
Subject: [PATCH] Add BeaconEffectEvent
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java
|
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
|
--- a/src/main/java/net/minecraft/server/TileEntityBeacon.java
|
||||||
+++ b/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;
|
@@ -10,6 +10,14 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
|
@ -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>
|
From: Sudzzy <originmc@outlook.com>
|
||||||
Date: Thu, 23 Jul 2015 22:05:22 -0700
|
Date: Thu, 23 Jul 2015 22:05:22 -0700
|
||||||
Subject: [PATCH] Configurable container update tick rate
|
Subject: [PATCH] Configurable container update tick rate
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Tue, 4 Aug 2015 17:45:00 -0700
|
Date: Tue, 4 Aug 2015 17:45:00 -0700
|
||||||
Subject: [PATCH] Configurable TNT explosion volume
|
Subject: [PATCH] Configurable TNT explosion volume
|
@ -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>
|
From: Iceee <andrew@opticgaming.tv>
|
||||||
Date: Tue, 4 Aug 2015 18:15:05 -0700
|
Date: Tue, 4 Aug 2015 18:15:05 -0700
|
||||||
Subject: [PATCH] Fix lava/water some times creating air instead of cobblestone
|
Subject: [PATCH] Fix lava/water some times creating air instead of cobblestone
|
@ -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>
|
From: Techcable <Techcable@outlook.com>
|
||||||
Date: Fri, 7 Aug 2015 19:31:31 -0700
|
Date: Fri, 7 Aug 2015 19:31:31 -0700
|
||||||
Subject: [PATCH] Use UserCache for player heads
|
Subject: [PATCH] Use UserCache for player heads
|
@ -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>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Thu, 13 Aug 2015 10:33:34 -0700
|
Date: Thu, 13 Aug 2015 10:33:34 -0700
|
||||||
Subject: [PATCH] Re-add Spigot's hopper-check feature
|
Subject: [PATCH] Re-add Spigot's hopper-check feature
|
Loading…
Reference in New Issue
Block a user