Add back hopper tick scheduling

Tick a hopper only if certain conditions have changed i.e. inventory changes, redstone updates, etc.
This commit is contained in:
md_5 2015-05-26 19:16:27 +10:00 committed by Zach Brown
parent f3abde1675
commit 015e038b89
22 changed files with 389 additions and 64 deletions

View File

@ -1,4 +1,4 @@
From bfbf7675709d97ce57abc5a7a78e1acb3716a350 Mon Sep 17 00:00:00 2001
From a5e805949f015b7a803f132a487845e5c34f25b2 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Mar 2013 09:46:33 +1100
Subject: [PATCH] Merge tweaks and configuration
@ -69,12 +69,12 @@ index c81f673..abc39f1 100644
if (event != null && (event.isCancelled() || entity.dead)) {
entity.dead = true;
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 7e79ba5..1545a61 100644
index 5749a45..7322703 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -110,4 +110,18 @@ public class SpigotWorldConfig
saplingModifier = getAndValidateGrowth( "Sapling" );
@@ -112,4 +112,18 @@ public class SpigotWorldConfig
wheatModifier = getAndValidateGrowth( "Wheat" );
wartModifier = getAndValidateGrowth( "NetherWart" );
}
+
+ public double itemMerge;

View File

@ -1,4 +1,4 @@
From 3851ac651a87a6d9241935fe20db52f031ba2b7b Mon Sep 17 00:00:00 2001
From 8eceef159a4bb5b2d8f481611a996f59b05b2cd2 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Mar 2013 09:52:41 +1100
Subject: [PATCH] View Distance
@ -35,10 +35,10 @@ index 03cac6e..b245159 100644
this.chunkProvider = this.k();
this.Q = new org.bukkit.craftbukkit.CraftTravelAgent(this); // CraftBukkit
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 1545a61..6cc3a91 100644
index 7322703..a3255eb 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -124,4 +124,11 @@ public class SpigotWorldConfig
@@ -126,4 +126,11 @@ public class SpigotWorldConfig
expMerge = getDouble("merge-radius.exp", 3.0 );
log( "Experience Merge Radius: " + expMerge );
}

View File

@ -1,4 +1,4 @@
From 77cfdf67693de72cbff5d5ff9e7529bcc590d31e Mon Sep 17 00:00:00 2001
From d528062516b72771b4941e2e59cb02dc06cea9f0 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 17:29:54 +1000
Subject: [PATCH] Fix Mob Spawning Relative to View Distance
@ -144,10 +144,10 @@ index cc1b347..3964e3f 100644
continue label115;
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 6cc3a91..46249d7 100644
index a3255eb..a85800d 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -131,4 +131,11 @@ public class SpigotWorldConfig
@@ -133,4 +133,11 @@ public class SpigotWorldConfig
viewDistance = getInt( "view-distance", Bukkit.getViewDistance() );
log( "View Distance: " + viewDistance );
}

View File

@ -1,4 +1,4 @@
From a23d5b334c2402c6c17bdbf7254964977c5422c9 Mon Sep 17 00:00:00 2001
From 85cee07c274011112875655c5f246974542d17b5 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 3 Feb 2013 05:10:21 -0500
Subject: [PATCH] Entity Activation Range
@ -527,10 +527,10 @@ index 0000000..d3f4af1
+ }
+}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 46249d7..ed2836a 100644
index a85800d..da8563b 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -138,4 +138,15 @@ public class SpigotWorldConfig
@@ -140,4 +140,15 @@ public class SpigotWorldConfig
mobSpawnRange = (byte) getInt( "mob-spawn-range", 4 );
log( "Mob Spawn Range: " + mobSpawnRange );
}

View File

@ -1,4 +1,4 @@
From 26eae42d7d1dde830ab120f6a28c161c24657534 Mon Sep 17 00:00:00 2001
From 23f036658cfea94cb5d68f4522617d3a77dcd2be Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 20 Feb 2013 11:58:47 -0500
Subject: [PATCH] Entity Tracking Ranges
@ -63,10 +63,10 @@ index d3f4af1..0143623 100644
return true;
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index ed2836a..6421bf2 100644
index da8563b..3d4896b 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -149,4 +149,19 @@ public class SpigotWorldConfig
@@ -151,4 +151,19 @@ public class SpigotWorldConfig
miscActivationRange = getInt( "entity-activation-range.misc", miscActivationRange );
log( "Entity Activation Range: An " + animalActivationRange + " / Mo " + monsterActivationRange + " / Mi " + miscActivationRange );
}

View File

@ -1,4 +1,4 @@
From a461e14b04a6b45d8c25f21f74de10c2a6e6ec56 Mon Sep 17 00:00:00 2001
From a52a850cb8198e8db2afb6c34acaa96093c6ffd7 Mon Sep 17 00:00:00 2001
From: erocs <github@erocs.org>
Date: Sun, 8 Sep 2013 12:06:15 -0700
Subject: [PATCH] Hopper Customisations
@ -97,10 +97,10 @@ index 8f771af..6785b71 100644
iinventory.update();
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 6421bf2..956c628 100644
index 3d4896b..f0e3b97 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -164,4 +164,19 @@ public class SpigotWorldConfig
@@ -166,4 +166,19 @@ public class SpigotWorldConfig
otherTrackingRange = getInt( "entity-tracking-range.other", otherTrackingRange );
log( "Entity Tracking Range: Pl " + playerTrackingRange + " / An " + animalTrackingRange + " / Mo " + monsterTrackingRange + " / Mi " + miscTrackingRange + " / Other " + otherTrackingRange );
}

View File

@ -1,4 +1,4 @@
From 8a91b585628c6dafa3dbd14f5cfbc110ea9cf717 Mon Sep 17 00:00:00 2001
From aae4390a892c0571a91ddcf978ddf38f6fe257fd Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 22 Jun 2013 16:12:02 +1000
Subject: [PATCH] Allow Disabling of Random Lighting Updates
@ -31,10 +31,10 @@ index f82c0f9..a08b401 100644
entityhuman = (EntityHuman) this.players.get(i);
j = MathHelper.floor(entityhuman.locX) + this.random.nextInt(11) - 5;
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 956c628..8868ea3 100644
index f0e3b97..2b98acb 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -179,4 +179,11 @@ public class SpigotWorldConfig
@@ -181,4 +181,11 @@ public class SpigotWorldConfig
hopperAmount = getInt( "hopper-amount", 1 );
log( "Hopper Transfer: " + hopperTransfer + " Hopper Check: " + hopperCheck + " Hopper Amount: " + hopperAmount );
}

View File

@ -1,4 +1,4 @@
From f958fcbb5a38d213f7f2d55d7861f3ccc5b5ce6d Mon Sep 17 00:00:00 2001
From d70f892f4f0ff325d7663895cf213ae0f742f0a0 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 21 Sep 2013 12:33:09 +1000
Subject: [PATCH] Allow Disabling of 1.6.3 Structure Saving
@ -25,10 +25,10 @@ index 0bced98..bb1a11e 100644
this.d = new PersistentStructure(this.a());
world.a(this.a(), (PersistentBase) this.d);
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 8868ea3..0d5c9d0 100644
index 2b98acb..15cb6b4 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -186,4 +186,16 @@ public class SpigotWorldConfig
@@ -188,4 +188,16 @@ public class SpigotWorldConfig
randomLightUpdates = getBoolean( "random-light-updates", false );
log( "Random Lighting Updates: " + randomLightUpdates );
}

View File

@ -1,4 +1,4 @@
From 307fc1c27db419c44b46bac8e3c45075559762cf Mon Sep 17 00:00:00 2001
From 9a04698dd3ec6d937551e7b7e35d34e68b9fae1e Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 22 Sep 2013 19:10:53 +1000
Subject: [PATCH] Item Despawn Rate
@ -18,10 +18,10 @@ index 65a03df..d6d83fe 100644
if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
this.age = 0;
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 0d5c9d0..a5786ea 100644
index 15cb6b4..efbfa2e 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -198,4 +198,11 @@ public class SpigotWorldConfig
@@ -200,4 +200,11 @@ public class SpigotWorldConfig
log( "*** WARNING *** Please use this option with caution, SpigotMC is not responsible for any issues this option may cause in the future!" );
}
}

View File

@ -1,4 +1,4 @@
From faeb947ab741cda6e6e98978de18a6a1b6940d16 Mon Sep 17 00:00:00 2001
From 9a00ec321402602d5ae5f59f2f640db206adae98 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Mon, 14 Oct 2013 19:20:10 +1100
Subject: [PATCH] Arrow Despawn Rate
@ -18,10 +18,10 @@ index 01c66e3..46f6374 100644
}
} else {
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index a5786ea..af0c4b2 100644
index efbfa2e..d8433ac 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -205,4 +205,11 @@ public class SpigotWorldConfig
@@ -207,4 +207,11 @@ public class SpigotWorldConfig
itemDespawnRate = getInt( "item-despawn-rate", 6000 );
log( "Item Despawn Rate: " + itemDespawnRate );
}

View File

@ -1,4 +1,4 @@
From 4968c35def64e0c307488ea32d479d7536020434 Mon Sep 17 00:00:00 2001
From 1f1269d671396950883aa870a3a3c147de6e4793 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 16 May 2013 18:51:05 +1000
Subject: [PATCH] Orebfuscator
@ -362,7 +362,7 @@ index 0000000..6f28cd8
+ }
+}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index af0c4b2..c390381 100644
index d8433ac..5d2b755 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -1,5 +1,6 @@
@ -372,7 +372,7 @@ index af0c4b2..c390381 100644
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -212,4 +213,36 @@ public class SpigotWorldConfig
@@ -214,4 +215,36 @@ public class SpigotWorldConfig
arrowDespawnRate = getInt( "arrow-despawn-rate", 1200 );
log( "Arrow Despawn Rate: " + arrowDespawnRate );
}

View File

@ -1,4 +1,4 @@
From ef2d58c831e84ea077a99a67888aec302db80394 Mon Sep 17 00:00:00 2001
From a0076cb8755ae27f36b727b9a23a2b29f33dfacb Mon Sep 17 00:00:00 2001
From: Dylan Xaldin <Puremin0rez515@gmail.com>
Date: Thu, 12 Dec 2013 18:05:03 -0600
Subject: [PATCH] Allow Disabling Zombie Villager Aggression
@ -25,10 +25,10 @@ index 91bb046..1a8d3d8 100644
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index c390381..9c1cd19 100644
index 5d2b755..f6fc0a2 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -245,4 +245,11 @@ public class SpigotWorldConfig
@@ -247,4 +247,11 @@ public class SpigotWorldConfig
antiXrayInstance = new AntiXray( this );
}

View File

@ -1,4 +1,4 @@
From 9a50d12977caba8b57ad46c3b22dcc7318ff7231 Mon Sep 17 00:00:00 2001
From 4cbf1d01d020a85d822368814fae42d456c919a0 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 2 Feb 2014 16:55:46 +0000
Subject: [PATCH] Add Option to Nerf Mobs from Spawner's
@ -64,10 +64,10 @@ index 0695fe2..1680918 100644
// Spigot end
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 9c1cd19..891812a 100644
index f6fc0a2..20800ed 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -252,4 +252,11 @@ public class SpigotWorldConfig
@@ -254,4 +254,11 @@ public class SpigotWorldConfig
zombieAggressiveTowardsVillager = getBoolean( "zombie-aggressive-towards-villager", true );
log( "Zombie Aggressive Towards Villager: " + zombieAggressiveTowardsVillager );
}

View File

@ -1,4 +1,4 @@
From 828bf8252b698beddc7c384d660cd9a8a7e158ee Mon Sep 17 00:00:00 2001
From f9f7d2e5c726b6f4f81f66d2683112a3d9f60331 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Tue, 28 Jan 2014 20:35:35 +1100
Subject: [PATCH] Allow Configuring Chunks per Packet
@ -18,10 +18,10 @@ index 2fab7d1..b80fd6d 100644
if (chunkcoordintpair != null) {
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 1971dbf..c7cb20c 100644
index a684d68..ede9250 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -266,4 +266,11 @@ public class SpigotWorldConfig
@@ -268,4 +268,11 @@ public class SpigotWorldConfig
enableZombiePigmenPortalSpawns = getBoolean( "enable-zombie-pigmen-portal-spawns", true );
log( "Allow Zombie Pigmen to spawn from portal blocks: " + enableZombiePigmenPortalSpawns );
}

View File

@ -1,4 +1,4 @@
From cb6e2bfdea8449916514608823faa660bbb7f385 Mon Sep 17 00:00:00 2001
From dd9b7854dc1854fa837a9b9d48d11fe249498e02 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 31 Jan 2014 11:18:34 -0500
Subject: [PATCH] Cap Entity Collisions
@ -45,10 +45,10 @@ index 9cd8e9b..0e2f64f 100644
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index c7cb20c..76ded26 100644
index ede9250..c652cc5 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -273,4 +273,11 @@ public class SpigotWorldConfig
@@ -275,4 +275,11 @@ public class SpigotWorldConfig
maxBulkChunk = getInt( "max-bulk-chunks", 10 );
log( "Sending up to " + maxBulkChunk + " chunks per packet" );
}

View File

@ -1,4 +1,4 @@
From 6e7a673650d54e56f37efc2a6a6ea74b54b21e2f Mon Sep 17 00:00:00 2001
From 1b3d31d6cc4fe8c84ad9f1ea8a61a48dbec3e4de Mon Sep 17 00:00:00 2001
From: drXor <mcyoungsota@gmail.com>
Date: Sat, 29 Mar 2014 13:44:25 -0400
Subject: [PATCH] Configurable dragon death and wither spawn sounds
@ -29,10 +29,10 @@ index 9884a82..fb19bad 100644
double deltaLength = Math.sqrt(distanceSquared);
double relativeX = player.locX + (deltaX / deltaLength) * viewDistance;
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 76ded26..c06084d 100644
index c652cc5..75e66d5 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -280,4 +280,16 @@ public class SpigotWorldConfig
@@ -282,4 +282,16 @@ public class SpigotWorldConfig
maxCollisionsPerEntity = getInt( "max-entity-collisions", 8 );
log( "Max Entity Collisions: " + maxCollisionsPerEntity );
}

View File

@ -1,4 +1,4 @@
From ec81c7e34b486cb618282f7d04ed00b909622c20 Mon Sep 17 00:00:00 2001
From 96a38108d0cf838f7ed2fa3f16c4f6641864b0bd Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Fri, 4 Jul 2014 13:28:45 +1000
Subject: [PATCH] Further Seed Customisation
@ -32,10 +32,10 @@ index 411f2dc..6648a70 100644
i1 *= this.g;
j1 *= this.g;
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index c06084d..d644922 100644
index 75e66d5..b19558b 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -292,4 +292,13 @@ public class SpigotWorldConfig
@@ -294,4 +294,13 @@ public class SpigotWorldConfig
{
witherSpawnSoundRadius = getInt( "wither-spawn-sound-radius", 0 );
}

View File

@ -1,4 +1,4 @@
From 2489aa2e712dd6beb634472dfedf704218a706ad Mon Sep 17 00:00:00 2001
From 4dc82b6c36d8eb7218545353e06563d1892e1e3e Mon Sep 17 00:00:00 2001
From: lazertester <austin.techhead@gmail.com>
Date: Sun, 17 Aug 2014 19:56:17 +1000
Subject: [PATCH] Add Hunger Config Values
@ -43,10 +43,10 @@ index 456b9b3..3af4180 100644
}
} else if (this.foodLevel <= 0) {
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index d644922..75edbb9 100644
index b19558b..0f9b67c 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -301,4 +301,16 @@ public class SpigotWorldConfig
@@ -303,4 +303,16 @@ public class SpigotWorldConfig
largeFeatureSeed = getInt( "seed-feature", 14357617 );
log( "Custom Map Seeds: Village: " + villageSeed + " Feature: " + largeFeatureSeed );
}

View File

@ -1,4 +1,4 @@
From 321c9040552cca47a7d72795f13e551bcf290287 Mon Sep 17 00:00:00 2001
From 385cf5e40bcc3f07193be94b1f7cbeb0c2f91428 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 20 Aug 2014 18:12:32 -0400
Subject: [PATCH] Limit TNT Detonations per tick
@ -31,10 +31,10 @@ index 65f13be..d76b965 100644
public void j() {
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 75edbb9..3b6d4c0 100644
index 0f9b67c..e2d673f 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -313,4 +313,15 @@ public class SpigotWorldConfig
@@ -315,4 +315,15 @@ public class SpigotWorldConfig
combatExhaustion = (float) getDouble( "hunger.combat-exhaustion", 0.3 );
regenExhaustion = (float) getDouble( "hunger.regen-exhaustion", 3 );
}

View File

@ -1,4 +1,4 @@
From 1361ee7a57caeda4afe9e12b8474f7dcf06601b8 Mon Sep 17 00:00:00 2001
From cccdb674a7695fa878fe5bb66f5f5d1f1816735b Mon Sep 17 00:00:00 2001
From: drXor <mcyoung@mit.edu>
Date: Sat, 9 Aug 2014 13:56:51 -0400
Subject: [PATCH] Configurable Hanging Tick
@ -18,10 +18,10 @@ index 16dfb1d..e491684 100644
if (!this.dead && !this.survives()) {
// CraftBukkit start - fire break events
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 3b6d4c0..042ec2a 100644
index e2d673f..ab2f8bf 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -324,4 +324,10 @@ public class SpigotWorldConfig
@@ -326,4 +326,10 @@ public class SpigotWorldConfig
maxTntTicksPerTick = getInt( "max-tnt-per-tick", 100 );
log( "Max TNT Explosions: " + maxTntTicksPerTick );
}

View File

@ -1,4 +1,4 @@
From 5a8fa8fc3ffc90de82ea5bb9cfb90dfa1c26d1aa Mon Sep 17 00:00:00 2001
From 88ab65907d69d2dd6276fe73e9a5ead94e2cd758 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Fri, 20 Feb 2015 21:39:31 +1100
Subject: [PATCH] Allow Capping (Tile)Entity Tick Time.
@ -81,10 +81,10 @@ index 2c947ca..6de5ba5 100644
if (this.isLoaded(tileentity.getPosition())) {
this.getChunkAtWorldCoords(tileentity.getPosition()).e(tileentity.getPosition());
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 042ec2a..328ff14 100644
index ab2f8bf..8e86212 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -330,4 +330,13 @@ public class SpigotWorldConfig
@@ -332,4 +332,13 @@ public class SpigotWorldConfig
{
hangingTickFrequency = getInt( "hanging-tick-frequency", 100 );
}

View File

@ -0,0 +1,325 @@
From 1c13de44e824b19644554a6b0f73272651c9b22f Mon Sep 17 00:00:00 2001
From: "Evan A. Haskell" <eah2119@gmail.com>
Date: Sat, 19 Apr 2014 16:58:26 -0400
Subject: [PATCH] Schedule Hopper Ticks
Tick a hopper only if certain conditions have changed i.e. inventory changes, redstone updates, etc.
diff --git a/src/main/java/net/minecraft/server/BlockHopper.java b/src/main/java/net/minecraft/server/BlockHopper.java
index 9f9b45d..6f9ac3a 100644
--- a/src/main/java/net/minecraft/server/BlockHopper.java
+++ b/src/main/java/net/minecraft/server/BlockHopper.java
@@ -21,6 +21,7 @@ public class BlockHopper extends BlockContainer {
this.j(this.blockStateList.getBlockData().set(BlockHopper.FACING, EnumDirection.DOWN).set(BlockHopper.ENABLED, Boolean.valueOf(true)));
this.a(CreativeModeTab.d);
this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ this.a(true); // Spigot - Enable random block updates on hoppers // PAIL: Rename
}
public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
@@ -97,6 +98,14 @@ public class BlockHopper extends BlockContainer {
if (flag != ((Boolean) iblockdata.get(BlockHopper.ENABLED)).booleanValue()) {
world.setTypeAndData(blockposition, iblockdata.set(BlockHopper.ENABLED, Boolean.valueOf(flag)), 4);
+ // Spigot start - When this hopper becomes unpowered, make it active.
+ // Called when this block's power level changes. flag1 is the current
+ // isNotPowered from metadata. flag is the recalculated isNotPowered.
+ TileEntityHopper hopper = (TileEntityHopper) world.getTileEntity(blockposition);
+ if (flag && hopper != null) {
+ hopper.ensureUpdates();
+ }
+ // Spigot end
}
}
@@ -158,4 +167,15 @@ public class BlockHopper extends BlockContainer {
protected BlockStateList getStateList() {
return new BlockStateList(this, new IBlockState[] { BlockHopper.FACING, BlockHopper.ENABLED});
}
+
+ // Spigot start - Use random block updates to make hoppers active.
+ // PAIL: Rename
+ @Override
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, java.util.Random random) {
+ TileEntityHopper hopper = (TileEntityHopper) world.getTileEntity(blockposition);
+ if (hopper != null) {
+ hopper.ensureUpdates();
+ }
+ }
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index d5922fe..367361a 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -783,6 +783,14 @@ public class Chunk {
tileentity.D();
this.tileEntities.put(blockposition, tileentity);
+ // Spigot start
+ // When a tile entity is added, update hoppers around the tile
+ tileentity.scheduleTicks();
+
+ // if it is a large chest, hoppers should update around its
+ // other half
+ TileEntity.updateChestAndHoppers(this.world, blockposition);
+ // Spigot end
// CraftBukkit start
} else {
System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ()
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index d6d83fe..30c8d63 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -100,6 +100,25 @@ public class EntityItem extends Entity {
if (this.onGround) {
this.motY *= -0.5D;
}
+ // Spigot start - Make the hopper(s) below this item active.
+ // Called each tick on each item entity.
+ int xi = MathHelper.floor(this.getBoundingBox().a);
+ int yi = MathHelper.floor(this.getBoundingBox().b) - 1;
+ int zi = MathHelper.floor(this.getBoundingBox().c);
+ int xf = MathHelper.floor(this.getBoundingBox().d);
+ int yf = MathHelper.floor(this.getBoundingBox().e) - 1;
+ int zf = MathHelper.floor(this.getBoundingBox().f);
+ for (int a = xi; a <= xf; a++) {
+ for (int c = zi; c <= zf; c++) {
+ for (int b = yi; b <= yf; b++) {
+ TileEntity tileEntity = this.world.getTileEntity(new BlockPosition(a, b, c));
+ if (tileEntity instanceof TileEntityHopper) {
+ ((TileEntityHopper) tileEntity).ensureUpdates();
+ }
+ }
+ }
+ }
+ // Spigot end
/* Craftbukkit start - moved up
if (this.age != -32768) {
diff --git a/src/main/java/net/minecraft/server/EntityMinecartContainer.java b/src/main/java/net/minecraft/server/EntityMinecartContainer.java
index 17b5714..5f22f9e 100644
--- a/src/main/java/net/minecraft/server/EntityMinecartContainer.java
+++ b/src/main/java/net/minecraft/server/EntityMinecartContainer.java
@@ -52,6 +52,31 @@ public abstract class EntityMinecartContainer extends EntityMinecartAbstract imp
super(world, d0, d1, d2);
}
+ // Spigot start - Make hoppers around this container minecart active.
+ // Called each tick on each minecart.
+ // PAIL: Rename
+ @Override
+ public void t_() {
+ int xi = MathHelper.floor(this.getBoundingBox().a) - 1;
+ int yi = MathHelper.floor(this.getBoundingBox().b) - 1;
+ int zi = MathHelper.floor(this.getBoundingBox().c) - 1;
+ int xf = MathHelper.floor(this.getBoundingBox().d) + 1;
+ int yf = MathHelper.floor(this.getBoundingBox().e) + 1;
+ int zf = MathHelper.floor(this.getBoundingBox().f) + 1;
+ for (int a = xi; a <= xf; a++) {
+ for (int b = yi; b <= yf; b++) {
+ for (int c = zi; c <= zf; c++) {
+ TileEntity tileEntity = this.world.getTileEntity(new BlockPosition(a, b, c));
+ if (tileEntity instanceof TileEntityHopper) {
+ ((TileEntityHopper) tileEntity).ensureUpdates();
+ }
+ }
+ }
+ }
+ super.t_();
+ }
+ // Spigot end
+
public void a(DamageSource damagesource) {
super.a(damagesource);
if (this.world.getGameRules().getBoolean("doEntityDrops")) {
diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java
index edcb307..4b3ea37 100644
--- a/src/main/java/net/minecraft/server/EntityOcelot.java
+++ b/src/main/java/net/minecraft/server/EntityOcelot.java
@@ -30,6 +30,27 @@ public class EntityOcelot extends EntityTameableAnimal {
this.datawatcher.a(18, Byte.valueOf((byte) 0));
}
+ // Spigot start - We use K, the method called in World.class on each entity each tick
+ // PAIL: Rename
+ @Override
+ public void K() {
+ int xi = MathHelper.floor(this.getBoundingBox().a);
+ int yi = MathHelper.floor(this.getBoundingBox().b) - 1;
+ int zi = MathHelper.floor(this.getBoundingBox().c);
+ int xf = MathHelper.floor(this.getBoundingBox().d);
+ int yf = MathHelper.floor(this.getBoundingBox().e) - 1;
+ int zf = MathHelper.floor(this.getBoundingBox().f);
+ for (int a = xi; a <= xf; a++) {
+ for (int c = zi; c <= zf; c++) {
+ for (int b = yi; b <= yf; b++) {
+ TileEntity.updateChestAndHoppers(this.world, new BlockPosition(a, b, c));
+ }
+ }
+ }
+ super.K();
+ }
+ // Spigot end
+
public void E() {
if (this.getControllerMove().a()) {
double d0 = this.getControllerMove().b();
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index c268a40..578f79d 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -21,6 +21,64 @@ public abstract class TileEntity {
private int h;
protected Block e;
+ // Spigot start
+ // Helper method for scheduleTicks. If the hopper at blockposition is pointed
+ // toward this tile, then make the hopper active
+ private void scheduleTick(BlockPosition blockposition) {
+ TileEntity tileEntity = this.world.getTileEntity(blockposition);
+ if (tileEntity instanceof TileEntityHopper) {
+ // i is the metadeta assoiated with the direction the hopper faces.
+ EnumDirection dir = BlockHopper.b(tileEntity.u());
+
+ // Facing class provides arrays for direction offset.
+ if (tileEntity.position.shift(dir).equals(position)) {
+ ((TileEntityHopper) tileEntity).ensureUpdates();
+ }
+ }
+ }
+
+ // Called from update when the contents have changed, so hoppers need updates.
+ // Check all 6 faces.
+ public void scheduleTicks() {
+ if (this.world != null) {
+ // Check the top
+ this.scheduleTick(position.up());
+ // Check the sides
+ for (int i = 2; i < 6; i++) {
+ this.scheduleTick(position.shift(EnumDirection.fromType1(i)));
+ }
+ // Check the bottom.
+ TileEntity tileEntity = this.world.getTileEntity(position.down());
+ if (tileEntity instanceof TileEntityHopper && tileEntity.world != null) {
+ ((TileEntityHopper) tileEntity).ensureUpdates();
+ }
+ }
+ }
+
+ // If there is a chest at blockposition, then update hoppers around it
+ // as well as around its other half (if it exists)
+ public static void updateChestAndHoppers(World world, BlockPosition blockposition) {
+ Block block = world.getType(blockposition).getBlock();
+ if (block instanceof BlockChest) {
+ TileEntity tile = world.getTileEntity(blockposition);
+ if (tile instanceof TileEntityChest) {
+ tile.scheduleTicks();
+ }
+ for (int i = 2; i < 6; i++) {
+ // Look for a matching chest at each face
+ BlockPosition pos = blockposition.shift(EnumDirection.fromType1(i));
+ if (world.getType(pos).getBlock() == block) {
+ tile = world.getTileEntity(pos);
+ if (tile instanceof TileEntityChest) {
+ tile.scheduleTicks();
+ }
+ break;
+ }
+ }
+ }
+ }
+ // Spigot end
+
public TileEntity() {
this.position = BlockPosition.ZERO;
this.h = -1;
@@ -105,6 +163,10 @@ public abstract class TileEntity {
if (this.w() != Blocks.AIR) {
this.world.updateAdjacentComparators(this.position, this.w());
}
+ // Spigot start - Called when the contents have changed, so hoppers around this
+ // tile need updating.
+ this.scheduleTicks();
+ // Spigot end
}
}
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
index 1553656..9818166 100644
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -18,6 +18,18 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
private String f;
private int g = -1;
+ // Spigot start
+
+ // Whether it has been determined that this hopper should update
+ private boolean active = true;
+
+ // Called by redstone updates, inventory changes, etc. to ensure this
+ // hopper updates
+ public void ensureUpdates() {
+ active = true;
+ }
+ // Spigot end
+
// CraftBukkit start - add fields and methods
public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
private int maxStack = MAX_STACK;
@@ -91,6 +103,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
public void update() {
super.update();
+ ensureUpdates(); // Spigot - Contents have changed, so make this hopper active
}
public int getSize() {
@@ -182,6 +195,16 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
public boolean m() {
if (this.world != null && !this.world.isClientSide) {
+ // Spigot start
+
+ // if it has not been determined that this hopper should update,
+ // then don't waste time doing it
+ if (!active)
+ return false;
+
+ // set it up for the next time this method is called
+ active = false;
+ // Spigot end
if (!this.n() && BlockHopper.f(this.u())) {
boolean flag = false;
@@ -592,6 +615,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
public void d(int i) {
this.g = i;
+ this.ensureUpdates(); // Spigot
}
public boolean n() {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 6de5ba5..1fa8448 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -429,6 +429,14 @@ public abstract class World implements IBlockAccess {
// Modularize client and physic updates
notifyAndUpdatePhysics(blockposition, chunk, block1, block, i);
}
+ // Spigot start - If this block is changing to that which a chest beneath it
+ // becomes able to be opened, then the chest must be updated.
+ // block1 is the old block. block is the new block. r returns true if the block type
+ // prevents access to a chest.
+ if (block1 != null && block1.isOccluding() && !block.isOccluding()) {
+ TileEntity.updateChestAndHoppers(this, blockposition.down());
+ }
+ // Spigot end
// CraftBukkit end
return true;
--
2.1.4