diff --git a/checkstyle.xml b/checkstyle.xml
index 0022da12c..ab96b7024 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -20,26 +20,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nms-patches/EntityZombie.patch b/nms-patches/EntityZombie.patch
index 660fb3617..f4b15f523 100644
--- a/nms-patches/EntityZombie.patch
+++ b/nms-patches/EntityZombie.patch
@@ -52,7 +52,7 @@
this.drownedConversionTime = i;
this.getDataWatcher().set(EntityZombie.DROWN_CONVERTING, true);
}
-@@ -201,12 +216,13 @@
+@@ -201,11 +216,15 @@
}
protected void b(EntityTypes extends EntityZombie> entitytypes) {
@@ -62,12 +62,14 @@
if (entityzombie != null) {
entityzombie.y(entityzombie.world.getDamageScaler(entityzombie.getChunkCoordinates()).d());
entityzombie.u(entityzombie.eK() && this.eU());
++ // CraftBukkit start - SPIGOT-5208: End conversion to stop event spam
++ } else {
++ ((Zombie) getBukkitEntity()).setConversionTime(-1);
++ // CraftBukkit end
}
-+ else { ((Zombie) getBukkitEntity()).setConversionTime(-1); } // CraftBukkit - SPIGOT-5208: End conversion to stop event spam
}
-
-@@ -245,9 +261,9 @@
+@@ -245,9 +264,9 @@
if (SpawnerCreature.a(entitypositiontypes_surface, (IWorldReader) this.world, blockposition, entitytypes) && EntityPositionTypes.a(entitytypes, worldserver, EnumMobSpawn.REINFORCEMENT, blockposition, this.world.random)) {
entityzombie.setPosition((double) i1, (double) j1, (double) k1);
if (!this.world.isPlayerNearby((double) i1, (double) j1, (double) k1, 7.0D) && this.world.j((Entity) entityzombie) && this.world.getCubes(entityzombie) && !this.world.containsLiquid(entityzombie.getBoundingBox())) {
@@ -79,7 +81,7 @@
this.getAttributeInstance(GenericAttributes.SPAWN_REINFORCEMENTS).addModifier(new AttributeModifier("Zombie reinforcement caller charge", -0.05000000074505806D, AttributeModifier.Operation.ADDITION));
entityzombie.getAttributeInstance(GenericAttributes.SPAWN_REINFORCEMENTS).addModifier(new AttributeModifier("Zombie reinforcement callee charge", -0.05000000074505806D, AttributeModifier.Operation.ADDITION));
break;
-@@ -268,7 +284,14 @@
+@@ -268,7 +287,14 @@
float f = this.world.getDamageScaler(this.getChunkCoordinates()).b();
if (this.getItemInMainHand().isEmpty() && this.isBurning() && this.random.nextFloat() < f * 0.3F) {
@@ -95,7 +97,7 @@
}
}
-@@ -349,7 +372,12 @@
+@@ -349,7 +375,12 @@
}
EntityVillager entityvillager = (EntityVillager) entityliving;
@@ -109,7 +111,7 @@
entityzombievillager.prepare(worldserver, worldserver.getDamageScaler(entityzombievillager.getChunkCoordinates()), EnumMobSpawn.CONVERSION, new EntityZombie.GroupDataZombie(false, true), (NBTTagCompound) null);
entityzombievillager.setVillagerData(entityvillager.getVillagerData());
-@@ -406,7 +434,7 @@
+@@ -406,7 +437,7 @@
entitychicken1.prepare(worldaccess, difficultydamagescaler, EnumMobSpawn.JOCKEY, (GroupDataEntity) null, (NBTTagCompound) null);
entitychicken1.setChickenJockey(true);
this.startRiding(entitychicken1);
diff --git a/nms-patches/ItemCrossbow.patch b/nms-patches/ItemCrossbow.patch
index 9c94a17f8..a5e932b4e 100644
--- a/nms-patches/ItemCrossbow.patch
+++ b/nms-patches/ItemCrossbow.patch
@@ -1,18 +1,17 @@
--- a/net/minecraft/server/ItemCrossbow.java
+++ b/net/minecraft/server/ItemCrossbow.java
-@@ -75,6 +75,11 @@
+@@ -74,6 +74,10 @@
+ if (itemstack1.isEmpty() && flag) {
itemstack1 = new ItemStack(Items.ARROW);
itemstack2 = itemstack1.cloneItemStack();
- }
-+ // CraftBukkit start - SPIGOT-4870, MC-150847
-+ else if (itemstack1.isEmpty()) {
++ // CraftBukkit start - SPIGOT-4870, MC-150847
++ } else if (itemstack1.isEmpty()) {
+ return false;
-+ }
-+ // CraftBukkit end
++ // CraftBukkit end
+ }
if (!a(entityliving, itemstack, itemstack1, k > 0, flag)) {
- return false;
-@@ -198,11 +203,27 @@
+@@ -198,11 +202,27 @@
vector3fa.a(quaternion);
((IProjectile) object).shoot((double) vector3fa.a(), (double) vector3fa.b(), (double) vector3fa.c(), f1, f2);
}
diff --git a/nms-patches/ItemTrident.patch b/nms-patches/ItemTrident.patch
index 0f7111372..1620a9751 100644
--- a/nms-patches/ItemTrident.patch
+++ b/nms-patches/ItemTrident.patch
@@ -13,7 +13,7 @@
if (k == 0) {
EntityThrownTrident entitythrowntrident = new EntityThrownTrident(world, entityhuman, itemstack);
-@@ -54,16 +57,40 @@
+@@ -54,16 +57,39 @@
entitythrowntrident.fromPlayer = EntityArrow.PickupStatus.CREATIVE_ONLY;
}
@@ -36,14 +36,13 @@
if (!entityhuman.abilities.canInstantlyBuild) {
entityhuman.inventory.f(itemstack);
}
- }
-+ // CraftBukkit start - SPIGOT-5458 also need in this branch :(
-+ else {
++ // CraftBukkit start - SPIGOT-5458 also need in this branch :(
++ } else {
+ itemstack.damage(1, entityhuman, (entityhuman1) -> {
+ entityhuman1.broadcastItemBreak(entityliving.getRaisedHand());
+ });
-+ }
-+ // CraftBukkkit end
++ // CraftBukkkit end
+ }
}
entityhuman.b(StatisticList.ITEM_USED.b(this));
diff --git a/nms-patches/PlayerConnectionUtils.patch b/nms-patches/PlayerConnectionUtils.patch
index ac3390271..ca65b01e9 100644
--- a/nms-patches/PlayerConnectionUtils.patch
+++ b/nms-patches/PlayerConnectionUtils.patch
@@ -8,14 +8,14 @@
if (t0.a().isConnected()) {
packet.a(t0);
} else {
-@@ -23,5 +24,10 @@
+@@ -22,6 +23,10 @@
+
});
throw CancelledPacketHandleException.INSTANCE;
- }
-+ // CraftBukkit start - SPIGOT-5477, MC-142590
-+ else if (MinecraftServer.getServer().hasStopped() || (t0 instanceof PlayerConnection && ((PlayerConnection) t0).processedDisconnect)) {
++ // CraftBukkit start - SPIGOT-5477, MC-142590
++ } else if (MinecraftServer.getServer().hasStopped() || (t0 instanceof PlayerConnection && ((PlayerConnection) t0).processedDisconnect)) {
+ throw CancelledPacketHandleException.INSTANCE;
-+ }
-+ // CraftBukkit end
++ // CraftBukkit end
+ }
}
}
diff --git a/nms-patches/TileEntityBeehive.patch b/nms-patches/TileEntityBeehive.patch
index eb6ed011a..be9f67377 100644
--- a/nms-patches/TileEntityBeehive.patch
+++ b/nms-patches/TileEntityBeehive.patch
@@ -120,19 +120,18 @@
}
} else {
return false;
-@@ -235,6 +274,11 @@
+@@ -234,6 +273,10 @@
+
if (this.releaseBee(iblockdata, tileentitybeehive_hivebee, (List) null, tileentitybeehive_releasestatus)) {
iterator.remove();
- }
-+ // CraftBukkit start
-+ else {
++ // CraftBukkit start
++ } else {
+ tileentitybeehive_hivebee.ticksInHive = tileentitybeehive_hivebee.minOccupationTicks / 2; // Not strictly Vanilla behaviour in cases where bees cannot spawn but still reasonable
-+ }
-+ // CraftBukkit end
++ // CraftBukkit end
+ }
}
}
-
-@@ -276,6 +320,11 @@
+@@ -276,6 +319,11 @@
this.flowerPos = GameProfileSerializer.b(nbttagcompound.getCompound("FlowerPos"));
}
@@ -144,7 +143,7 @@
}
@Override
-@@ -285,6 +334,7 @@
+@@ -285,6 +333,7 @@
if (this.x()) {
nbttagcompound.set("FlowerPos", GameProfileSerializer.a(this.flowerPos));
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index f57afe717..c732c4e8e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -73,7 +73,6 @@ import net.minecraft.server.GameRules;
import net.minecraft.server.GeneratorSettings;
import net.minecraft.server.IRecipe;
import net.minecraft.server.IRegistry;
-import net.minecraft.server.IRegistryCustom;
import net.minecraft.server.Item;
import net.minecraft.server.ItemWorldMap;
import net.minecraft.server.Items;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java
index 97fdf3560..f1437d2c5 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java
@@ -1,7 +1,6 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityFireball;
-import net.minecraft.server.MathHelper;
import org.apache.commons.lang.Validate;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index af41d9f11..96b55867d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -12,7 +12,6 @@ import net.minecraft.server.BlockEnchantmentTable;
import net.minecraft.server.BlockPosition;
import net.minecraft.server.BlockWorkbench;
import net.minecraft.server.Blocks;
-import net.minecraft.server.ChatComponentText;
import net.minecraft.server.Container;
import net.minecraft.server.Containers;
import net.minecraft.server.CraftingManager;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 561a0610c..b6b9ffc77 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -84,7 +84,6 @@ import org.bukkit.Particle;
import org.bukkit.Sound;
import org.bukkit.Statistic;
import org.bukkit.WeatherType;
-import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import org.bukkit.configuration.serialization.DelegateDeserialization;
import org.bukkit.conversations.Conversation;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index f9d90a454..c1f361d79 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -22,7 +22,6 @@ import net.minecraft.server.EntityAnimal;
import net.minecraft.server.EntityAreaEffectCloud;
import net.minecraft.server.EntityDamageSource;
import net.minecraft.server.EntityDamageSourceIndirect;
-import net.minecraft.server.EntityEnderCrystal;
import net.minecraft.server.EntityEnderDragon;
import net.minecraft.server.EntityExperienceOrb;
import net.minecraft.server.EntityFireworks;
@@ -44,11 +43,9 @@ import net.minecraft.server.EntityVillager;
import net.minecraft.server.EntityWaterAnimal;
import net.minecraft.server.EnumDirection;
import net.minecraft.server.EnumHand;
-import net.minecraft.server.EnumItemSlot;
import net.minecraft.server.Explosion;
import net.minecraft.server.GeneratorAccess;
import net.minecraft.server.IBlockData;
-import net.minecraft.server.IChatBaseComponent;
import net.minecraft.server.IInventory;
import net.minecraft.server.IProjectile;
import net.minecraft.server.ItemActionContext;
@@ -69,7 +66,6 @@ import net.minecraft.server.Unit;
import net.minecraft.server.World;
import net.minecraft.server.WorldServer;
import org.bukkit.Bukkit;
-import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.Server;
@@ -142,15 +138,14 @@ import org.bukkit.event.block.EntityBlockFormEvent;
import org.bukkit.event.block.FluidLevelChangeEvent;
import org.bukkit.event.block.MoistureChangeEvent;
import org.bukkit.event.block.NotePlayEvent;
-import org.bukkit.event.entity.ArrowBodyCountChangeEvent;
import org.bukkit.event.entity.AreaEffectCloudApplyEvent;
+import org.bukkit.event.entity.ArrowBodyCountChangeEvent;
import org.bukkit.event.entity.BatToggleSleepEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.event.entity.CreeperPowerEvent;
import org.bukkit.event.entity.EntityBreakDoorEvent;
import org.bukkit.event.entity.EntityBreedEvent;
-import org.bukkit.event.entity.EntitySpellCastEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -161,10 +156,10 @@ import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityEnterLoveModeEvent;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.entity.EntityPlaceEvent;
-import org.bukkit.event.entity.EntityPortalEvent;
import org.bukkit.event.entity.EntityPotionEffectEvent;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
+import org.bukkit.event.entity.EntitySpellCastEvent;
import org.bukkit.event.entity.EntityTameEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
@@ -220,7 +215,6 @@ import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.meta.BookMeta;
import org.bukkit.potion.PotionEffect;
-import org.bukkit.projectiles.ProjectileSource;
public class CraftEventFactory {
public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.BURN);
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
index c8bce32ea..69429e267 100644
--- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
@@ -2,7 +2,6 @@ package org.bukkit.craftbukkit.generator;
import com.google.common.base.Preconditions;
import com.mojang.serialization.Codec;
-import java.util.List;
import java.util.Random;
import net.minecraft.server.BiomeBase;
import net.minecraft.server.BiomeManager;
@@ -11,8 +10,6 @@ import net.minecraft.server.Block;
import net.minecraft.server.BlockPosition;
import net.minecraft.server.ChunkSection;
import net.minecraft.server.DefinedStructureManager;
-import net.minecraft.server.DimensionManager;
-import net.minecraft.server.EnumCreatureType;
import net.minecraft.server.GeneratorAccess;
import net.minecraft.server.GeneratorAccessSeed;
import net.minecraft.server.HeightMap;
@@ -23,15 +20,11 @@ import net.minecraft.server.IRegistryCustom;
import net.minecraft.server.ITileEntity;
import net.minecraft.server.ProtoChunk;
import net.minecraft.server.RegionLimitedWorldAccess;
-import net.minecraft.server.RegistryMaterials;
import net.minecraft.server.StructureManager;
-import net.minecraft.server.StructureSettings;
import net.minecraft.server.TileEntity;
import net.minecraft.server.WorldChunkManager;
-import net.minecraft.server.WorldDimension;
import net.minecraft.server.WorldGenStage;
import net.minecraft.server.WorldServer;
-import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.craftbukkit.block.CraftBlock;
import org.bukkit.generator.ChunkGenerator;
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java
index 06fb34731..2c8590dfb 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java
@@ -1,8 +1,8 @@
package org.bukkit.craftbukkit.inventory;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import com.google.common.collect.ImmutableMap.Builder;
+import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;