BY_NAME = Maps.newHashMap();
- private final int maxStack;
+ private int maxStack; // PandaSpigot - Make non-final
private final short durability;
private Material(final int id) {
@@ -516,6 +516,21 @@ public enum Material {
return maxStack;
}
+ // PandaSpigot start - Add setMaxStackSize()
+ /**
+ * Sets the maximum amount of this material that can be held in a stack.
+ *
+ * This method is for internal use only. Use at your own risk.
+ *
+ * @param maxStack The new maximum stack size for this material.
+ * @deprecated For internal use only.
+ */
+ @Deprecated
+ public void setMaxStackSize(int maxStack) {
+ this.maxStack = maxStack;
+ }
+ // PandaSpigot end
+
/**
* Gets the maximum durability of this material
*
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/NetherWartsState.java b/eSpigot-API/src/main/java/org/bukkit/NetherWartsState.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/NetherWartsState.java
rename to eSpigot-API/src/main/java/org/bukkit/NetherWartsState.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Note.java b/eSpigot-API/src/main/java/org/bukkit/Note.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/Note.java
rename to eSpigot-API/src/main/java/org/bukkit/Note.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java b/eSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java
rename to eSpigot-API/src/main/java/org/bukkit/OfflinePlayer.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/PortalType.java b/eSpigot-API/src/main/java/org/bukkit/PortalType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/PortalType.java
rename to eSpigot-API/src/main/java/org/bukkit/PortalType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Rotation.java b/eSpigot-API/src/main/java/org/bukkit/Rotation.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/Rotation.java
rename to eSpigot-API/src/main/java/org/bukkit/Rotation.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/SandstoneType.java b/eSpigot-API/src/main/java/org/bukkit/SandstoneType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/SandstoneType.java
rename to eSpigot-API/src/main/java/org/bukkit/SandstoneType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Server.java b/eSpigot-API/src/main/java/org/bukkit/Server.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/Server.java
rename to eSpigot-API/src/main/java/org/bukkit/Server.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/SkullType.java b/eSpigot-API/src/main/java/org/bukkit/SkullType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/SkullType.java
rename to eSpigot-API/src/main/java/org/bukkit/SkullType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Sound.java b/eSpigot-API/src/main/java/org/bukkit/Sound.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/Sound.java
rename to eSpigot-API/src/main/java/org/bukkit/Sound.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Statistic.java b/eSpigot-API/src/main/java/org/bukkit/Statistic.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/Statistic.java
rename to eSpigot-API/src/main/java/org/bukkit/Statistic.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/TravelAgent.java b/eSpigot-API/src/main/java/org/bukkit/TravelAgent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/TravelAgent.java
rename to eSpigot-API/src/main/java/org/bukkit/TravelAgent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/TreeSpecies.java b/eSpigot-API/src/main/java/org/bukkit/TreeSpecies.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/TreeSpecies.java
rename to eSpigot-API/src/main/java/org/bukkit/TreeSpecies.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/TreeType.java b/eSpigot-API/src/main/java/org/bukkit/TreeType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/TreeType.java
rename to eSpigot-API/src/main/java/org/bukkit/TreeType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/UnsafeValues.java b/eSpigot-API/src/main/java/org/bukkit/UnsafeValues.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/UnsafeValues.java
rename to eSpigot-API/src/main/java/org/bukkit/UnsafeValues.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Utility.java b/eSpigot-API/src/main/java/org/bukkit/Utility.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/Utility.java
rename to eSpigot-API/src/main/java/org/bukkit/Utility.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/Warning.java b/eSpigot-API/src/main/java/org/bukkit/Warning.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/Warning.java
rename to eSpigot-API/src/main/java/org/bukkit/Warning.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WeatherType.java b/eSpigot-API/src/main/java/org/bukkit/WeatherType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/WeatherType.java
rename to eSpigot-API/src/main/java/org/bukkit/WeatherType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/World.java b/eSpigot-API/src/main/java/org/bukkit/World.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/World.java
rename to eSpigot-API/src/main/java/org/bukkit/World.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WorldBorder.java b/eSpigot-API/src/main/java/org/bukkit/WorldBorder.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/WorldBorder.java
rename to eSpigot-API/src/main/java/org/bukkit/WorldBorder.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WorldCreator.java b/eSpigot-API/src/main/java/org/bukkit/WorldCreator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/WorldCreator.java
rename to eSpigot-API/src/main/java/org/bukkit/WorldCreator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/WorldType.java b/eSpigot-API/src/main/java/org/bukkit/WorldType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/WorldType.java
rename to eSpigot-API/src/main/java/org/bukkit/WorldType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Banner.java b/eSpigot-API/src/main/java/org/bukkit/block/Banner.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Banner.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Banner.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Beacon.java b/eSpigot-API/src/main/java/org/bukkit/block/Beacon.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Beacon.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Beacon.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Biome.java b/eSpigot-API/src/main/java/org/bukkit/block/Biome.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Biome.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Biome.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Block.java b/eSpigot-API/src/main/java/org/bukkit/block/Block.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Block.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Block.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/BlockFace.java b/eSpigot-API/src/main/java/org/bukkit/block/BlockFace.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/BlockFace.java
rename to eSpigot-API/src/main/java/org/bukkit/block/BlockFace.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/BlockState.java b/eSpigot-API/src/main/java/org/bukkit/block/BlockState.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/BlockState.java
rename to eSpigot-API/src/main/java/org/bukkit/block/BlockState.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java b/eSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java
rename to eSpigot-API/src/main/java/org/bukkit/block/BrewingStand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Chest.java b/eSpigot-API/src/main/java/org/bukkit/block/Chest.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Chest.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Chest.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java b/eSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java
rename to eSpigot-API/src/main/java/org/bukkit/block/CommandBlock.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java b/eSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java
rename to eSpigot-API/src/main/java/org/bukkit/block/ContainerBlock.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java b/eSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java
rename to eSpigot-API/src/main/java/org/bukkit/block/CreatureSpawner.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Dispenser.java b/eSpigot-API/src/main/java/org/bukkit/block/Dispenser.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Dispenser.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Dispenser.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java b/eSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java
rename to eSpigot-API/src/main/java/org/bukkit/block/DoubleChest.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Dropper.java b/eSpigot-API/src/main/java/org/bukkit/block/Dropper.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Dropper.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Dropper.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Furnace.java b/eSpigot-API/src/main/java/org/bukkit/block/Furnace.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Furnace.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Furnace.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Hopper.java b/eSpigot-API/src/main/java/org/bukkit/block/Hopper.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Hopper.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Hopper.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Jukebox.java b/eSpigot-API/src/main/java/org/bukkit/block/Jukebox.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Jukebox.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Jukebox.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java b/eSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java
rename to eSpigot-API/src/main/java/org/bukkit/block/NoteBlock.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java b/eSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java
rename to eSpigot-API/src/main/java/org/bukkit/block/PistonMoveReaction.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Sign.java b/eSpigot-API/src/main/java/org/bukkit/block/Sign.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Sign.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Sign.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/Skull.java b/eSpigot-API/src/main/java/org/bukkit/block/Skull.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/Skull.java
rename to eSpigot-API/src/main/java/org/bukkit/block/Skull.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java b/eSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java
rename to eSpigot-API/src/main/java/org/bukkit/block/banner/Pattern.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java b/eSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java
rename to eSpigot-API/src/main/java/org/bukkit/block/banner/PatternType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java
rename to eSpigot-API/src/main/java/org/bukkit/command/BlockCommandSender.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/Command.java b/eSpigot-API/src/main/java/org/bukkit/command/Command.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/Command.java
rename to eSpigot-API/src/main/java/org/bukkit/command/Command.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandException.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandException.java
rename to eSpigot-API/src/main/java/org/bukkit/command/CommandException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java
rename to eSpigot-API/src/main/java/org/bukkit/command/CommandExecutor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandMap.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandMap.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandMap.java
rename to eSpigot-API/src/main/java/org/bukkit/command/CommandMap.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/CommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/CommandSender.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/CommandSender.java
rename to eSpigot-API/src/main/java/org/bukkit/command/CommandSender.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java
rename to eSpigot-API/src/main/java/org/bukkit/command/ConsoleCommandSender.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/eSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java
rename to eSpigot-API/src/main/java/org/bukkit/command/FormattedCommandAlias.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java b/eSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java
rename to eSpigot-API/src/main/java/org/bukkit/command/MultipleCommandAlias.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/PluginCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java b/eSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java
rename to eSpigot-API/src/main/java/org/bukkit/command/PluginCommandYamlParser.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/PluginIdentifiableCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java
rename to eSpigot-API/src/main/java/org/bukkit/command/ProxiedCommandSender.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java b/eSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java
rename to eSpigot-API/src/main/java/org/bukkit/command/RemoteConsoleCommandSender.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java b/eSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java
rename to eSpigot-API/src/main/java/org/bukkit/command/SimpleCommandMap.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java b/eSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java
rename to eSpigot-API/src/main/java/org/bukkit/command/TabCommandExecutor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java b/eSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java
rename to eSpigot-API/src/main/java/org/bukkit/command/TabCompleter.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java b/eSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java
rename to eSpigot-API/src/main/java/org/bukkit/command/TabExecutor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/AchievementCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BanCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BanIpCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BanListCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/BukkitCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ClearCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/DefaultGameModeCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/DeopCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/DifficultyCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/EffectCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/EnchantCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ExpCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/GameModeCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/GameRuleCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/GiveCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/HelpCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/KickCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/KillCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ListCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/MeCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/OpCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PardonIpCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PlaySoundCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOffCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SaveOnCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SayCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ScoreboardCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SeedCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SetIdleTimeoutCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SetWorldSpawnCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SpawnpointCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/SpreadPlayersCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/StopCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TeleportCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TellCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TestForCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TimeCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/ToggleDownfallCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/VanillaCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java
similarity index 92%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java
index ff02ff6..f708c81 100644
--- a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java
+++ b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java
@@ -31,11 +31,7 @@ public class VersionCommand extends BukkitCommand {
}
if (args.length == 0) {
- String[] message = new String[] {
- "§3This server is running §b§leSpigot§3 by the ElevateMC development team. Version §b§l1.8.9",
- };
-
- sender.sendMessage(message);
+ sender.sendMessage(ChatColor.DARK_AQUA + "This server is running " + ChatColor.AQUA + ChatColor.BOLD + "eSpigot" + ChatColor.DARK_AQUA +" by the ElevateMC development team. Version " + ChatColor.AQUA + ChatColor.BOLD + "1.8.9");
} else {
StringBuilder name = new StringBuilder();
@@ -76,7 +72,7 @@ public class VersionCommand extends BukkitCommand {
sender.sendMessage(ChatColor.AQUA + desc.getName() + ChatColor.DARK_AQUA + " version " + ChatColor.AQUA + desc.getVersion());
if (desc.getDescription() != null) {
- sender.sendMessage(desc.getDescription());
+ sender.sendMessage(ChatColor.DARK_AQUA + "Description: " + ChatColor.AQUA + desc.getDescription());
}
if (desc.getWebsite() != null) {
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/WeatherCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java
rename to eSpigot-API/src/main/java/org/bukkit/command/defaults/WhitelistCommand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/Configuration.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationOptions.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java b/eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/ConfigurationSection.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java b/eSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/InvalidConfigurationException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfiguration.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/MemoryConfigurationOptions.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java b/eSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/MemorySection.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfiguration.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/FileConfigurationOptions.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConstructor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java b/eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java b/eSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java
rename to eSpigot-API/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/BooleanPrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java b/eSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/Conversable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java b/eSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/Conversation.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationCanceller.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationContext.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationFactory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ConversationPrefix.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ExactMatchConversationCanceller.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/FixedSetPrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/InactivityConversationCanceller.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ManuallyAbandonedConversationCanceller.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/MessagePrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java b/eSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/NullConversationPrefix.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/NumericPrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/PlayerNamePrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java b/eSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/PluginNameConversationPrefix.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/Prompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/RegexPrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/StringPrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java b/eSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java
rename to eSpigot-API/src/main/java/org/bukkit/conversations/ValidatingPrompt.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java b/eSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java
rename to eSpigot-API/src/main/java/org/bukkit/enchantments/Enchantment.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java b/eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java
rename to eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
rename to eSpigot-API/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ageable.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ageable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ageable.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Ageable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ambient.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ambient.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ambient.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Ambient.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java b/eSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/AnimalTamer.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Animals.java b/eSpigot-API/src/main/java/org/bukkit/entity/Animals.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Animals.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Animals.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java b/eSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/ArmorStand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Arrow.java b/eSpigot-API/src/main/java/org/bukkit/entity/Arrow.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Arrow.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Arrow.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Bat.java b/eSpigot-API/src/main/java/org/bukkit/entity/Bat.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Bat.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Bat.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Blaze.java b/eSpigot-API/src/main/java/org/bukkit/entity/Blaze.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Blaze.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Blaze.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Boat.java b/eSpigot-API/src/main/java/org/bukkit/entity/Boat.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Boat.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Boat.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java b/eSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/CaveSpider.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Chicken.java b/eSpigot-API/src/main/java/org/bukkit/entity/Chicken.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Chicken.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Chicken.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java b/eSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/ComplexEntityPart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java b/eSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/ComplexLivingEntity.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Cow.java b/eSpigot-API/src/main/java/org/bukkit/entity/Cow.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Cow.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Cow.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Creature.java b/eSpigot-API/src/main/java/org/bukkit/entity/Creature.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Creature.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Creature.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java b/eSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/CreatureType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Creeper.java b/eSpigot-API/src/main/java/org/bukkit/entity/Creeper.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Creeper.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Creeper.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Damageable.java b/eSpigot-API/src/main/java/org/bukkit/entity/Damageable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Damageable.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Damageable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Egg.java b/eSpigot-API/src/main/java/org/bukkit/entity/Egg.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Egg.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Egg.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderCrystal.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderDragon.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderDragonPart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderPearl.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java b/eSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/EnderSignal.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Enderman.java b/eSpigot-API/src/main/java/org/bukkit/entity/Enderman.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Enderman.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Enderman.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Endermite.java b/eSpigot-API/src/main/java/org/bukkit/entity/Endermite.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Endermite.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Endermite.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Entity.java b/eSpigot-API/src/main/java/org/bukkit/entity/Entity.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Entity.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Entity.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/EntityType.java b/eSpigot-API/src/main/java/org/bukkit/entity/EntityType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/EntityType.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/EntityType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java b/eSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/ExperienceOrb.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Explosive.java b/eSpigot-API/src/main/java/org/bukkit/entity/Explosive.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Explosive.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Explosive.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java b/eSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/FallingBlock.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java b/eSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/FallingSand.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Fireball.java b/eSpigot-API/src/main/java/org/bukkit/entity/Fireball.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Fireball.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Fireball.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Firework.java b/eSpigot-API/src/main/java/org/bukkit/entity/Firework.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Firework.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Firework.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Fish.java b/eSpigot-API/src/main/java/org/bukkit/entity/Fish.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Fish.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Fish.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/FishHook.java b/eSpigot-API/src/main/java/org/bukkit/entity/FishHook.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/FishHook.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/FishHook.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Flying.java b/eSpigot-API/src/main/java/org/bukkit/entity/Flying.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Flying.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Flying.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ghast.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ghast.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ghast.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Ghast.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Giant.java b/eSpigot-API/src/main/java/org/bukkit/entity/Giant.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Giant.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Giant.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Golem.java b/eSpigot-API/src/main/java/org/bukkit/entity/Golem.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Golem.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Golem.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Guardian.java b/eSpigot-API/src/main/java/org/bukkit/entity/Guardian.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Guardian.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Guardian.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Hanging.java b/eSpigot-API/src/main/java/org/bukkit/entity/Hanging.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Hanging.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Hanging.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Horse.java b/eSpigot-API/src/main/java/org/bukkit/entity/Horse.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Horse.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Horse.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java b/eSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/HumanEntity.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java b/eSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/IronGolem.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Item.java b/eSpigot-API/src/main/java/org/bukkit/entity/Item.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Item.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Item.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java b/eSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/ItemFrame.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java b/eSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/LargeFireball.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java b/eSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/LeashHitch.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java b/eSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/LightningStrike.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java b/eSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/LivingEntity.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java b/eSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/MagmaCube.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Minecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/Minecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Minecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Minecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Monster.java b/eSpigot-API/src/main/java/org/bukkit/entity/Monster.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Monster.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Monster.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java b/eSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/MushroomCow.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/NPC.java b/eSpigot-API/src/main/java/org/bukkit/entity/NPC.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/NPC.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/NPC.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java b/eSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Ocelot.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Painting.java b/eSpigot-API/src/main/java/org/bukkit/entity/Painting.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Painting.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Painting.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Pig.java b/eSpigot-API/src/main/java/org/bukkit/entity/Pig.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Pig.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Pig.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java b/eSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/PigZombie.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Player.java b/eSpigot-API/src/main/java/org/bukkit/entity/Player.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Player.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Player.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/PoweredMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Projectile.java b/eSpigot-API/src/main/java/org/bukkit/entity/Projectile.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Projectile.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Projectile.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java b/eSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Rabbit.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Sheep.java b/eSpigot-API/src/main/java/org/bukkit/entity/Sheep.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Sheep.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Sheep.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java b/eSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Silverfish.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java b/eSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Skeleton.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Slime.java b/eSpigot-API/src/main/java/org/bukkit/entity/Slime.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Slime.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Slime.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java b/eSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/SmallFireball.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Snowball.java b/eSpigot-API/src/main/java/org/bukkit/entity/Snowball.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Snowball.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Snowball.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Snowman.java b/eSpigot-API/src/main/java/org/bukkit/entity/Snowman.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Snowman.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Snowman.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Spider.java b/eSpigot-API/src/main/java/org/bukkit/entity/Spider.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Spider.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Spider.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Squid.java b/eSpigot-API/src/main/java/org/bukkit/entity/Squid.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Squid.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Squid.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/StorageMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java b/eSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/TNTPrimed.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Tameable.java b/eSpigot-API/src/main/java/org/bukkit/entity/Tameable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Tameable.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Tameable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java b/eSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/ThrownExpBottle.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java b/eSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/ThrownPotion.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java b/eSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Vehicle.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Villager.java b/eSpigot-API/src/main/java/org/bukkit/entity/Villager.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Villager.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Villager.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java b/eSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/WaterMob.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Weather.java b/eSpigot-API/src/main/java/org/bukkit/entity/Weather.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Weather.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Weather.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Witch.java b/eSpigot-API/src/main/java/org/bukkit/entity/Witch.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Witch.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Witch.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Wither.java b/eSpigot-API/src/main/java/org/bukkit/entity/Wither.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Wither.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Wither.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java b/eSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/WitherSkull.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Wolf.java b/eSpigot-API/src/main/java/org/bukkit/entity/Wolf.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Wolf.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Wolf.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/Zombie.java b/eSpigot-API/src/main/java/org/bukkit/entity/Zombie.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/Zombie.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/Zombie.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/ExplosiveMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/PoweredMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/RideableMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/SpawnerMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java b/eSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java
rename to eSpigot-API/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/Cancellable.java b/eSpigot-API/src/main/java/org/bukkit/event/Cancellable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/Cancellable.java
rename to eSpigot-API/src/main/java/org/bukkit/event/Cancellable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/Event.java b/eSpigot-API/src/main/java/org/bukkit/event/Event.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/Event.java
rename to eSpigot-API/src/main/java/org/bukkit/event/Event.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/EventException.java b/eSpigot-API/src/main/java/org/bukkit/event/EventException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/EventException.java
rename to eSpigot-API/src/main/java/org/bukkit/event/EventException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/EventHandler.java b/eSpigot-API/src/main/java/org/bukkit/event/EventHandler.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/EventHandler.java
rename to eSpigot-API/src/main/java/org/bukkit/event/EventHandler.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/EventPriority.java b/eSpigot-API/src/main/java/org/bukkit/event/EventPriority.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/EventPriority.java
rename to eSpigot-API/src/main/java/org/bukkit/event/EventPriority.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/HandlerList.java b/eSpigot-API/src/main/java/org/bukkit/event/HandlerList.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/HandlerList.java
rename to eSpigot-API/src/main/java/org/bukkit/event/HandlerList.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/Listener.java b/eSpigot-API/src/main/java/org/bukkit/event/Listener.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/Listener.java
rename to eSpigot-API/src/main/java/org/bukkit/event/Listener.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/Action.java b/eSpigot-API/src/main/java/org/bukkit/event/block/Action.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/Action.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/Action.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockBreakEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockBurnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockDamageEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockDispenseEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockExpEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockFadeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockFormEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockFromToEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockGrowEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPhysicsEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockRedstoneEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/BlockSpreadEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/EntityBlockFormEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/LeavesDecayEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/NotePlayEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/block/SignChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/CreatureSpawnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/CreeperPowerEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityBreakDoorEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityChangeBlockEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByBlockEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustByEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCombustEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityInteractEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityRegainHealthEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTameEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTargetLivingEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityTeleportEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/EntityUnleashEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ExpBottleEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ExplosionPrimeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/FireworkExplodeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/FoodLevelChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/HorseJumpEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ItemMergeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ItemSpawnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PigZapEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectAddEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExpireEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectExtendEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionEffectRemoveEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileHitEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/ProjectileLaunchEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SheepDyeWoolEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SheepRegrowWoolEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SlimeSplitEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/entity/SpawnerSpawnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakByEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingBreakEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/BrewEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/ClickType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/CraftItemEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/DragType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceBurnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/FurnaceSmeltEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryAction.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryClickEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryCreativeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryInteractEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryMoveItemEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryPickupItemEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/InventoryType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/inventory/PrepareItemCraftEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/painting/PaintingPlaceEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAchievementAwardedEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerAnimationType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChangedWorldEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChannelEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEditBookEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerFishEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInitialSpawnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractAtEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInteractEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerInventoryEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemBreakEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemConsumeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemDamageEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerItemHeldEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerJoinEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLocaleChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerMoveEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPickupItemEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerQuitEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRegisterChannelEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerRespawnEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerStatisticIncrementEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerTeleportEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleFlightEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSneakEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerToggleSprintEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerUnregisterChannelEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/player/PlayerVelocityEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/MapInitializeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/PluginDisableEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/PluginEnableEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/PluginEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/RemoteServerCommandEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServerCommandEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServerEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServiceEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleBlockCollisionEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCollisionEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleCreateEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDamageEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEnterEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEntityCollisionEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleExitEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleMoveEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/vehicle/VehicleUpdateEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/weather/LightningStrikeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/weather/WeatherEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkLoadEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkPopulateEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/ChunkUnloadEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/PortalCreateEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/SpawnChangeEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/StructureGrowEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldInitEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldLoadEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldSaveEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java b/eSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java
rename to eSpigot-API/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java b/eSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java
rename to eSpigot-API/src/main/java/org/bukkit/generator/BlockPopulator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java b/eSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java
rename to eSpigot-API/src/main/java/org/bukkit/generator/ChunkGenerator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java b/eSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java
rename to eSpigot-API/src/main/java/org/bukkit/help/GenericCommandHelpTopic.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpMap.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpMap.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpMap.java
rename to eSpigot-API/src/main/java/org/bukkit/help/HelpMap.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java
rename to eSpigot-API/src/main/java/org/bukkit/help/HelpTopic.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java
rename to eSpigot-API/src/main/java/org/bukkit/help/HelpTopicComparator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java b/eSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java
rename to eSpigot-API/src/main/java/org/bukkit/help/HelpTopicFactory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java b/eSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java
rename to eSpigot-API/src/main/java/org/bukkit/help/IndexHelpTopic.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/AnvilInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/BeaconInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/BrewerInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/CraftingInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/DoubleChestInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/EnchantingInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java b/eSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/EntityEquipment.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java b/eSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/EquipmentSlot.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/FurnaceRecipe.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/HorseInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/Inventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java b/eSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/InventoryHolder.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java b/eSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/InventoryView.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/ItemFactory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/ItemFlag.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/ItemStack.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/MerchantInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java b/eSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/PlayerInventory.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/Recipe.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/ShapedRecipe.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/eSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/BannerMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/BlockStateMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/BookMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkEffectMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/ItemMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/LeatherArmorMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/MapMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/PotionMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/Repairable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java b/eSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
rename to eSpigot-API/src/main/java/org/bukkit/inventory/meta/SkullMeta.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java b/eSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MapCanvas.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapCursor.java b/eSpigot-API/src/main/java/org/bukkit/map/MapCursor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapCursor.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MapCursor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java b/eSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MapCursorCollection.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapFont.java b/eSpigot-API/src/main/java/org/bukkit/map/MapFont.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapFont.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MapFont.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapPalette.java b/eSpigot-API/src/main/java/org/bukkit/map/MapPalette.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapPalette.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MapPalette.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java b/eSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MapRenderer.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MapView.java b/eSpigot-API/src/main/java/org/bukkit/map/MapView.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MapView.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MapView.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java b/eSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java
rename to eSpigot-API/src/main/java/org/bukkit/map/MinecraftFont.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Attachable.java b/eSpigot-API/src/main/java/org/bukkit/material/Attachable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Attachable.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Attachable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Banner.java b/eSpigot-API/src/main/java/org/bukkit/material/Banner.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Banner.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Banner.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Bed.java b/eSpigot-API/src/main/java/org/bukkit/material/Bed.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Bed.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Bed.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Button.java b/eSpigot-API/src/main/java/org/bukkit/material/Button.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Button.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Button.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Cake.java b/eSpigot-API/src/main/java/org/bukkit/material/Cake.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Cake.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Cake.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Cauldron.java b/eSpigot-API/src/main/java/org/bukkit/material/Cauldron.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Cauldron.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Cauldron.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Chest.java b/eSpigot-API/src/main/java/org/bukkit/material/Chest.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Chest.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Chest.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Coal.java b/eSpigot-API/src/main/java/org/bukkit/material/Coal.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Coal.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Coal.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java b/eSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java
rename to eSpigot-API/src/main/java/org/bukkit/material/CocoaPlant.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Colorable.java b/eSpigot-API/src/main/java/org/bukkit/material/Colorable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Colorable.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Colorable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Command.java b/eSpigot-API/src/main/java/org/bukkit/material/Command.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Command.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Command.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Crops.java b/eSpigot-API/src/main/java/org/bukkit/material/Crops.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Crops.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Crops.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java b/eSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java
rename to eSpigot-API/src/main/java/org/bukkit/material/DetectorRail.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Diode.java b/eSpigot-API/src/main/java/org/bukkit/material/Diode.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Diode.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Diode.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Directional.java b/eSpigot-API/src/main/java/org/bukkit/material/Directional.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Directional.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Directional.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java b/eSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java
rename to eSpigot-API/src/main/java/org/bukkit/material/DirectionalContainer.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Dispenser.java b/eSpigot-API/src/main/java/org/bukkit/material/Dispenser.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Dispenser.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Dispenser.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Door.java b/eSpigot-API/src/main/java/org/bukkit/material/Door.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Door.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Door.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Dye.java b/eSpigot-API/src/main/java/org/bukkit/material/Dye.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Dye.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Dye.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/EnderChest.java b/eSpigot-API/src/main/java/org/bukkit/material/EnderChest.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/EnderChest.java
rename to eSpigot-API/src/main/java/org/bukkit/material/EnderChest.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java b/eSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java
rename to eSpigot-API/src/main/java/org/bukkit/material/ExtendedRails.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java b/eSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java
rename to eSpigot-API/src/main/java/org/bukkit/material/FlowerPot.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Furnace.java b/eSpigot-API/src/main/java/org/bukkit/material/Furnace.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Furnace.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Furnace.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java b/eSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java
rename to eSpigot-API/src/main/java/org/bukkit/material/FurnaceAndDispenser.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Gate.java b/eSpigot-API/src/main/java/org/bukkit/material/Gate.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Gate.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Gate.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Ladder.java b/eSpigot-API/src/main/java/org/bukkit/material/Ladder.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Ladder.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Ladder.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Leaves.java b/eSpigot-API/src/main/java/org/bukkit/material/Leaves.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Leaves.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Leaves.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Lever.java b/eSpigot-API/src/main/java/org/bukkit/material/Lever.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Lever.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Lever.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/LongGrass.java b/eSpigot-API/src/main/java/org/bukkit/material/LongGrass.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/LongGrass.java
rename to eSpigot-API/src/main/java/org/bukkit/material/LongGrass.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/MaterialData.java b/eSpigot-API/src/main/java/org/bukkit/material/MaterialData.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/MaterialData.java
rename to eSpigot-API/src/main/java/org/bukkit/material/MaterialData.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java b/eSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java
rename to eSpigot-API/src/main/java/org/bukkit/material/MonsterEggs.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Mushroom.java b/eSpigot-API/src/main/java/org/bukkit/material/Mushroom.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Mushroom.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Mushroom.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java b/eSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java
rename to eSpigot-API/src/main/java/org/bukkit/material/NetherWarts.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Openable.java b/eSpigot-API/src/main/java/org/bukkit/material/Openable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Openable.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Openable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java b/eSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java
rename to eSpigot-API/src/main/java/org/bukkit/material/PistonBaseMaterial.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java b/eSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java
rename to eSpigot-API/src/main/java/org/bukkit/material/PistonExtensionMaterial.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java b/eSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java
rename to eSpigot-API/src/main/java/org/bukkit/material/PoweredRail.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java b/eSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java
rename to eSpigot-API/src/main/java/org/bukkit/material/PressurePlate.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java b/eSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java
rename to eSpigot-API/src/main/java/org/bukkit/material/PressureSensor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java b/eSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Pumpkin.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Rails.java b/eSpigot-API/src/main/java/org/bukkit/material/Rails.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Rails.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Rails.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Redstone.java b/eSpigot-API/src/main/java/org/bukkit/material/Redstone.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Redstone.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Redstone.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java b/eSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java
rename to eSpigot-API/src/main/java/org/bukkit/material/RedstoneTorch.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java b/eSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java
rename to eSpigot-API/src/main/java/org/bukkit/material/RedstoneWire.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Sandstone.java b/eSpigot-API/src/main/java/org/bukkit/material/Sandstone.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Sandstone.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Sandstone.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Sign.java b/eSpigot-API/src/main/java/org/bukkit/material/Sign.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Sign.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Sign.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java b/eSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java
rename to eSpigot-API/src/main/java/org/bukkit/material/SimpleAttachableMaterialData.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Skull.java b/eSpigot-API/src/main/java/org/bukkit/material/Skull.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Skull.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Skull.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java b/eSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java
rename to eSpigot-API/src/main/java/org/bukkit/material/SmoothBrick.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java b/eSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java
rename to eSpigot-API/src/main/java/org/bukkit/material/SpawnEgg.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Stairs.java b/eSpigot-API/src/main/java/org/bukkit/material/Stairs.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Stairs.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Stairs.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Step.java b/eSpigot-API/src/main/java/org/bukkit/material/Step.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Step.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Step.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java b/eSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java
rename to eSpigot-API/src/main/java/org/bukkit/material/TexturedMaterial.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Torch.java b/eSpigot-API/src/main/java/org/bukkit/material/Torch.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Torch.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Torch.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java b/eSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java
rename to eSpigot-API/src/main/java/org/bukkit/material/TrapDoor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Tree.java b/eSpigot-API/src/main/java/org/bukkit/material/Tree.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Tree.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Tree.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Tripwire.java b/eSpigot-API/src/main/java/org/bukkit/material/Tripwire.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Tripwire.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Tripwire.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java b/eSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java
rename to eSpigot-API/src/main/java/org/bukkit/material/TripwireHook.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Vine.java b/eSpigot-API/src/main/java/org/bukkit/material/Vine.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Vine.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Vine.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java b/eSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java
rename to eSpigot-API/src/main/java/org/bukkit/material/WoodenStep.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/material/Wool.java b/eSpigot-API/src/main/java/org/bukkit/material/Wool.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/material/Wool.java
rename to eSpigot-API/src/main/java/org/bukkit/material/Wool.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java b/eSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/FixedMetadataValue.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java b/eSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/LazyMetadataValue.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataConversionException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataEvaluationException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStore.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataStoreBase.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValue.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java b/eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java b/eSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java
rename to eSpigot-API/src/main/java/org/bukkit/metadata/Metadatable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java b/eSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/Permissible.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissibleBase.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/Permission.java b/eSpigot-API/src/main/java/org/bukkit/permissions/Permission.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/Permission.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/Permission.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachment.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionAttachmentInfo.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionDefault.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java b/eSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/PermissionRemovedExecutor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java b/eSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java
rename to eSpigot-API/src/main/java/org/bukkit/permissions/ServerOperator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/AuthorNagException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java b/eSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/EventExecutor.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/IllegalPluginAccessException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/InvalidDescriptionException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/InvalidPluginException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java b/eSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/Plugin.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginAwareness.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginBase.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoadOrder.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginLoader.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginLogger.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/PluginManager.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java b/eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredListener.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java b/eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/RegisteredServiceProvider.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java b/eSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/ServicePriority.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/ServicesManager.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/SimplePluginManager.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java b/eSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/SimpleServicesManager.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java b/eSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java b/eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/eSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ChannelNotRegisteredException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/MessageTooLargeException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/Messenger.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginChannelDirection.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListener.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageListenerRegistration.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/ReservedChannelException.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java b/eSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
rename to eSpigot-API/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/Potion.java b/eSpigot-API/src/main/java/org/bukkit/potion/Potion.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/potion/Potion.java
rename to eSpigot-API/src/main/java/org/bukkit/potion/Potion.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java
rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionBrewer.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java
rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionEffect.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java
rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java
rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionEffectTypeWrapper.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/potion/PotionType.java b/eSpigot-API/src/main/java/org/bukkit/potion/PotionType.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/potion/PotionType.java
rename to eSpigot-API/src/main/java/org/bukkit/potion/PotionType.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java b/eSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java
rename to eSpigot-API/src/main/java/org/bukkit/projectiles/BlockProjectileSource.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java b/eSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java
rename to eSpigot-API/src/main/java/org/bukkit/projectiles/ProjectileSource.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java
rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitRunnable.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java
rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitScheduler.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java
rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitTask.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java b/eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java
rename to eSpigot-API/src/main/java/org/bukkit/scheduler/BukkitWorker.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Criterias.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/DisplaySlot.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/NameTagVisibility.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Objective.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Score.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Scoreboard.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java b/eSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java
rename to eSpigot-API/src/main/java/org/bukkit/scoreboard/Team.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java b/eSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/BlockIterator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/BlockVector.java b/eSpigot-API/src/main/java/org/bukkit/util/BlockVector.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/BlockVector.java
rename to eSpigot-API/src/main/java/org/bukkit/util/BlockVector.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java b/eSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java
rename to eSpigot-API/src/main/java/org/bukkit/util/CachedServerIcon.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java b/eSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/ChatPaginator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java b/eSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java
rename to eSpigot-API/src/main/java/org/bukkit/util/EulerAngle.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/FileUtil.java b/eSpigot-API/src/main/java/org/bukkit/util/FileUtil.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/FileUtil.java
rename to eSpigot-API/src/main/java/org/bukkit/util/FileUtil.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java b/eSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java
rename to eSpigot-API/src/main/java/org/bukkit/util/Java15Compat.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java b/eSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java
rename to eSpigot-API/src/main/java/org/bukkit/util/NumberConversions.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/StringUtil.java b/eSpigot-API/src/main/java/org/bukkit/util/StringUtil.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/StringUtil.java
rename to eSpigot-API/src/main/java/org/bukkit/util/StringUtil.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/Vector.java b/eSpigot-API/src/main/java/org/bukkit/util/Vector.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/Vector.java
rename to eSpigot-API/src/main/java/org/bukkit/util/Vector.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java b/eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java
rename to eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java b/eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java
rename to eSpigot-API/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java b/eSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java
rename to eSpigot-API/src/main/java/org/bukkit/util/io/Wrapper.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/noise/NoiseGenerator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/noise/OctaveGenerator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java b/eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java
rename to eSpigot-API/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java b/eSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java
rename to eSpigot-API/src/main/java/org/bukkit/util/permissions/BroadcastPermissions.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java b/eSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java
rename to eSpigot-API/src/main/java/org/bukkit/util/permissions/CommandPermissions.java
diff --git a/TacoSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java b/eSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java
rename to eSpigot-API/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/Title.java b/eSpigot-API/src/main/java/org/github/paperspigot/Title.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/Title.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/Title.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java b/eSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java b/eSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerCommandException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerEventException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerInternalException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java
diff --git a/TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java b/eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java
rename to eSpigot-API/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java
diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java b/eSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java
rename to eSpigot-API/src/main/java/org/spigotmc/CustomTimingsHandler.java
diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java b/eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java
rename to eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java b/eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java
rename to eSpigot-API/src/main/java/org/spigotmc/event/entity/EntityMountEvent.java
diff --git a/TacoSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java b/eSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java
similarity index 100%
rename from TacoSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java
rename to eSpigot-API/src/main/java/org/spigotmc/event/player/PlayerSpawnLocationEvent.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/block/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/command/defaults/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/command/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/configuration/file/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/configuration/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/configuration/serialization/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/conversations/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/enchantments/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/entity/minecart/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/entity/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/block/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/enchantment/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/entity/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/hanging/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/inventory/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/painting/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/player/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/server/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/vehicle/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/weather/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/event/world/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/generator/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/help/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/inventory/meta/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/inventory/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/map/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/material/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/metadata/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/permissions/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml
rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/doc-files/permissions-example_plugin.yml
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/java/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/messaging/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/plugin/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/potion/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/projectiles/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/scheduler/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/scoreboard/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/util/io/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/util/noise/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/util/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java b/eSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java
rename to eSpigot-API/src/main/javadoc/org/bukkit/util/permissions/package-info.java
diff --git a/TacoSpigot-API/src/main/javadoc/overview.html b/eSpigot-API/src/main/javadoc/overview.html
similarity index 100%
rename from TacoSpigot-API/src/main/javadoc/overview.html
rename to eSpigot-API/src/main/javadoc/overview.html
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ArtTest.java b/eSpigot-API/src/test/java/org/bukkit/ArtTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/ArtTest.java
rename to eSpigot-API/src/test/java/org/bukkit/ArtTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java b/eSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java
rename to eSpigot-API/src/test/java/org/bukkit/BukkitMirrorTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ChatColorTest.java b/eSpigot-API/src/test/java/org/bukkit/ChatColorTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/ChatColorTest.java
rename to eSpigot-API/src/test/java/org/bukkit/ChatColorTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java b/eSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java
rename to eSpigot-API/src/test/java/org/bukkit/ChatPaginatorTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java b/eSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java
rename to eSpigot-API/src/test/java/org/bukkit/CoalTypeTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/ColorTest.java b/eSpigot-API/src/test/java/org/bukkit/ColorTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/ColorTest.java
rename to eSpigot-API/src/test/java/org/bukkit/ColorTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/CropStateTest.java b/eSpigot-API/src/test/java/org/bukkit/CropStateTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/CropStateTest.java
rename to eSpigot-API/src/test/java/org/bukkit/CropStateTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/DifficultyTest.java b/eSpigot-API/src/test/java/org/bukkit/DifficultyTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/DifficultyTest.java
rename to eSpigot-API/src/test/java/org/bukkit/DifficultyTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/DyeColorTest.java b/eSpigot-API/src/test/java/org/bukkit/DyeColorTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/DyeColorTest.java
rename to eSpigot-API/src/test/java/org/bukkit/DyeColorTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/EffectTest.java b/eSpigot-API/src/test/java/org/bukkit/EffectTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/EffectTest.java
rename to eSpigot-API/src/test/java/org/bukkit/EffectTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java b/eSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java
rename to eSpigot-API/src/test/java/org/bukkit/EntityEffectTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/GameModeTest.java b/eSpigot-API/src/test/java/org/bukkit/GameModeTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/GameModeTest.java
rename to eSpigot-API/src/test/java/org/bukkit/GameModeTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java b/eSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java
rename to eSpigot-API/src/test/java/org/bukkit/GrassSpeciesTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/InstrumentTest.java b/eSpigot-API/src/test/java/org/bukkit/InstrumentTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/InstrumentTest.java
rename to eSpigot-API/src/test/java/org/bukkit/InstrumentTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/LocationTest.java b/eSpigot-API/src/test/java/org/bukkit/LocationTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/LocationTest.java
rename to eSpigot-API/src/test/java/org/bukkit/LocationTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/MaterialTest.java b/eSpigot-API/src/test/java/org/bukkit/MaterialTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/MaterialTest.java
rename to eSpigot-API/src/test/java/org/bukkit/MaterialTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/NoteTest.java b/eSpigot-API/src/test/java/org/bukkit/NoteTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/NoteTest.java
rename to eSpigot-API/src/test/java/org/bukkit/NoteTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/TestServer.java b/eSpigot-API/src/test/java/org/bukkit/TestServer.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/TestServer.java
rename to eSpigot-API/src/test/java/org/bukkit/TestServer.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java b/eSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java
rename to eSpigot-API/src/test/java/org/bukkit/TreeSpeciesTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java b/eSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java
rename to eSpigot-API/src/test/java/org/bukkit/WorldTypeTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java
rename to eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java
rename to eSpigot-API/src/test/java/org/bukkit/configuration/ConfigurationTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java
rename to eSpigot-API/src/test/java/org/bukkit/configuration/MemoryConfigurationTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java
rename to eSpigot-API/src/test/java/org/bukkit/configuration/MemorySectionTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
rename to eSpigot-API/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java b/eSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
rename to eSpigot-API/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java b/eSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java
rename to eSpigot-API/src/test/java/org/bukkit/conversations/ConversationContextTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java b/eSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java
rename to eSpigot-API/src/test/java/org/bukkit/conversations/ConversationTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java b/eSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java
rename to eSpigot-API/src/test/java/org/bukkit/conversations/FakeConversable.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java b/eSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java
rename to eSpigot-API/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java b/eSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java
rename to eSpigot-API/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java b/eSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java
rename to eSpigot-API/src/test/java/org/bukkit/event/SyntheticEventTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/event/TestEvent.java b/eSpigot-API/src/test/java/org/bukkit/event/TestEvent.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/event/TestEvent.java
rename to eSpigot-API/src/test/java/org/bukkit/event/TestEvent.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java b/eSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java
rename to eSpigot-API/src/test/java/org/bukkit/materials/MaterialDataTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java
rename to eSpigot-API/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java
rename to eSpigot-API/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java
rename to eSpigot-API/src/test/java/org/bukkit/metadata/MetadataConversionTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java
rename to eSpigot-API/src/test/java/org/bukkit/metadata/MetadataStoreTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java b/eSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java
rename to eSpigot-API/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java b/eSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java
rename to eSpigot-API/src/test/java/org/bukkit/plugin/PluginManagerTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java b/eSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java
rename to eSpigot-API/src/test/java/org/bukkit/plugin/TestPlugin.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java b/eSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java
rename to eSpigot-API/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java b/eSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java
rename to eSpigot-API/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java b/eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java
rename to eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java b/eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java
rename to eSpigot-API/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java b/eSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java
rename to eSpigot-API/src/test/java/org/bukkit/potion/PotionTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java b/eSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java
rename to eSpigot-API/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java b/eSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java
rename to eSpigot-API/src/test/java/org/bukkit/util/StringUtilTest.java
diff --git a/TacoSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java b/eSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java
similarity index 100%
rename from TacoSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java
rename to eSpigot-API/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java
diff --git a/TacoSpigot-Server/.gitignore b/eSpigot-Server/.gitignore
similarity index 100%
rename from TacoSpigot-Server/.gitignore
rename to eSpigot-Server/.gitignore
diff --git a/eSpigot-Server/build.gradle.kts b/eSpigot-Server/build.gradle.kts
new file mode 100644
index 0000000..5a92e5a
--- /dev/null
+++ b/eSpigot-Server/build.gradle.kts
@@ -0,0 +1,154 @@
+import java.util.Date
+import java.text.SimpleDateFormat
+
+plugins {
+ java
+ `java-library`
+ id("com.github.johnrengelman.shadow") version "7.1.0"
+}
+
+repositories {
+ mavenCentral()
+ gradlePluginPortal()
+ maven(url = "https://libraries.minecraft.net")
+ maven(url = "https://oss.sonatype.org/content/groups/public")
+ maven(url = "https://hub.spigotmc.org/nexus/content/groups/public")
+ maven(url = "https://repo.velocitypowered.com/snapshots/")
+}
+
+val minecraftVersion = "1_8_R3"
+
+group = "com.elevatemc.espigot"
+version = "1.8.8-R0.1-SNAPSHOT"
+
+repositories {
+ maven(url = "https://libraries.minecraft.net")
+}
+
+dependencies {
+ implementation(project(":espigot-api"))
+
+ implementation("io.netty:netty-all:4.1.69.Final") // eSpigot - Update Netty to 4.1.x
+ implementation("com.mojang:authlib:1.5.21")
+ implementation("org.apache.logging.log4j:log4j-api:2.17.2")
+ implementation("org.apache.logging.log4j:log4j-core:2.17.2")
+ implementation("org.apache.commons:commons-lang3:3.12.0")
+ implementation("commons-io:commons-io:2.4")
+ implementation("commons-codec:commons-codec:1.9")
+ implementation("com.google.guava:guava:31.1-jre")
+ implementation("com.google.code.gson:gson:2.2.4")
+ implementation("net.sf.trove4j:trove4j:3.0.3")
+ implementation("net.sf.jopt-simple:jopt-simple:3.2")
+ implementation("org.xerial:sqlite-jdbc:3.7.2")
+ implementation("mysql:mysql-connector-java:5.1.14")
+ implementation("net.minecrell:terminalconsoleappender:1.3.0")
+ implementation("org.jline:jline-terminal-jansi:3.20.0")
+ implementation("it.unimi.dsi:fastutil:8.5.8")
+ implementation("com.velocitypowered:velocity-native:1.1.0-SNAPSHOT")
+ implementation("org.lz4:lz4-java:1.8.0")
+ implementation("com.github.luben:zstd-jni:1.5.2-3")
+ implementation("net.openhft:affinity:3.20.0")
+ implementation("net.jafama:jafama:2.3.2")
+
+
+ testImplementation("junit:junit:4.11")
+ testImplementation("org.hamcrest:hamcrest-library:1.3")
+
+ compileOnly("org.projectlombok:lombok:1.18.24")
+ annotationProcessor("org.projectlombok:lombok:1.18.24")
+}
+
+fun TaskContainer.registerRunTask(
+ name: String, block: JavaExec.() -> Unit
+): TaskProvider = register(name) {
+ group = "espigot"
+ standardInput = System.`in`
+ workingDir = rootProject.layout.projectDirectory.dir(
+ providers.gradleProperty("runWorkDir").forUseAtConfigurationTime().orElse("run")
+ ).get().asFile
+
+ if (project.hasProperty("disableWatchdog")) {
+ systemProperty("disable.watchdog", true)
+ }
+ doFirst {
+ workingDir.mkdirs()
+ }
+ block(this)
+}
+
+tasks {
+ withType().configureEach {
+ options.encoding = "UTF-8"
+ }
+
+ java {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+
+ val prepareTestServerDir by registering {
+ doLast {
+ mkdir("$buildDir/test-server")
+ }
+ }
+
+ test {
+ workingDir = file("$buildDir/test-server/")
+
+ dependsOn(prepareTestServerDir)
+ }
+
+ shadowJar {
+ mergeServiceFiles()
+ append("META-INF/io.netty.versions.properties")
+ transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer()) // eSpigot - Use TerminalConsoleAppender
+ archiveBaseName.set("espigot")
+ archiveClassifier.set("") // without "-all"
+ val cbLibsPkg = "org.bukkit.craftbukkit.libs"
+
+ relocate("joptsimple", "$cbLibsPkg.joptsimple")
+ relocate("jline", "$cbLibsPkg.jline")
+ relocate("org.ibex", "$cbLibsPkg.org.ibex")
+ relocate("org.gjt", "$cbLibsPkg.org.gjt")
+
+ relocate("org.bukkit.craftbukkit", "org.bukkit.craftbukkit.v${minecraftVersion}") {
+ exclude("org.bukkit.craftbukkit.Main*") // don't relocate main class
+ }
+ relocate("net.minecraft.server", "net.minecraft.server.v${minecraftVersion}")
+ }
+
+ named("build") {
+ dependsOn(named("shadowJar"))
+ }
+
+ test {
+ exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class", "org/bukkit/craftbukkit/inventory/ItemFactoryTest.class")
+ }
+
+ jar {
+ manifest {
+ val date = SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(Date())
+ attributes(
+ "Main-Class" to "org.bukkit.craftbukkit.Main",
+ "Implementation-Title" to "CraftBukkit",
+ "Implementation-Version" to "git-eSpigot-1.8.9",
+ "Implementation-Vendor" to date,
+ "Specification-Title" to "Bukkit",
+ "Specification-Version" to project.version,
+ "Specification-Vendor" to "Bukkit Team",
+ "Multi-Release" to true
+ )
+ }
+ }
+
+ registerRunTask("runShadow") {
+ description = "Spin up a test server from the shadowJar archiveFile"
+ classpath(shadowJar.flatMap { it.archiveFile })
+ }
+
+ registerRunTask("runDev") {
+ description = "Spin up a non-shaded non-relocated test server"
+ classpath = java.sourceSets.main.get().runtimeClasspath
+ mainClass.set("org.bukkit.craftbukkit.Main")
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java b/eSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java
rename to eSpigot-Server/src/main/java/co/aikar/timings/SpigotTimings.java
diff --git a/TacoSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/eSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java
rename to eSpigot-Server/src/main/java/co/aikar/timings/WorldTimingsHandler.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/ChunkSectionSnapshot.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/CraftChunkSnapshot.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/chunk/WeakChunkCache.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/command/KnockbackCommand.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java
similarity index 62%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java
index cd1829f..578e01b 100644
--- a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java
+++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/command/TicksPerSecondCommand.java
@@ -1,22 +1,12 @@
package com.elevatemc.spigot.command;
-import com.elevatemc.spigot.util.DateUtil;
import com.velocitypowered.natives.util.Natives;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.WorldServer;
import org.apache.commons.lang.StringUtils;
-import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
-import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
-import org.bukkit.craftbukkit.entity.CraftEntity;
-import org.bukkit.entity.Entity;
-import org.spigotmc.ActivationRange;
-
-import java.lang.management.ManagementFactory;
-import java.math.RoundingMode;
-import java.text.DecimalFormat;
public class TicksPerSecondCommand extends Command {
@@ -59,19 +49,28 @@ public class TicksPerSecondCommand extends Command {
totalEntities += server.entityList.size();
}
- sb.append(ChatColor.WHITE).append("TPS from last 5s, 1m, 5m, 15m: ")
- .append(StringUtils.join(tpsAvg, ", ")).append("\n");
- sb.append(ChatColor.WHITE).append("Full Tick: ")
- .append(formatMs(MinecraftServer.getLastTickTime())).append(" ms").append("\n");
- sb.append(ChatColor.WHITE)
- .append("Online Players: ").append(ChatColor.AQUA).append(totalPlayers).append(ChatColor.WHITE)
- .append(" ❘ Total Entities: ").append(ChatColor.AQUA).append(totalEntities).append(ChatColor.WHITE)
- .append(" ❘ Chunks: ").append(ChatColor.AQUA).append(totalChunks).append("\n");
- sb.append(ChatColor.WHITE).append("Active Threads: ").append(ChatColor.AQUA).append(Thread.activeCount())
- .append(ChatColor.WHITE).append(" ❘ Daemon Threads: ").append(ChatColor.AQUA)
- .append(Thread.getAllStackTraces().keySet().stream().filter(Thread::isDaemon).count())
+ sb.append(ChatColor.DARK_AQUA).append("TPS from last 5s, 1m, 5m, 15m: ")
+ .append(StringUtils.join(tpsAvg, ", "))
.append("\n");
- sb.append(ChatColor.WHITE).append("Memory Usage: ").append(ChatColor.AQUA)
+ sb.append(ChatColor.DARK_AQUA).append("Full Tick: ")
+ .append(formatMs(MinecraftServer.getLastTickTime())).append(" ms")
+ .append("\n");
+ sb.append(ChatColor.DARK_AQUA)
+ .append("Online Players: ").append(ChatColor.AQUA).append(totalPlayers).append(ChatColor.DARK_AQUA)
+ .append(" ❘ Total Entities: ").append(ChatColor.AQUA).append(totalEntities).append(ChatColor.DARK_AQUA)
+ .append(" ❘ Chunks: ").append(ChatColor.AQUA).append(totalChunks)
+ .append("\n");
+ sb.append(ChatColor.DARK_AQUA)
+ .append("Java Version: ").append(ChatColor.AQUA).append(getJavaVersion()).append(ChatColor.DARK_AQUA)
+ .append(" ❘ Compression: ").append(ChatColor.AQUA).append(Natives.compress.getLoadedVariant()).append(ChatColor.DARK_AQUA)
+ .append(" ❘ Cipher: ").append(ChatColor.AQUA).append(Natives.cipher.getLoadedVariant())
+ .append("\n");
+ sb.append(ChatColor.DARK_AQUA)
+ .append("Active Threads: ").append(ChatColor.AQUA).append(Thread.activeCount()).append(ChatColor.DARK_AQUA)
+ .append(" ❘ Daemon Threads: ").append(ChatColor.AQUA).append(Thread.getAllStackTraces().keySet().stream().filter(Thread::isDaemon).count())
+ .append("\n");
+ sb.append(ChatColor.DARK_AQUA)
+ .append("Memory Usage: ").append(ChatColor.AQUA)
.append(formatMem(usedMemory)).append("/").append(formatMem(maxMemory))
.append(" MB ").append("(").append(formatMem(freeMemory))
.append(" MB free)");
@@ -80,6 +79,18 @@ public class TicksPerSecondCommand extends Command {
return true;
}
+ private int getJavaVersion() {
+ String[] versionElements = System.getProperty("java.version").split("\\.");
+ int discard = Integer.parseInt(versionElements[0]);
+ int version;
+ if (discard == 1) {
+ version = Integer.parseInt(versionElements[1]);
+ } else {
+ version = discard;
+ }
+ return version;
+ }
+
private static String formatTps(double tps) // PaperSpigot - made static
{
return String.format("%s%s%s", (tps > 18.0 ? ChatColor.AQUA : tps > 16.0 ? ChatColor.YELLOW : ChatColor.RED), tps > 20.0 ? "*" : "", Math.min(Math.round(tps * 100.0) / 100.0, 20.0));
diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsole.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsole.java
new file mode 100644
index 0000000..3bed5d7
--- /dev/null
+++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsole.java
@@ -0,0 +1,39 @@
+package com.elevatemc.spigot.console;
+
+import net.minecraft.server.DedicatedServer;
+import net.minecrell.terminalconsole.SimpleTerminalConsole;
+import org.jline.reader.LineReader;
+import org.jline.reader.LineReaderBuilder;
+
+import java.nio.file.Paths;
+
+public class PandaConsole extends SimpleTerminalConsole {
+ private final DedicatedServer server;
+
+ public PandaConsole(DedicatedServer server) {
+ this.server = server;
+ }
+
+ @Override
+ protected boolean isRunning() {
+ return !this.server.isStopped() && this.server.isRunning();
+ }
+
+ @Override
+ protected void runCommand(String command) {
+ this.server.issueCommand(command, this.server);
+ }
+
+ @Override
+ protected void shutdown() {
+ this.server.safeShutdown();
+ }
+
+ @Override
+ protected LineReader buildReader(LineReaderBuilder builder) {
+ return super.buildReader(builder
+ .appName("eSpigot")
+ .variable(LineReader.HISTORY_FILE, Paths.get(".console_history"))
+ .completer(new PandaConsoleCompleter(this.server)));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCommandSender.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCommandSender.java
new file mode 100644
index 0000000..550edf4
--- /dev/null
+++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCommandSender.java
@@ -0,0 +1,15 @@
+package com.elevatemc.spigot.console;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.bukkit.craftbukkit.command.CraftConsoleCommandSender;
+
+public class PandaConsoleCommandSender extends CraftConsoleCommandSender {
+ private static final Logger LOGGER = LogManager.getRootLogger();
+
+ @Override
+ public void sendRawMessage(String message) {
+ // TerminalConsoleAppender supports color codes directly in log messages
+ LOGGER.info(message);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCompleter.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCompleter.java
new file mode 100644
index 0000000..17de12a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/console/PandaConsoleCompleter.java
@@ -0,0 +1,56 @@
+package com.elevatemc.spigot.console;
+
+import net.minecraft.server.DedicatedServer;
+import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.util.Waitable;
+import org.jline.reader.Candidate;
+import org.jline.reader.Completer;
+import org.jline.reader.LineReader;
+import org.jline.reader.ParsedLine;
+
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.logging.Level;
+
+public class PandaConsoleCompleter implements Completer {
+ private final DedicatedServer server;
+
+ public PandaConsoleCompleter(DedicatedServer server) {
+ this.server = server;
+ }
+
+ @Override
+ public void complete(LineReader reader, ParsedLine line, List candidates) {
+ CompletionWaiter waiter = new CompletionWaiter(line.line());
+ this.server.addMainThreadTask(waiter);
+
+ try {
+ List offers = waiter.get(); // wait until completions get processed on main thread
+
+ for (String offer : offers) {
+ if (offer.isEmpty()) continue;
+
+ candidates.add(new Candidate(offer));
+ }
+ } catch (ExecutionException e) {
+ this.server.server.getLogger().log(Level.WARNING, "Unhandled exception when tab completing", e);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ private class CompletionWaiter extends Waitable> {
+ private final String buffer;
+
+ private CompletionWaiter(String buffer) {
+ this.buffer = buffer;
+ }
+
+ @Override
+ protected List evaluate() {
+ final CraftServer server = PandaConsoleCompleter.this.server.server;
+
+ return server.getCommandMap().tabComplete(server.getConsoleSender(), this.buffer);
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java
similarity index 97%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java
index fbcfdd9..6b05c49 100644
--- a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java
+++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigot.java
@@ -46,7 +46,7 @@ public class eSpigot {
server.getCommandMap()
.register(command.getLabel(), "eSpigot", command);
- EXECUTOR_SERVICE.scheduleAtFixedRate(() -> MinecraftServer.getServer().aq().processFastPackets(), 5L, 5L, TimeUnit.MILLISECONDS);
+ EXECUTOR_SERVICE.scheduleAtFixedRate(() -> MinecraftServer.getServer().aq().processFastPackets(), 5L, 3L, TimeUnit.MILLISECONDS);
}
public void addPacketHandler(PacketHandler handler) {
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/eSpigotFeature.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/event/BlockDropItemsEvent.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerHealthChangeEvent.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/event/PlayerPearlRefundEvent.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/MovementHandler.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/handler/PacketHandler.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackHandler.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackModifier.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/KnockbackProfile.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/knockback/impl/AdvancedKnockbackProfile.java
diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntByteDecoder.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntByteDecoder.java
new file mode 100644
index 0000000..141ae45
--- /dev/null
+++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntByteDecoder.java
@@ -0,0 +1,51 @@
+// Original source: velocity
+package com.elevatemc.spigot.network;
+
+import io.netty.util.ByteProcessor;
+
+public class VarIntByteDecoder implements ByteProcessor {
+ private int readVarint;
+ private int bytesRead;
+ private DecodeResult result = DecodeResult.TOO_SHORT;
+
+ @Override
+ public boolean process(byte k) {
+ if (k == 0 && bytesRead == 0) {
+ // tentatively say it's invalid, but there's a possibility of redemption
+ result = DecodeResult.RUN_OF_ZEROES;
+ return true;
+ }
+ if (result == DecodeResult.RUN_OF_ZEROES) {
+ return false;
+ }
+ readVarint |= (k & 0x7F) << bytesRead++ * 7;
+ if (bytesRead > 3) {
+ result = DecodeResult.TOO_BIG;
+ return false;
+ }
+ if ((k & 0x80) != 128) {
+ result = DecodeResult.SUCCESS;
+ return false;
+ }
+ return true;
+ }
+
+ public int getReadVarint() {
+ return readVarint;
+ }
+
+ public int getBytesRead() {
+ return bytesRead;
+ }
+
+ public DecodeResult getResult() {
+ return result;
+ }
+
+ public enum DecodeResult {
+ SUCCESS,
+ TOO_SHORT,
+ TOO_BIG,
+ RUN_OF_ZEROES
+ }
+}
diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntUtil.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntUtil.java
new file mode 100644
index 0000000..4013383
--- /dev/null
+++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/network/VarIntUtil.java
@@ -0,0 +1,114 @@
+package com.elevatemc.spigot.network;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.handler.codec.CorruptedFrameException;
+
+public class VarIntUtil {
+ private static final int[] VARINT_EXACT_BYTE_LENGTHS = new int[33];
+
+ static {
+ for (int i = 0; i <= 32; ++i) {
+ VARINT_EXACT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d);
+ }
+ VARINT_EXACT_BYTE_LENGTHS[32] = 1; // Special case for the number 0.
+ }
+
+ /**
+ * Reads a Minecraft-style VarInt from the specified {@code buf}.
+ *
+ * @param buf the buffer to read from
+ * @return the decoded VarInt
+ */
+ public static int readVarInt(ByteBuf buf) {
+ int read = readVarIntSafely(buf);
+ if (read == Integer.MIN_VALUE) {
+ throw new CorruptedFrameException("Bad VarInt decoded");
+ }
+ return read;
+ }
+
+ /**
+ * Reads a Minecraft-style VarInt from the specified {@code buf}. The difference between this
+ * method and {@link #readVarInt(ByteBuf)} is that this function returns a sentinel value if the
+ * varint is invalid.
+ *
+ * @param buf the buffer to read from
+ * @return the decoded VarInt, or {@code Integer.MIN_VALUE} if the varint is invalid
+ */
+ public static int readVarIntSafely(ByteBuf buf) {
+ int i = 0;
+ int maxRead = Math.min(5, buf.readableBytes());
+ for (int j = 0; j < maxRead; j++) {
+ int k = buf.readByte();
+ i |= (k & 0x7F) << j * 7;
+ if ((k & 0x80) != 128) {
+ return i;
+ }
+ }
+ return Integer.MIN_VALUE;
+ }
+
+ /**
+ * Returns the exact byte size of {@code value} if it were encoded as a VarInt.
+ *
+ * @param value the value to encode
+ * @return the byte size of {@code value} if encoded as a VarInt
+ */
+ public static int varIntBytes(int value) {
+ return VARINT_EXACT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)];
+ }
+
+ /**
+ * Writes a Minecraft-style VarInt to the specified {@code buf}.
+ *
+ * @param buf the buffer to read from
+ * @param value the integer to write
+ */
+ public static void writeVarInt(ByteBuf buf, int value) {
+ // Peel the one and two byte count cases explicitly as they are the most common VarInt sizes
+ // that the proxy will write, to improve inlining.
+ if ((value & (0xFFFFFFFF << 7)) == 0) {
+ buf.writeByte(value);
+ } else if ((value & (0xFFFFFFFF << 14)) == 0) {
+ int w = (value & 0x7F | 0x80) << 8 | (value >>> 7);
+ buf.writeShort(w);
+ } else {
+ writeVarIntFull(buf, value);
+ }
+ }
+
+ private static void writeVarIntFull(ByteBuf buf, int value) {
+ // See https://steinborn.me/posts/performance/how-fast-can-you-write-a-varint/
+ if ((value & (0xFFFFFFFF << 7)) == 0) {
+ buf.writeByte(value);
+ } else if ((value & (0xFFFFFFFF << 14)) == 0) {
+ int w = (value & 0x7F | 0x80) << 8 | (value >>> 7);
+ buf.writeShort(w);
+ } else if ((value & (0xFFFFFFFF << 21)) == 0) {
+ int w = (value & 0x7F | 0x80) << 16 | ((value >>> 7) & 0x7F | 0x80) << 8 | (value >>> 14);
+ buf.writeMedium(w);
+ } else if ((value & (0xFFFFFFFF << 28)) == 0) {
+ int w = (value & 0x7F | 0x80) << 24 | (((value >>> 7) & 0x7F | 0x80) << 16)
+ | ((value >>> 14) & 0x7F | 0x80) << 8 | (value >>> 21);
+ buf.writeInt(w);
+ } else {
+ int w = (value & 0x7F | 0x80) << 24 | ((value >>> 7) & 0x7F | 0x80) << 16
+ | ((value >>> 14) & 0x7F | 0x80) << 8 | ((value >>> 21) & 0x7F | 0x80);
+ buf.writeInt(w);
+ buf.writeByte(value >>> 28);
+ }
+ }
+
+ /**
+ * Writes the specified {@code value} as a 21-bit Minecraft VarInt to the specified {@code buf}.
+ * The upper 11 bits will be discarded.
+ *
+ * @param buf the buffer to read from
+ * @param value the integer to write
+ */
+ public static void write21BitVarInt(ByteBuf buf, int value) {
+ // See https://steinborn.me/posts/performance/how-fast-can-you-write-a-varint/
+ int w = (value & 0x7F | 0x80) << 16 | ((value >>> 7) & 0x7F | 0x80) << 8 | (value >>> 14);
+ buf.writeMedium(w);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncNavigation.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinder.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/AsyncPathfinderNormal.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PathSearchThrottlerThread.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/PositionPathSearchType.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntry.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryEntity.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/cache/SearchCacheEntryPosition.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJob.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobEntity.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationEntity.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobNavigationPosition.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchJobPosition.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/pathsearch/jobs/PathSearchQueuingManager.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/NamePriorityThreadFactory.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/threading/ThreadingManager.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/CryptException.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Cuboid.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/DateUtil.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/Dictionary.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/FastRandom.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/SynchronizedIntHashMap.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/YamlConfig.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/AbstractTaskExecutor.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/Task.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/TaskExecutor.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/util/task/impl/ThreadTaskExecutor.java
diff --git a/TacoSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java
rename to eSpigot-Server/src/main/java/com/elevatemc/spigot/world/AutoSaveJob.java
diff --git a/eSpigot-Server/src/main/java/com/google/common/base/Objects.java b/eSpigot-Server/src/main/java/com/google/common/base/Objects.java
new file mode 100644
index 0000000..0101907
--- /dev/null
+++ b/eSpigot-Server/src/main/java/com/google/common/base/Objects.java
@@ -0,0 +1,451 @@
+/*
+ * Copyright (C) 2007 The Guava Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.common.base;
+
+import com.google.common.annotations.GwtCompatible;
+
+import javax.annotation.CheckReturnValue;
+import javax.annotation.Nullable;
+import java.util.Arrays;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Helper functions that can operate on any {@code Object}.
+ *
+ * See the Guava User Guide on writing
+ * {@code Object} methods with {@code Objects}.
+ *
+ * @author Laurence Gonsalves
+ * @since 2.0 (imported from Google Collections Library)
+ */
+@GwtCompatible
+public final class Objects {
+ private Objects() {}
+
+ /**
+ * Determines whether two possibly-null objects are equal. Returns:
+ *
+ *
+ * - {@code true} if {@code a} and {@code b} are both null.
+ *
- {@code true} if {@code a} and {@code b} are both non-null and they are
+ * equal according to {@link Object#equals(Object)}.
+ *
- {@code false} in all other situations.
+ *
+ *
+ * This assumes that any non-null objects passed to this function conform
+ * to the {@code equals()} contract.
+ */
+ @CheckReturnValue
+ public static boolean equal(@Nullable Object a, @Nullable Object b) {
+ return java.util.Objects.equals(a, b); // Nacho
+ }
+
+ /**
+ * Generates a hash code for multiple values. The hash code is generated by
+ * calling {@link Arrays#hashCode(Object[])}. Note that array arguments to
+ * this method, with the exception of a single Object array, do not get any
+ * special handling; their hash codes are based on identity and not contents.
+ *
+ *
This is useful for implementing {@link Object#hashCode()}. For example,
+ * in an object that has three properties, {@code x}, {@code y}, and
+ * {@code z}, one could write:
+ *
{@code
+ * public int hashCode() {
+ * return Objects.hashCode(getX(), getY(), getZ());
+ * }}
+ *
+ * Warning: When a single object is supplied, the returned hash code
+ * does not equal the hash code of that object.
+ */
+ public static int hashCode(@Nullable Object... objects) {
+ return Arrays.hashCode(objects);
+ }
+
+ // Nacho start
+ /**
+ * Creates an instance of {@link ToStringHelper}.
+ *
+ *
This is helpful for implementing {@link Object#toString()}.
+ * Specification by example:
{@code
+ * // Returns "ClassName{}"
+ * Objects.toStringHelper(this)
+ * .toString();
+ *
+ * // Returns "ClassName{x=1}"
+ * Objects.toStringHelper(this)
+ * .add("x", 1)
+ * .toString();
+ *
+ * // Returns "MyObject{x=1}"
+ * Objects.toStringHelper("MyObject")
+ * .add("x", 1)
+ * .toString();
+ *
+ * // Returns "ClassName{x=1, y=foo}"
+ * Objects.toStringHelper(this)
+ * .add("x", 1)
+ * .add("y", "foo")
+ * .toString();
+ *
+ * // Returns "ClassName{x=1}"
+ * Objects.toStringHelper(this)
+ * .omitNullValues()
+ * .add("x", 1)
+ * .add("y", null)
+ * .toString();
+ * }}
+ *
+ * Note that in GWT, class names are often obfuscated.
+ *
+ * @param self the object to generate the string for (typically {@code this}),
+ * used only for its class name
+ * @since 2.0
+ * @deprecated replaced by {@link MoreObjects#toStringHelper(Object)}
+ * @see MoreObjects#toStringHelper(Object)
+ */
+ @Deprecated
+ public static ToStringHelper toStringHelper(Object self) {
+ return new ToStringHelper(simpleName(self.getClass()));
+ }
+
+ /**
+ * Creates an instance of {@link ToStringHelper} in the same manner as
+ * {@link Objects#toStringHelper(Object)}, but using the name of {@code clazz}
+ * instead of using an instance's {@link Object#getClass()}.
+ *
+ *
Note that in GWT, class names are often obfuscated.
+ *
+ * @param clazz the {@link Class} of the instance
+ * @since 7.0 (source-compatible since 2.0)
+ * @deprecated replaced by {@link MoreObjects#toStringHelper(Class)}
+ * @see MoreObjects#toStringHelper(Class)
+ */
+ @Deprecated
+ public static ToStringHelper toStringHelper(Class> clazz) {
+ return new ToStringHelper(simpleName(clazz));
+ }
+
+ /**
+ * Creates an instance of {@link ToStringHelper} in the same manner as
+ * {@link Objects#toStringHelper(Object)}, but using {@code className} instead
+ * of using an instance's {@link Object#getClass()}.
+ *
+ * @param className the name of the instance type
+ * @since 7.0 (source-compatible since 2.0)
+ * @deprecated replaced by {@link MoreObjects#toStringHelper(String)}
+ * @see MoreObjects#toStringHelper(String)
+ */
+ @Deprecated
+ public static ToStringHelper toStringHelper(String className) {
+ return new ToStringHelper(className);
+ }
+
+ /**
+ * {@link Class#getSimpleName()} is not GWT compatible yet, so we
+ * provide our own implementation.
+ * @deprecated {@link Class#getSimpleName()} is now GWT compatible, use it instead
+ * @see Class#getSimpleName()
+ */
+ @Deprecated
+ private static String simpleName(Class> clazz) {
+ String name = clazz.getName();
+
+ // the nth anonymous class has a class name ending in "Outer$n"
+ // and local inner classes have names ending in "Outer.$1Inner"
+ name = name.replaceAll("\\$[0-9]+", "\\$");
+
+ // we want the name of the inner class all by its lonesome
+ int start = name.lastIndexOf('$');
+
+ // if this isn't an inner class, just find the start of the
+ // top level class name.
+ if (start == -1) {
+ start = name.lastIndexOf('.');
+ }
+ return name.substring(start + 1);
+ }
+
+ /**
+ * Returns the first of two given parameters that is not {@code null}, if
+ * either is, or otherwise throws a {@link NullPointerException}.
+ *
+ *
Note: if {@code first} is represented as an {@link Optional},
+ * this can be accomplished with
+ * {@linkplain Optional#or(Object) first.or(second)}.
+ * That approach also allows for lazy evaluation of the fallback instance,
+ * using {@linkplain Optional#or(Supplier) first.or(Supplier)}.
+ *
+ * @return {@code first} if {@code first} is not {@code null}, or
+ * {@code second} if {@code first} is {@code null} and {@code second} is
+ * not {@code null}
+ * @throws NullPointerException if both {@code first} and {@code second} were
+ * {@code null}
+ * @since 3.0
+ * @deprecated replaced by {@link MoreObjects#firstNonNull(Object, Object)}
+ * @see MoreObjects#firstNonNull(Object, Object)
+ */
+ @Deprecated
+ public static T firstNonNull(@Nullable T first, @Nullable T second) {
+ return first != null ? first : checkNotNull(second);
+ }
+
+ /**
+ * Support class for {@link Objects#toStringHelper}.
+ *
+ * @author Jason Lee
+ * @since 2.0
+ * @deprecated replaced by {@link MoreObjects.ToStringHelper}
+ * @see MoreObjects.ToStringHelper
+ */
+ @Deprecated
+ public static final class ToStringHelper {
+ private final String className;
+ private ValueHolder holderHead = new ValueHolder();
+ private ValueHolder holderTail = holderHead;
+ private boolean omitNullValues = false;
+
+ /**
+ * Use {@link Objects#toStringHelper(Object)} to create an instance.
+ */
+ private ToStringHelper(String className) {
+ this.className = checkNotNull(className);
+ }
+
+ /**
+ * Configures the {@link ToStringHelper} so {@link #toString()} will ignore
+ * properties with null value. The order of calling this method, relative
+ * to the {@code add()}/{@code addValue()} methods, is not significant.
+ *
+ * @since 12.0
+ */
+ public ToStringHelper omitNullValues() {
+ omitNullValues = true;
+ return this;
+ }
+
+ /**
+ * Adds a name/value pair to the formatted output in {@code name=value}
+ * format. If {@code value} is {@code null}, the string {@code "null"}
+ * is used, unless {@link #omitNullValues()} is called, in which case this
+ * name/value pair will not be added.
+ */
+ public ToStringHelper add(String name, @Nullable Object value) {
+ return addHolder(name, value);
+ }
+
+ /**
+ * Adds a name/value pair to the formatted output in {@code name=value}
+ * format.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper add(String name, boolean value) {
+ return addHolder(name, String.valueOf(value));
+ }
+
+ /**
+ * Adds a name/value pair to the formatted output in {@code name=value}
+ * format.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper add(String name, char value) {
+ return addHolder(name, String.valueOf(value));
+ }
+
+ /**
+ * Adds a name/value pair to the formatted output in {@code name=value}
+ * format.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper add(String name, double value) {
+ return addHolder(name, String.valueOf(value));
+ }
+
+ /**
+ * Adds a name/value pair to the formatted output in {@code name=value}
+ * format.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper add(String name, float value) {
+ return addHolder(name, String.valueOf(value));
+ }
+
+ /**
+ * Adds a name/value pair to the formatted output in {@code name=value}
+ * format.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper add(String name, int value) {
+ return addHolder(name, String.valueOf(value));
+ }
+
+ /**
+ * Adds a name/value pair to the formatted output in {@code name=value}
+ * format.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper add(String name, long value) {
+ return addHolder(name, String.valueOf(value));
+ }
+
+ /**
+ * Adds an unnamed value to the formatted output.
+ *
+ * It is strongly encouraged to use {@link #add(String, Object)} instead
+ * and give value a readable name.
+ */
+ public ToStringHelper addValue(@Nullable Object value) {
+ return addHolder(value);
+ }
+
+ /**
+ * Adds an unnamed value to the formatted output.
+ *
+ *
It is strongly encouraged to use {@link #add(String, boolean)} instead
+ * and give value a readable name.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper addValue(boolean value) {
+ return addHolder(String.valueOf(value));
+ }
+
+ /**
+ * Adds an unnamed value to the formatted output.
+ *
+ *
It is strongly encouraged to use {@link #add(String, char)} instead
+ * and give value a readable name.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper addValue(char value) {
+ return addHolder(String.valueOf(value));
+ }
+
+ /**
+ * Adds an unnamed value to the formatted output.
+ *
+ *
It is strongly encouraged to use {@link #add(String, double)} instead
+ * and give value a readable name.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper addValue(double value) {
+ return addHolder(String.valueOf(value));
+ }
+
+ /**
+ * Adds an unnamed value to the formatted output.
+ *
+ *
It is strongly encouraged to use {@link #add(String, float)} instead
+ * and give value a readable name.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper addValue(float value) {
+ return addHolder(String.valueOf(value));
+ }
+
+ /**
+ * Adds an unnamed value to the formatted output.
+ *
+ *
It is strongly encouraged to use {@link #add(String, int)} instead
+ * and give value a readable name.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper addValue(int value) {
+ return addHolder(String.valueOf(value));
+ }
+
+ /**
+ * Adds an unnamed value to the formatted output.
+ *
+ *
It is strongly encouraged to use {@link #add(String, long)} instead
+ * and give value a readable name.
+ *
+ * @since 11.0 (source-compatible since 2.0)
+ */
+ public ToStringHelper addValue(long value) {
+ return addHolder(String.valueOf(value));
+ }
+
+ /**
+ * Returns a string in the format specified by {@link
+ * Objects#toStringHelper(Object)}.
+ *
+ *
After calling this method, you can keep adding more properties to later
+ * call toString() again and get a more complete representation of the
+ * same object; but properties cannot be removed, so this only allows
+ * limited reuse of the helper instance. The helper allows duplication of
+ * properties (multiple name/value pairs with the same name can be added).
+ */
+ @Override public String toString() {
+ // create a copy to keep it consistent in case value changes
+ boolean omitNullValuesSnapshot = omitNullValues;
+ String nextSeparator = "";
+ StringBuilder builder = new StringBuilder(32).append(className)
+ .append('{');
+ for (ValueHolder valueHolder = holderHead.next; valueHolder != null;
+ valueHolder = valueHolder.next) {
+ if (!omitNullValuesSnapshot || valueHolder.value != null) {
+ builder.append(nextSeparator);
+ nextSeparator = ", ";
+
+ if (valueHolder.name != null) {
+ builder.append(valueHolder.name).append('=');
+ }
+ builder.append(valueHolder.value);
+ }
+ }
+ return builder.append('}').toString();
+ }
+
+ private ValueHolder addHolder() {
+ ValueHolder valueHolder = new ValueHolder();
+ holderTail = holderTail.next = valueHolder;
+ return valueHolder;
+ }
+
+ private ToStringHelper addHolder(@Nullable Object value) {
+ ValueHolder valueHolder = addHolder();
+ valueHolder.value = value;
+ return this;
+ }
+
+ private ToStringHelper addHolder(String name, @Nullable Object value) {
+ ValueHolder valueHolder = addHolder();
+ valueHolder.value = value;
+ valueHolder.name = checkNotNull(name);
+ return this;
+ }
+
+ private static final class ValueHolder {
+ String name;
+ Object value;
+ ValueHolder next;
+ }
+ }
+ // Nacho end
+}
\ No newline at end of file
diff --git a/eSpigot-Server/src/main/java/com/google/common/util/concurrent/MoreExecutors.java b/eSpigot-Server/src/main/java/com/google/common/util/concurrent/MoreExecutors.java
new file mode 100644
index 0000000..24b84d3
--- /dev/null
+++ b/eSpigot-Server/src/main/java/com/google/common/util/concurrent/MoreExecutors.java
@@ -0,0 +1,1172 @@
+/*
+ * Copyright (C) 2007 The Guava Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.google.common.util.concurrent;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.util.concurrent.Internal.toNanosSaturated;
+
+import com.google.common.annotations.Beta;
+import com.google.common.annotations.GwtCompatible;
+import com.google.common.annotations.GwtIncompatible;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Supplier;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Queues;
+import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
+import com.google.errorprone.annotations.concurrent.GuardedBy;
+import java.lang.reflect.InvocationTargetException;
+import java.time.Duration;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Delayed;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import org.checkerframework.checker.nullness.qual.Nullable;
+
+/**
+ * Factory and utility methods for {@link java.util.concurrent.Executor}, {@link ExecutorService},
+ * and {@link java.util.concurrent.ThreadFactory}.
+ *
+ * @author Eric Fellheimer
+ * @author Kyle Littlefield
+ * @author Justin Mahoney
+ * @since 3.0
+ */
+@GwtCompatible(emulated = true)
+@ElementTypesAreNonnullByDefault
+public final class MoreExecutors {
+ private MoreExecutors() {}
+
+ /**
+ * Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application
+ * is complete. It does so by using daemon threads and adding a shutdown hook to wait for their
+ * completion.
+ *
+ *
This is mainly for fixed thread pools. See {@link Executors#newFixedThreadPool(int)}.
+ *
+ * @param executor the executor to modify to make sure it exits when the application is finished
+ * @param terminationTimeout how long to wait for the executor to finish before terminating the
+ * JVM
+ * @return an unmodifiable version of the input which will not hang the JVM
+ * @since 28.0
+ */
+ @Beta
+ @GwtIncompatible // TODO
+ public static ExecutorService getExitingExecutorService(
+ ThreadPoolExecutor executor, Duration terminationTimeout) {
+ return getExitingExecutorService(
+ executor, toNanosSaturated(terminationTimeout), TimeUnit.NANOSECONDS);
+ }
+
+ /**
+ * Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application
+ * is complete. It does so by using daemon threads and adding a shutdown hook to wait for their
+ * completion.
+ *
+ *
This is mainly for fixed thread pools. See {@link Executors#newFixedThreadPool(int)}.
+ *
+ * @param executor the executor to modify to make sure it exits when the application is finished
+ * @param terminationTimeout how long to wait for the executor to finish before terminating the
+ * JVM
+ * @param timeUnit unit of time for the time parameter
+ * @return an unmodifiable version of the input which will not hang the JVM
+ */
+ @Beta
+ @GwtIncompatible // TODO
+ @SuppressWarnings("GoodTime") // should accept a java.time.Duration
+ public static ExecutorService getExitingExecutorService(
+ ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
+ return new Application().getExitingExecutorService(executor, terminationTimeout, timeUnit);
+ }
+
+ /**
+ * Converts the given ThreadPoolExecutor into an ExecutorService that exits when the application
+ * is complete. It does so by using daemon threads and adding a shutdown hook to wait for their
+ * completion.
+ *
+ *
This method waits 120 seconds before continuing with JVM termination, even if the executor
+ * has not finished its work.
+ *
+ *
This is mainly for fixed thread pools. See {@link Executors#newFixedThreadPool(int)}.
+ *
+ * @param executor the executor to modify to make sure it exits when the application is finished
+ * @return an unmodifiable version of the input which will not hang the JVM
+ */
+ @Beta
+ @GwtIncompatible // concurrency
+ public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) {
+ return new Application().getExitingExecutorService(executor);
+ }
+
+ /**
+ * Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when
+ * the application is complete. It does so by using daemon threads and adding a shutdown hook to
+ * wait for their completion.
+ *
+ *
This is mainly for fixed thread pools. See {@link Executors#newScheduledThreadPool(int)}.
+ *
+ * @param executor the executor to modify to make sure it exits when the application is finished
+ * @param terminationTimeout how long to wait for the executor to finish before terminating the
+ * JVM
+ * @return an unmodifiable version of the input which will not hang the JVM
+ * @since 28.0
+ */
+ @Beta
+ @GwtIncompatible // java.time.Duration
+ public static ScheduledExecutorService getExitingScheduledExecutorService(
+ ScheduledThreadPoolExecutor executor, Duration terminationTimeout) {
+ return getExitingScheduledExecutorService(
+ executor, toNanosSaturated(terminationTimeout), TimeUnit.NANOSECONDS);
+ }
+
+ /**
+ * Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when
+ * the application is complete. It does so by using daemon threads and adding a shutdown hook to
+ * wait for their completion.
+ *
+ *
This is mainly for fixed thread pools. See {@link Executors#newScheduledThreadPool(int)}.
+ *
+ * @param executor the executor to modify to make sure it exits when the application is finished
+ * @param terminationTimeout how long to wait for the executor to finish before terminating the
+ * JVM
+ * @param timeUnit unit of time for the time parameter
+ * @return an unmodifiable version of the input which will not hang the JVM
+ */
+ @Beta
+ @GwtIncompatible // TODO
+ @SuppressWarnings("GoodTime") // should accept a java.time.Duration
+ public static ScheduledExecutorService getExitingScheduledExecutorService(
+ ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
+ return new Application()
+ .getExitingScheduledExecutorService(executor, terminationTimeout, timeUnit);
+ }
+
+ /**
+ * Converts the given ScheduledThreadPoolExecutor into a ScheduledExecutorService that exits when
+ * the application is complete. It does so by using daemon threads and adding a shutdown hook to
+ * wait for their completion.
+ *
+ *
This method waits 120 seconds before continuing with JVM termination, even if the executor
+ * has not finished its work.
+ *
+ *
This is mainly for fixed thread pools. See {@link Executors#newScheduledThreadPool(int)}.
+ *
+ * @param executor the executor to modify to make sure it exits when the application is finished
+ * @return an unmodifiable version of the input which will not hang the JVM
+ */
+ @Beta
+ @GwtIncompatible // TODO
+ public static ScheduledExecutorService getExitingScheduledExecutorService(
+ ScheduledThreadPoolExecutor executor) {
+ return new Application().getExitingScheduledExecutorService(executor);
+ }
+
+ /**
+ * Add a shutdown hook to wait for thread completion in the given {@link ExecutorService service}.
+ * This is useful if the given service uses daemon threads, and we want to keep the JVM from
+ * exiting immediately on shutdown, instead giving these daemon threads a chance to terminate
+ * normally.
+ *
+ * @param service ExecutorService which uses daemon threads
+ * @param terminationTimeout how long to wait for the executor to finish before terminating the
+ * JVM
+ * @since 28.0
+ */
+ @Beta
+ @GwtIncompatible // java.time.Duration
+ public static void addDelayedShutdownHook(ExecutorService service, Duration terminationTimeout) {
+ addDelayedShutdownHook(service, toNanosSaturated(terminationTimeout), TimeUnit.NANOSECONDS);
+ }
+
+ /**
+ * Add a shutdown hook to wait for thread completion in the given {@link ExecutorService service}.
+ * This is useful if the given service uses daemon threads, and we want to keep the JVM from
+ * exiting immediately on shutdown, instead giving these daemon threads a chance to terminate
+ * normally.
+ *
+ * @param service ExecutorService which uses daemon threads
+ * @param terminationTimeout how long to wait for the executor to finish before terminating the
+ * JVM
+ * @param timeUnit unit of time for the time parameter
+ */
+ @Beta
+ @GwtIncompatible // TODO
+ @SuppressWarnings("GoodTime") // should accept a java.time.Duration
+ public static void addDelayedShutdownHook(
+ ExecutorService service, long terminationTimeout, TimeUnit timeUnit) {
+ new Application().addDelayedShutdownHook(service, terminationTimeout, timeUnit);
+ }
+
+ /** Represents the current application to register shutdown hooks. */
+ @GwtIncompatible // TODO
+ @VisibleForTesting
+ static class Application {
+
+ final ExecutorService getExitingExecutorService(
+ ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
+ useDaemonThreadFactory(executor);
+ ExecutorService service = Executors.unconfigurableExecutorService(executor);
+ addDelayedShutdownHook(executor, terminationTimeout, timeUnit);
+ return service;
+ }
+
+ final ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) {
+ return getExitingExecutorService(executor, 120, TimeUnit.SECONDS);
+ }
+
+ final ScheduledExecutorService getExitingScheduledExecutorService(
+ ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
+ useDaemonThreadFactory(executor);
+ ScheduledExecutorService service = Executors.unconfigurableScheduledExecutorService(executor);
+ addDelayedShutdownHook(executor, terminationTimeout, timeUnit);
+ return service;
+ }
+
+ final ScheduledExecutorService getExitingScheduledExecutorService(
+ ScheduledThreadPoolExecutor executor) {
+ return getExitingScheduledExecutorService(executor, 120, TimeUnit.SECONDS);
+ }
+
+ final void addDelayedShutdownHook(
+ final ExecutorService service, final long terminationTimeout, final TimeUnit timeUnit) {
+ checkNotNull(service);
+ checkNotNull(timeUnit);
+ addShutdownHook(
+ MoreExecutors.newThread(
+ "DelayedShutdownHook-for-" + service,
+ new Runnable() {
+ @Override
+ public void run() {
+ try {
+ // We'd like to log progress and failures that may arise in the
+ // following code, but unfortunately the behavior of logging
+ // is undefined in shutdown hooks.
+ // This is because the logging code installs a shutdown hook of its
+ // own. See Cleaner class inside {@link LogManager}.
+ service.shutdown();
+ service.awaitTermination(terminationTimeout, timeUnit);
+ } catch (InterruptedException ignored) {
+ // We're shutting down anyway, so just ignore.
+ }
+ }
+ }));
+ }
+
+ @VisibleForTesting
+ void addShutdownHook(Thread hook) {
+ Runtime.getRuntime().addShutdownHook(hook);
+ }
+ }
+
+ @GwtIncompatible // TODO
+ private static void useDaemonThreadFactory(ThreadPoolExecutor executor) {
+ executor.setThreadFactory(
+ new ThreadFactoryBuilder()
+ .setDaemon(true)
+ .setThreadFactory(executor.getThreadFactory())
+ .build());
+ }
+
+ // See newDirectExecutorService javadoc for behavioral notes.
+ @GwtIncompatible // TODO
+ private static final class DirectExecutorService extends AbstractListeningExecutorService {
+ /** Lock used whenever accessing the state variables (runningTasks, shutdown) of the executor */
+ private final Object lock = new Object();
+
+ /*
+ * Conceptually, these two variables describe the executor being in
+ * one of three states:
+ * - Active: shutdown == false
+ * - Shutdown: runningTasks > 0 and shutdown == true
+ * - Terminated: runningTasks == 0 and shutdown == true
+ */
+ @GuardedBy("lock")
+ private int runningTasks = 0;
+
+ @GuardedBy("lock")
+ private boolean shutdown = false;
+
+ @Override
+ public void execute(Runnable command) {
+ startTask();
+ try {
+ command.run();
+ } finally {
+ endTask();
+ }
+ }
+
+ @Override
+ public boolean isShutdown() {
+ synchronized (lock) {
+ return shutdown;
+ }
+ }
+
+ @Override
+ public void shutdown() {
+ synchronized (lock) {
+ shutdown = true;
+ if (runningTasks == 0) {
+ lock.notifyAll();
+ }
+ }
+ }
+
+ // See newDirectExecutorService javadoc for unusual behavior of this method.
+ @Override
+ public List shutdownNow() {
+ shutdown();
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean isTerminated() {
+ synchronized (lock) {
+ return shutdown && runningTasks == 0;
+ }
+ }
+
+ @Override
+ public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
+ long nanos = unit.toNanos(timeout);
+ synchronized (lock) {
+ while (true) {
+ if (shutdown && runningTasks == 0) {
+ return true;
+ } else if (nanos <= 0) {
+ return false;
+ } else {
+ long now = System.nanoTime();
+ TimeUnit.NANOSECONDS.timedWait(lock, nanos);
+ nanos -= System.nanoTime() - now; // subtract the actual time we waited
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks if the executor has been shut down and increments the running task count.
+ *
+ * @throws RejectedExecutionException if the executor has been previously shutdown
+ */
+ private void startTask() {
+ synchronized (lock) {
+ if (shutdown) {
+ throw new RejectedExecutionException("Executor already shutdown");
+ }
+ runningTasks++;
+ }
+ }
+
+ /** Decrements the running task count. */
+ private void endTask() {
+ synchronized (lock) {
+ int numRunning = --runningTasks;
+ if (numRunning == 0) {
+ lock.notifyAll();
+ }
+ }
+ }
+ }
+
+ /**
+ * Creates an executor service that runs each task in the thread that invokes {@code
+ * execute/submit}, as in {@code ThreadPoolExecutor.CallerRunsPolicy}. This applies both to
+ * individually submitted tasks and to collections of tasks submitted via {@code invokeAll} or
+ * {@code invokeAny}. In the latter case, tasks will run serially on the calling thread. Tasks are
+ * run to completion before a {@code Future} is returned to the caller (unless the executor has
+ * been shutdown).
+ *
+ * Although all tasks are immediately executed in the thread that submitted the task, this
+ * {@code ExecutorService} imposes a small locking overhead on each task submission in order to
+ * implement shutdown and termination behavior.
+ *
+ *
The implementation deviates from the {@code ExecutorService} specification with regards to
+ * the {@code shutdownNow} method. First, "best-effort" with regards to canceling running tasks is
+ * implemented as "no-effort". No interrupts or other attempts are made to stop threads executing
+ * tasks. Second, the returned list will always be empty, as any submitted task is considered to
+ * have started execution. This applies also to tasks given to {@code invokeAll} or {@code
+ * invokeAny} which are pending serial execution, even the subset of the tasks that have not yet
+ * started execution. It is unclear from the {@code ExecutorService} specification if these should
+ * be included, and it's much easier to implement the interpretation that they not be. Finally, a
+ * call to {@code shutdown} or {@code shutdownNow} may result in concurrent calls to {@code
+ * invokeAll/invokeAny} throwing RejectedExecutionException, although a subset of the tasks may
+ * already have been executed.
+ *
+ * @since 18.0 (present as MoreExecutors.sameThreadExecutor() since 10.0)
+ */
+ @GwtIncompatible // TODO
+ public static ListeningExecutorService newDirectExecutorService() {
+ return new DirectExecutorService();
+ }
+
+ /**
+ * Returns an {@link Executor} that runs each task in the thread that invokes {@link
+ * Executor#execute execute}, as in {@code ThreadPoolExecutor.CallerRunsPolicy}.
+ *
+ *
This executor is appropriate for tasks that are lightweight and not deeply chained.
+ * Inappropriate {@code directExecutor} usage can cause problems, and these problems can be
+ * difficult to reproduce because they depend on timing. For example:
+ *
+ *
+ * - A call like {@code future.transform(function, directExecutor())} may execute the function
+ * immediately in the thread that is calling {@code transform}. (This specific case happens
+ * if the future is already completed.) If {@code transform} call was made from a UI thread
+ * or other latency-sensitive thread, a heavyweight function can harm responsiveness.
+ *
- If the task will be executed later, consider which thread will trigger the execution --
+ * since that thread will execute the task inline. If the thread is a shared system thread
+ * like an RPC network thread, a heavyweight task can stall progress of the whole system or
+ * even deadlock it.
+ *
- If many tasks will be triggered by the same event, one heavyweight task may delay other
+ * tasks -- even tasks that are not themselves {@code directExecutor} tasks.
+ *
- If many such tasks are chained together (such as with {@code
+ * future.transform(...).transform(...).transform(...)....}), they may overflow the stack.
+ * (In simple cases, callers can avoid this by registering all tasks with the same {@link
+ * MoreExecutors#newSequentialExecutor} wrapper around {@code directExecutor()}. More
+ * complex cases may require using thread pools or making deeper changes.)
+ *
- If an exception propagates out of a {@code Runnable}, it is not necessarily seen by any
+ * {@code UncaughtExceptionHandler} for the thread. For example, if the callback passed to
+ * {@link Futures#addCallback} throws an exception, that exception will be typically be
+ * logged by the {@link ListenableFuture} implementation, even if the thread is configured
+ * to do something different. In other cases, no code will catch the exception, and it may
+ * terminate whichever thread happens to trigger the execution.
+ *
+ *
+ * Additionally, beware of executing tasks with {@code directExecutor} while holding a lock. Since
+ * the task you submit to the executor (or any other arbitrary work the executor does) may do slow
+ * work or acquire other locks, you risk deadlocks.
+ *
+ * This instance is equivalent to:
+ *
+ *
{@code
+ * final class DirectExecutor implements Executor {
+ * public void execute(Runnable r) {
+ * r.run();
+ * }
+ * }
+ * }
+ *
+ * This should be preferred to {@link #newDirectExecutorService()} because implementing the
+ * {@link ExecutorService} subinterface necessitates significant performance overhead.
+ *
+ * @since 18.0
+ */
+ public static Executor directExecutor() {
+ return DirectExecutor.INSTANCE;
+ }
+
+ /**
+ * Returns an {@link Executor} that runs each task executed sequentially, such that no two tasks
+ * are running concurrently. Submitted tasks have a happens-before order as defined in the Java
+ * Language Specification.
+ *
+ *
The executor uses {@code delegate} in order to {@link Executor#execute execute} each task in
+ * turn, and does not create any threads of its own.
+ *
+ *
After execution begins on a thread from the {@code delegate} {@link Executor}, tasks are
+ * polled and executed from a task queue until there are no more tasks. The thread will not be
+ * released until there are no more tasks to run.
+ *
+ *
If a task is submitted while a thread is executing tasks from the task queue, the thread
+ * will not be released until that submitted task is also complete.
+ *
+ *
If a task is {@linkplain Thread#interrupt interrupted} while a task is running:
+ *
+ *
+ * - execution will not stop until the task queue is empty.
+ *
- tasks will begin execution with the thread marked as not interrupted - any interruption
+ * applies only to the task that was running at the point of interruption.
+ *
- if the thread was interrupted before the SequentialExecutor's worker begins execution,
+ * the interrupt will be restored to the thread after it completes so that its {@code
+ * delegate} Executor may process the interrupt.
+ *
- subtasks are run with the thread uninterrupted and interrupts received during execution
+ * of a task are ignored.
+ *
+ *
+ * {@code RuntimeException}s thrown by tasks are simply logged and the executor keeps trucking.
+ * If an {@code Error} is thrown, the error will propagate and execution will stop until the next
+ * time a task is submitted.
+ *
+ *
When an {@code Error} is thrown by an executed task, previously submitted tasks may never
+ * run. An attempt will be made to restart execution on the next call to {@code execute}. If the
+ * {@code delegate} has begun to reject execution, the previously submitted tasks may never run,
+ * despite not throwing a RejectedExecutionException synchronously with the call to {@code
+ * execute}. If this behaviour is problematic, use an Executor with a single thread (e.g. {@link
+ * Executors#newSingleThreadExecutor}).
+ *
+ * @since 23.3 (since 23.1 as {@code sequentialExecutor})
+ */
+ @Beta
+ @GwtIncompatible
+ public static Executor newSequentialExecutor(Executor delegate) {
+ return new SequentialExecutor(delegate);
+ }
+
+ /**
+ * Creates an {@link ExecutorService} whose {@code submit} and {@code invokeAll} methods submit
+ * {@link ListenableFutureTask} instances to the given delegate executor. Those methods, as well
+ * as {@code execute} and {@code invokeAny}, are implemented in terms of calls to {@code
+ * delegate.execute}. All other methods are forwarded unchanged to the delegate. This implies that
+ * the returned {@code ListeningExecutorService} never calls the delegate's {@code submit}, {@code
+ * invokeAll}, and {@code invokeAny} methods, so any special handling of tasks must be implemented
+ * in the delegate's {@code execute} method or by wrapping the returned {@code
+ * ListeningExecutorService}.
+ *
+ *
If the delegate executor was already an instance of {@code ListeningExecutorService}, it is
+ * returned untouched, and the rest of this documentation does not apply.
+ *
+ * @since 10.0
+ */
+ @GwtIncompatible // TODO
+ public static ListeningExecutorService listeningDecorator(ExecutorService delegate) {
+ return (delegate instanceof ListeningExecutorService)
+ ? (ListeningExecutorService) delegate
+ : (delegate instanceof ScheduledExecutorService)
+ ? new ScheduledListeningDecorator((ScheduledExecutorService) delegate)
+ : new ListeningDecorator(delegate);
+ }
+
+ /**
+ * Creates a {@link ScheduledExecutorService} whose {@code submit} and {@code invokeAll} methods
+ * submit {@link ListenableFutureTask} instances to the given delegate executor. Those methods, as
+ * well as {@code execute} and {@code invokeAny}, are implemented in terms of calls to {@code
+ * delegate.execute}. All other methods are forwarded unchanged to the delegate. This implies that
+ * the returned {@code ListeningScheduledExecutorService} never calls the delegate's {@code
+ * submit}, {@code invokeAll}, and {@code invokeAny} methods, so any special handling of tasks
+ * must be implemented in the delegate's {@code execute} method or by wrapping the returned {@code
+ * ListeningScheduledExecutorService}.
+ *
+ *
If the delegate executor was already an instance of {@code
+ * ListeningScheduledExecutorService}, it is returned untouched, and the rest of this
+ * documentation does not apply.
+ *
+ * @since 10.0
+ */
+ @GwtIncompatible // TODO
+ public static ListeningScheduledExecutorService listeningDecorator(
+ ScheduledExecutorService delegate) {
+ return (delegate instanceof ListeningScheduledExecutorService)
+ ? (ListeningScheduledExecutorService) delegate
+ : new ScheduledListeningDecorator(delegate);
+ }
+
+ @GwtIncompatible // TODO
+ private static class ListeningDecorator extends AbstractListeningExecutorService {
+ private final ExecutorService delegate;
+
+ ListeningDecorator(ExecutorService delegate) {
+ this.delegate = checkNotNull(delegate);
+ }
+
+ @Override
+ public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
+ return delegate.awaitTermination(timeout, unit);
+ }
+
+ @Override
+ public final boolean isShutdown() {
+ return delegate.isShutdown();
+ }
+
+ @Override
+ public final boolean isTerminated() {
+ return delegate.isTerminated();
+ }
+
+ @Override
+ public final void shutdown() {
+ delegate.shutdown();
+ }
+
+ @Override
+ public final List shutdownNow() {
+ return delegate.shutdownNow();
+ }
+
+ @Override
+ public final void execute(Runnable command) {
+ delegate.execute(command);
+ }
+
+ @Override
+ public final String toString() {
+ return super.toString() + "[" + delegate + "]";
+ }
+ }
+
+ @GwtIncompatible // TODO
+ private static final class ScheduledListeningDecorator extends ListeningDecorator
+ implements ListeningScheduledExecutorService {
+ @SuppressWarnings("hiding")
+ final ScheduledExecutorService delegate;
+
+ ScheduledListeningDecorator(ScheduledExecutorService delegate) {
+ super(delegate);
+ this.delegate = checkNotNull(delegate);
+ }
+
+ @Override
+ public ListenableScheduledFuture> schedule(Runnable command, long delay, TimeUnit unit) {
+ TrustedListenableFutureTask<@Nullable Void> task =
+ TrustedListenableFutureTask.create(command, null);
+ ScheduledFuture> scheduled = delegate.schedule(task, delay, unit);
+ return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+ }
+
+ @Override
+ public ListenableScheduledFuture schedule(
+ Callable callable, long delay, TimeUnit unit) {
+ TrustedListenableFutureTask task = TrustedListenableFutureTask.create(callable);
+ ScheduledFuture> scheduled = delegate.schedule(task, delay, unit);
+ return new ListenableScheduledTask(task, scheduled);
+ }
+
+ @Override
+ public ListenableScheduledFuture> scheduleAtFixedRate(
+ Runnable command, long initialDelay, long period, TimeUnit unit) {
+ NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command);
+ ScheduledFuture> scheduled = delegate.scheduleAtFixedRate(task, initialDelay, period, unit);
+ return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+ }
+
+ @Override
+ public ListenableScheduledFuture> scheduleWithFixedDelay(
+ Runnable command, long initialDelay, long delay, TimeUnit unit) {
+ NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command);
+ ScheduledFuture> scheduled =
+ delegate.scheduleWithFixedDelay(task, initialDelay, delay, unit);
+ return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+ }
+
+ private static final class ListenableScheduledTask
+ extends SimpleForwardingListenableFuture implements ListenableScheduledFuture {
+
+ private final ScheduledFuture> scheduledDelegate;
+
+ public ListenableScheduledTask(
+ ListenableFuture listenableDelegate, ScheduledFuture> scheduledDelegate) {
+ super(listenableDelegate);
+ this.scheduledDelegate = scheduledDelegate;
+ }
+
+ @Override
+ public boolean cancel(boolean mayInterruptIfRunning) {
+ boolean cancelled = super.cancel(mayInterruptIfRunning);
+ if (cancelled) {
+ // Unless it is cancelled, the delegate may continue being scheduled
+ scheduledDelegate.cancel(mayInterruptIfRunning);
+
+ // TODO(user): Cancel "this" if "scheduledDelegate" is cancelled.
+ }
+ return cancelled;
+ }
+
+ @Override
+ public long getDelay(TimeUnit unit) {
+ return scheduledDelegate.getDelay(unit);
+ }
+
+ @Override
+ public int compareTo(Delayed other) {
+ return scheduledDelegate.compareTo(other);
+ }
+ }
+
+ @GwtIncompatible // TODO
+ private static final class NeverSuccessfulListenableFutureTask
+ extends AbstractFuture.TrustedFuture<@Nullable Void> implements Runnable {
+ private final Runnable delegate;
+
+ public NeverSuccessfulListenableFutureTask(Runnable delegate) {
+ this.delegate = checkNotNull(delegate);
+ }
+
+ @Override
+ public void run() {
+ try {
+ delegate.run();
+ } catch (Throwable t) {
+ setException(t);
+ throw Throwables.propagate(t);
+ }
+ }
+
+ @Override
+ protected String pendingToString() {
+ return "task=[" + delegate + "]";
+ }
+ }
+ }
+
+ /*
+ * This following method is a modified version of one found in
+ * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/test/tck/AbstractExecutorServiceTest.java?revision=1.30
+ * which contained the following notice:
+ *
+ * Written by Doug Lea with assistance from members of JCP JSR-166 Expert Group and released to
+ * the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/
+ *
+ * Other contributors include Andrew Wright, Jeffrey Hayes, Pat Fisher, Mike Judd.
+ */
+
+ /**
+ * An implementation of {@link ExecutorService#invokeAny} for {@link ListeningExecutorService}
+ * implementations.
+ */
+ @GwtIncompatible
+ @ParametricNullness
+ static T invokeAnyImpl(
+ ListeningExecutorService executorService,
+ Collection extends Callable> tasks,
+ boolean timed,
+ Duration timeout)
+ throws InterruptedException, ExecutionException, TimeoutException {
+ return invokeAnyImpl(
+ executorService, tasks, timed, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
+ }
+
+ /**
+ * An implementation of {@link ExecutorService#invokeAny} for {@link ListeningExecutorService}
+ * implementations.
+ */
+ @SuppressWarnings("GoodTime") // should accept a java.time.Duration
+ @GwtIncompatible
+ @ParametricNullness
+ static T invokeAnyImpl(
+ ListeningExecutorService executorService,
+ Collection extends Callable> tasks,
+ boolean timed,
+ long timeout,
+ TimeUnit unit)
+ throws InterruptedException, ExecutionException, TimeoutException {
+ checkNotNull(executorService);
+ checkNotNull(unit);
+ int ntasks = tasks.size();
+ checkArgument(ntasks > 0);
+ List> futures = Lists.newArrayListWithCapacity(ntasks);
+ BlockingQueue> futureQueue = Queues.newLinkedBlockingQueue();
+ long timeoutNanos = unit.toNanos(timeout);
+
+ // For efficiency, especially in executors with limited
+ // parallelism, check to see if previously submitted tasks are
+ // done before submitting more of them. This interleaving
+ // plus the exception mechanics account for messiness of main
+ // loop.
+
+ try {
+ // Record exceptions so that if we fail to obtain any
+ // result, we can throw the last exception we got.
+ ExecutionException ee = null;
+ long lastTime = timed ? System.nanoTime() : 0;
+ Iterator extends Callable> it = tasks.iterator();
+
+ futures.add(submitAndAddQueueListener(executorService, it.next(), futureQueue));
+ --ntasks;
+ int active = 1;
+
+ while (true) {
+ Future f = futureQueue.poll();
+ if (f == null) {
+ if (ntasks > 0) {
+ --ntasks;
+ futures.add(submitAndAddQueueListener(executorService, it.next(), futureQueue));
+ ++active;
+ } else if (active == 0) {
+ break;
+ } else if (timed) {
+ f = futureQueue.poll(timeoutNanos, TimeUnit.NANOSECONDS);
+ if (f == null) {
+ throw new TimeoutException();
+ }
+ long now = System.nanoTime();
+ timeoutNanos -= now - lastTime;
+ lastTime = now;
+ } else {
+ f = futureQueue.take();
+ }
+ }
+ if (f != null) {
+ --active;
+ try {
+ return f.get();
+ } catch (ExecutionException eex) {
+ ee = eex;
+ } catch (RuntimeException rex) {
+ ee = new ExecutionException(rex);
+ }
+ }
+ }
+
+ if (ee == null) {
+ ee = new ExecutionException(null);
+ }
+ throw ee;
+ } finally {
+ for (Future f : futures) {
+ f.cancel(true);
+ }
+ }
+ }
+
+ /**
+ * Submits the task and adds a listener that adds the future to {@code queue} when it completes.
+ */
+ @GwtIncompatible // TODO
+ private static ListenableFuture submitAndAddQueueListener(
+ ListeningExecutorService executorService,
+ Callable task,
+ final BlockingQueue> queue) {
+ final ListenableFuture future = executorService.submit(task);
+ future.addListener(
+ new Runnable() {
+ @Override
+ public void run() {
+ queue.add(future);
+ }
+ },
+ directExecutor());
+ return future;
+ }
+
+ /**
+ * Returns a default thread factory used to create new threads.
+ *
+ * When running on AppEngine with access to AppEngine legacy
+ * APIs, this method returns {@code ThreadManager.currentRequestThreadFactory()}. Otherwise,
+ * it returns {@link Executors#defaultThreadFactory()}.
+ *
+ * @since 14.0
+ */
+ @Beta
+ @GwtIncompatible // concurrency
+ public static ThreadFactory platformThreadFactory() {
+ if (!isAppEngineWithApiClasses()) {
+ return Executors.defaultThreadFactory();
+ }
+ try {
+ return (ThreadFactory)
+ Class.forName("com.google.appengine.api.ThreadManager")
+ .getMethod("currentRequestThreadFactory")
+ .invoke(null);
+ /*
+ * Do not merge the 3 catch blocks below. javac would infer a type of
+ * ReflectiveOperationException, which Animal Sniffer would reject. (Old versions of Android
+ * don't *seem* to mind, but there might be edge cases of which we're unaware.)
+ */
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e);
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e);
+ } catch (InvocationTargetException e) {
+ throw Throwables.propagate(e.getCause());
+ }
+ }
+
+ @GwtIncompatible // TODO
+ private static boolean isAppEngineWithApiClasses() {
+ if (System.getProperty("com.google.appengine.runtime.environment") == null) {
+ return false;
+ }
+ try {
+ Class.forName("com.google.appengine.api.utils.SystemProperty");
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ try {
+ // If the current environment is null, we're not inside AppEngine.
+ return Class.forName("com.google.apphosting.api.ApiProxy")
+ .getMethod("getCurrentEnvironment")
+ .invoke(null)
+ != null;
+ } catch (ClassNotFoundException e) {
+ // If ApiProxy doesn't exist, we're not on AppEngine at all.
+ return false;
+ } catch (InvocationTargetException e) {
+ // If ApiProxy throws an exception, we're not in a proper AppEngine environment.
+ return false;
+ } catch (IllegalAccessException e) {
+ // If the method isn't accessible, we're not on a supported version of AppEngine;
+ return false;
+ } catch (NoSuchMethodException e) {
+ // If the method doesn't exist, we're not on a supported version of AppEngine;
+ return false;
+ }
+ }
+
+ /**
+ * Creates a thread using {@link #platformThreadFactory}, and sets its name to {@code name} unless
+ * changing the name is forbidden by the security manager.
+ */
+ @GwtIncompatible // concurrency
+ static Thread newThread(String name, Runnable runnable) {
+ checkNotNull(name);
+ checkNotNull(runnable);
+ Thread result = platformThreadFactory().newThread(runnable);
+ try {
+ result.setName(name);
+ } catch (SecurityException e) {
+ // OK if we can't set the name in this environment.
+ }
+ return result;
+ }
+
+ // TODO(lukes): provide overloads for ListeningExecutorService? ListeningScheduledExecutorService?
+ // TODO(lukes): provide overloads that take constant strings? Functions to
+ // calculate names?
+
+ /**
+ * Creates an {@link Executor} that renames the {@link Thread threads} that its tasks run in.
+ *
+ * The names are retrieved from the {@code nameSupplier} on the thread that is being renamed
+ * right before each task is run. The renaming is best effort, if a {@link SecurityManager}
+ * prevents the renaming then it will be skipped but the tasks will still execute.
+ *
+ * @param executor The executor to decorate
+ * @param nameSupplier The source of names for each task
+ */
+ @GwtIncompatible // concurrency
+ static Executor renamingDecorator(final Executor executor, final Supplier nameSupplier) {
+ checkNotNull(executor);
+ checkNotNull(nameSupplier);
+ return new Executor() {
+ @Override
+ public void execute(Runnable command) {
+ executor.execute(Callables.threadRenaming(command, nameSupplier));
+ }
+ };
+ }
+
+ /**
+ * Creates an {@link ExecutorService} that renames the {@link Thread threads} that its tasks run
+ * in.
+ *
+ * The names are retrieved from the {@code nameSupplier} on the thread that is being renamed
+ * right before each task is run. The renaming is best effort, if a {@link SecurityManager}
+ * prevents the renaming then it will be skipped but the tasks will still execute.
+ *
+ * @param service The executor to decorate
+ * @param nameSupplier The source of names for each task
+ */
+ @GwtIncompatible // concurrency
+ static ExecutorService renamingDecorator(
+ final ExecutorService service, final Supplier nameSupplier) {
+ checkNotNull(service);
+ checkNotNull(nameSupplier);
+ return new WrappingExecutorService(service) {
+ @Override
+ protected Callable wrapTask(Callable callable) {
+ return Callables.threadRenaming(callable, nameSupplier);
+ }
+
+ @Override
+ protected Runnable wrapTask(Runnable command) {
+ return Callables.threadRenaming(command, nameSupplier);
+ }
+ };
+ }
+
+ /**
+ * Creates a {@link ScheduledExecutorService} that renames the {@link Thread threads} that its
+ * tasks run in.
+ *
+ * The names are retrieved from the {@code nameSupplier} on the thread that is being renamed
+ * right before each task is run. The renaming is best effort, if a {@link SecurityManager}
+ * prevents the renaming then it will be skipped but the tasks will still execute.
+ *
+ * @param service The executor to decorate
+ * @param nameSupplier The source of names for each task
+ */
+ @GwtIncompatible // concurrency
+ static ScheduledExecutorService renamingDecorator(
+ final ScheduledExecutorService service, final Supplier nameSupplier) {
+ checkNotNull(service);
+ checkNotNull(nameSupplier);
+ return new WrappingScheduledExecutorService(service) {
+ @Override
+ protected Callable wrapTask(Callable callable) {
+ return Callables.threadRenaming(callable, nameSupplier);
+ }
+
+ @Override
+ protected Runnable wrapTask(Runnable command) {
+ return Callables.threadRenaming(command, nameSupplier);
+ }
+ };
+ }
+
+ /**
+ * Shuts down the given executor service gradually, first disabling new submissions and later, if
+ * necessary, cancelling remaining tasks.
+ *
+ * The method takes the following steps:
+ *
+ *
+ * - calls {@link ExecutorService#shutdown()}, disabling acceptance of new submitted tasks.
+ *
- awaits executor service termination for half of the specified timeout.
+ *
- if the timeout expires, it calls {@link ExecutorService#shutdownNow()}, cancelling
+ * pending tasks and interrupting running tasks.
+ *
- awaits executor service termination for the other half of the specified timeout.
+ *
+ *
+ * If, at any step of the process, the calling thread is interrupted, the method calls {@link
+ * ExecutorService#shutdownNow()} and returns.
+ *
+ * @param service the {@code ExecutorService} to shut down
+ * @param timeout the maximum time to wait for the {@code ExecutorService} to terminate
+ * @return {@code true} if the {@code ExecutorService} was terminated successfully, {@code false}
+ * if the call timed out or was interrupted
+ * @since 28.0
+ */
+ @Beta
+ @CanIgnoreReturnValue
+ @GwtIncompatible // java.time.Duration
+ public static boolean shutdownAndAwaitTermination(ExecutorService service, Duration timeout) {
+ return shutdownAndAwaitTermination(service, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
+ }
+
+ /**
+ * Shuts down the given executor service gradually, first disabling new submissions and later, if
+ * necessary, cancelling remaining tasks.
+ *
+ *
The method takes the following steps:
+ *
+ *
+ * - calls {@link ExecutorService#shutdown()}, disabling acceptance of new submitted tasks.
+ *
- awaits executor service termination for half of the specified timeout.
+ *
- if the timeout expires, it calls {@link ExecutorService#shutdownNow()}, cancelling
+ * pending tasks and interrupting running tasks.
+ *
- awaits executor service termination for the other half of the specified timeout.
+ *
+ *
+ * If, at any step of the process, the calling thread is interrupted, the method calls {@link
+ * ExecutorService#shutdownNow()} and returns.
+ *
+ * @param service the {@code ExecutorService} to shut down
+ * @param timeout the maximum time to wait for the {@code ExecutorService} to terminate
+ * @param unit the time unit of the timeout argument
+ * @return {@code true} if the {@code ExecutorService} was terminated successfully, {@code false}
+ * if the call timed out or was interrupted
+ * @since 17.0
+ */
+ @Beta
+ @CanIgnoreReturnValue
+ @GwtIncompatible // concurrency
+ @SuppressWarnings("GoodTime") // should accept a java.time.Duration
+ public static boolean shutdownAndAwaitTermination(
+ ExecutorService service, long timeout, TimeUnit unit) {
+ long halfTimeoutNanos = unit.toNanos(timeout) / 2;
+ // Disable new tasks from being submitted
+ service.shutdown();
+ try {
+ // Wait for half the duration of the timeout for existing tasks to terminate
+ if (!service.awaitTermination(halfTimeoutNanos, TimeUnit.NANOSECONDS)) {
+ // Cancel currently executing tasks
+ service.shutdownNow();
+ // Wait the other half of the timeout for tasks to respond to being cancelled
+ service.awaitTermination(halfTimeoutNanos, TimeUnit.NANOSECONDS);
+ }
+ } catch (InterruptedException ie) {
+ // Preserve interrupt status
+ Thread.currentThread().interrupt();
+ // (Re-)Cancel if current thread also interrupted
+ service.shutdownNow();
+ }
+ return service.isTerminated();
+ }
+
+ /**
+ * Returns an Executor that will propagate {@link RejectedExecutionException} from the delegate
+ * executor to the given {@code future}.
+ *
+ *
Note, the returned executor can only be used once.
+ */
+ static Executor rejectionPropagatingExecutor(
+ final Executor delegate, final AbstractFuture> future) {
+ checkNotNull(delegate);
+ checkNotNull(future);
+ if (delegate == directExecutor()) {
+ // directExecutor() cannot throw RejectedExecutionException
+ return delegate;
+ }
+ return new Executor() {
+ @Override
+ public void execute(Runnable command) {
+ try {
+ delegate.execute(command);
+ } catch (RejectedExecutionException e) {
+ future.setException(e);
+ }
+ }
+ };
+ }
+
+ // Nacho start
+ /**
+ * Creates an executor service that runs each task in the thread that invokes {@code
+ * execute/submit}, as in {@code ThreadPoolExecutor.CallerRunsPolicy}. This applies both to
+ * individually submitted tasks and to collections of tasks submitted via {@code invokeAll} or
+ * {@code invokeAny}. In the latter case, tasks will run serially on the calling thread. Tasks are
+ * run to completion before a {@code Future} is returned to the caller (unless the executor has
+ * been shutdown).
+ *
+ *
Although all tasks are immediately executed in the thread that submitted the task, this
+ * {@code ExecutorService} imposes a small locking overhead on each task submission in order to
+ * implement shutdown and termination behavior.
+ *
+ *
The implementation deviates from the {@code ExecutorService} specification with regards to
+ * the {@code shutdownNow} method. First, "best-effort" with regards to canceling running tasks is
+ * implemented as "no-effort". No interrupts or other attempts are made to stop threads executing
+ * tasks. Second, the returned list will always be empty, as any submitted task is considered to
+ * have started execution. This applies also to tasks given to {@code invokeAll} or {@code
+ * invokeAny} which are pending serial execution, even the subset of the tasks that have not yet
+ * started execution. It is unclear from the {@code ExecutorService} specification if these should
+ * be included, and it's much easier to implement the interpretation that they not be. Finally, a
+ * call to {@code shutdown} or {@code shutdownNow} may result in concurrent calls to {@code
+ * invokeAll/invokeAny} throwing RejectedExecutionException, although a subset of the tasks may
+ * already have been executed.
+ *
+ * @since 10.0
+ * @deprecated replaced by {@link MoreExecutors#sameThreadExecutor()}
+ * @see MoreExecutors#sameThreadExecutor()
+ */
+ @Deprecated
+ @GwtIncompatible
+ public static ListeningExecutorService sameThreadExecutor() {
+ return newDirectExecutorService();
+ }
+ // Nacho end
+}
\ No newline at end of file
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Achievement.java b/eSpigot-Server/src/main/java/net/minecraft/server/Achievement.java
new file mode 100644
index 0000000..09b69bb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/Achievement.java
@@ -0,0 +1,84 @@
+package net.minecraft.server;
+
+public class Achievement extends Statistic {
+
+ public final int a;
+ public final int b;
+ public final Achievement c;
+ private final String k;
+ public final ItemStack d;
+ private boolean m;
+
+ public Achievement(String s, String s1, int i, int j, Item item, Achievement achievement) {
+ this(s, s1, i, j, new ItemStack(item), achievement);
+ }
+
+ public Achievement(String s, String s1, int i, int j, Block block, Achievement achievement) {
+ this(s, s1, i, j, new ItemStack(block), achievement);
+ }
+
+ public Achievement(String s, String s1, int i, int j, ItemStack itemstack, Achievement achievement) {
+ super(s, new ChatMessage("achievement." + s1, new Object[0]));
+ this.d = itemstack;
+ this.k = "achievement." + s1 + ".desc";
+ this.a = i;
+ this.b = j;
+
+ if (i > AchievementList.c) {
+ AchievementList.c = i;
+ }
+
+ if (j > AchievementList.d) {
+ AchievementList.d = j;
+ }
+
+ this.c = achievement;
+ }
+
+ public Achievement a() {
+ this.f = true;
+ return this;
+ }
+
+ public Achievement b() {
+ this.m = true;
+ return this;
+ }
+
+ public Achievement c() {
+ super.h();
+ AchievementList.e.add(this);
+ return this;
+ }
+
+ public boolean d() {
+ return true;
+ }
+
+ public IChatBaseComponent e() {
+ IChatBaseComponent ichatbasecomponent = super.e();
+
+ ichatbasecomponent.getChatModifier().setColor(this.g() ? EnumChatFormat.DARK_PURPLE : EnumChatFormat.GREEN);
+ return ichatbasecomponent;
+ }
+
+ public Achievement a(Class extends IJsonStatistic> oclass) {
+ return (Achievement) super.b(oclass);
+ }
+
+ public boolean g() {
+ return this.m;
+ }
+
+ public Statistic b(Class oclass) {
+ return this.a(oclass);
+ }
+
+ public Statistic h() {
+ return this.c();
+ }
+
+ public Statistic i() {
+ return this.a();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AchievementList.java b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementList.java
new file mode 100644
index 0000000..4c92425
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementList.java
@@ -0,0 +1,49 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.List;
+
+public class AchievementList {
+
+ public static int a;
+ public static int b;
+ public static int c;
+ public static int d;
+ public static List e = Lists.newArrayList();
+ public static Achievement f = (new Achievement("achievement.openInventory", "openInventory", 0, 0, Items.BOOK, (Achievement) null)).a().c();
+ public static Achievement g = (new Achievement("achievement.mineWood", "mineWood", 2, 1, Blocks.LOG, AchievementList.f)).c();
+ public static Achievement h = (new Achievement("achievement.buildWorkBench", "buildWorkBench", 4, -1, Blocks.CRAFTING_TABLE, AchievementList.g)).c();
+ public static Achievement i = (new Achievement("achievement.buildPickaxe", "buildPickaxe", 4, 2, Items.WOODEN_PICKAXE, AchievementList.h)).c();
+ public static Achievement j = (new Achievement("achievement.buildFurnace", "buildFurnace", 3, 4, Blocks.FURNACE, AchievementList.i)).c();
+ public static Achievement k = (new Achievement("achievement.acquireIron", "acquireIron", 1, 4, Items.IRON_INGOT, AchievementList.j)).c();
+ public static Achievement l = (new Achievement("achievement.buildHoe", "buildHoe", 2, -3, Items.WOODEN_HOE, AchievementList.h)).c();
+ public static Achievement m = (new Achievement("achievement.makeBread", "makeBread", -1, -3, Items.BREAD, AchievementList.l)).c();
+ public static Achievement n = (new Achievement("achievement.bakeCake", "bakeCake", 0, -5, Items.CAKE, AchievementList.l)).c();
+ public static Achievement o = (new Achievement("achievement.buildBetterPickaxe", "buildBetterPickaxe", 6, 2, Items.STONE_PICKAXE, AchievementList.i)).c();
+ public static Achievement p = (new Achievement("achievement.cookFish", "cookFish", 2, 6, Items.COOKED_FISH, AchievementList.j)).c();
+ public static Achievement q = (new Achievement("achievement.onARail", "onARail", 2, 3, Blocks.RAIL, AchievementList.k)).b().c();
+ public static Achievement r = (new Achievement("achievement.buildSword", "buildSword", 6, -1, Items.WOODEN_SWORD, AchievementList.h)).c();
+ public static Achievement s = (new Achievement("achievement.killEnemy", "killEnemy", 8, -1, Items.BONE, AchievementList.r)).c();
+ public static Achievement t = (new Achievement("achievement.killCow", "killCow", 7, -3, Items.LEATHER, AchievementList.r)).c();
+ public static Achievement u = (new Achievement("achievement.flyPig", "flyPig", 9, -3, Items.SADDLE, AchievementList.t)).b().c();
+ public static Achievement v = (new Achievement("achievement.snipeSkeleton", "snipeSkeleton", 7, 0, Items.BOW, AchievementList.s)).b().c();
+ public static Achievement w = (new Achievement("achievement.diamonds", "diamonds", -1, 5, Blocks.DIAMOND_ORE, AchievementList.k)).c();
+ public static Achievement x = (new Achievement("achievement.diamondsToYou", "diamondsToYou", -1, 2, Items.DIAMOND, AchievementList.w)).c();
+ public static Achievement y = (new Achievement("achievement.portal", "portal", -1, 7, Blocks.OBSIDIAN, AchievementList.w)).c();
+ public static Achievement z = (new Achievement("achievement.ghast", "ghast", -4, 8, Items.GHAST_TEAR, AchievementList.y)).b().c();
+ public static Achievement A = (new Achievement("achievement.blazeRod", "blazeRod", 0, 9, Items.BLAZE_ROD, AchievementList.y)).c();
+ public static Achievement B = (new Achievement("achievement.potion", "potion", 2, 8, Items.POTION, AchievementList.A)).c();
+ public static Achievement C = (new Achievement("achievement.theEnd", "theEnd", 3, 10, Items.ENDER_EYE, AchievementList.A)).b().c();
+ public static Achievement D = (new Achievement("achievement.theEnd2", "theEnd2", 4, 13, Blocks.DRAGON_EGG, AchievementList.C)).b().c();
+ public static Achievement E = (new Achievement("achievement.enchantments", "enchantments", -4, 4, Blocks.ENCHANTING_TABLE, AchievementList.w)).c();
+ public static Achievement F = (new Achievement("achievement.overkill", "overkill", -4, 1, Items.DIAMOND_SWORD, AchievementList.E)).b().c();
+ public static Achievement G = (new Achievement("achievement.bookcase", "bookcase", -3, 6, Blocks.BOOKSHELF, AchievementList.E)).c();
+ public static Achievement H = (new Achievement("achievement.breedCow", "breedCow", 7, -5, Items.WHEAT, AchievementList.t)).c();
+ public static Achievement I = (new Achievement("achievement.spawnWither", "spawnWither", 7, 12, new ItemStack(Items.SKULL, 1, 1), AchievementList.D)).c();
+ public static Achievement J = (new Achievement("achievement.killWither", "killWither", 7, 10, Items.NETHER_STAR, AchievementList.I)).c();
+ public static Achievement K = (new Achievement("achievement.fullBeacon", "fullBeacon", 7, 8, Blocks.BEACON, AchievementList.J)).b().c();
+ public static Achievement L = (new Achievement("achievement.exploreAllBiomes", "exploreAllBiomes", 4, 8, Items.DIAMOND_BOOTS, AchievementList.C)).a(AchievementSet.class).b().c();
+ public static Achievement M = (new Achievement("achievement.overpowered", "overpowered", 6, 4, new ItemStack(Items.GOLDEN_APPLE, 1, 1), AchievementList.o)).b().c();
+
+ public static void a() {}
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AchievementSet.java b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementSet.java
new file mode 100644
index 0000000..ad2d9dc
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AchievementSet.java
@@ -0,0 +1,47 @@
+package net.minecraft.server;
+
+import com.google.common.collect.ForwardingSet;
+import com.google.common.collect.Sets;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+
+public class AchievementSet extends ForwardingSet implements IJsonStatistic {
+
+ private final Set a = Sets.newHashSet();
+
+ public AchievementSet() {}
+
+ public void a(JsonElement jsonelement) {
+ if (jsonelement.isJsonArray()) {
+ Iterator iterator = jsonelement.getAsJsonArray().iterator();
+
+ while (iterator.hasNext()) {
+ JsonElement jsonelement1 = (JsonElement) iterator.next();
+
+ this.add(jsonelement1.getAsString());
+ }
+ }
+
+ }
+
+ public JsonElement a() {
+ JsonArray jsonarray = new JsonArray();
+ Iterator iterator = this.iterator();
+
+ while (iterator.hasNext()) {
+ String s = (String) iterator.next();
+
+ jsonarray.add(new JsonPrimitive(s));
+ }
+
+ return jsonarray;
+ }
+
+ protected Set delegate() {
+ return this.a;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeBase.java
new file mode 100644
index 0000000..9ef9bfe
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeBase.java
@@ -0,0 +1,47 @@
+package net.minecraft.server;
+
+public abstract class AttributeBase implements IAttribute {
+
+ private final IAttribute a;
+ private final String b;
+ private final double c;
+ private boolean d;
+
+ protected AttributeBase(IAttribute iattribute, String s, double d0) {
+ this.a = iattribute;
+ this.b = s;
+ this.c = d0;
+ if (s == null) {
+ throw new IllegalArgumentException("Name cannot be null!");
+ }
+ }
+
+ public String getName() {
+ return this.b;
+ }
+
+ public double b() {
+ return this.c;
+ }
+
+ public boolean c() {
+ return this.d;
+ }
+
+ public AttributeBase a(boolean flag) {
+ this.d = flag;
+ return this;
+ }
+
+ public IAttribute d() {
+ return this.a;
+ }
+
+ public int hashCode() {
+ return this.b.hashCode();
+ }
+
+ public boolean equals(Object object) {
+ return object instanceof IAttribute && this.b.equals(((IAttribute) object).getName());
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeInstance.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeInstance.java
new file mode 100644
index 0000000..c730d77
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeInstance.java
@@ -0,0 +1,27 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.UUID;
+
+public interface AttributeInstance {
+
+ IAttribute getAttribute();
+
+ double b();
+
+ void setValue(double d0);
+
+ Collection a(int i);
+
+ Collection c();
+
+ boolean a(AttributeModifier attributemodifier);
+
+ AttributeModifier a(UUID uuid);
+
+ void b(AttributeModifier attributemodifier);
+
+ void c(AttributeModifier attributemodifier);
+
+ double getValue();
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapBase.java
new file mode 100644
index 0000000..6b7aabc
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapBase.java
@@ -0,0 +1,80 @@
+package net.minecraft.server;
+
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Multimap;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public abstract class AttributeMapBase {
+
+ protected final Map a = Maps.newHashMap();
+ protected final Map b = new InsensitiveStringMap();
+ protected final Multimap c = HashMultimap.create();
+
+ public AttributeMapBase() {}
+
+ public AttributeInstance a(IAttribute iattribute) {
+ return (AttributeInstance) this.a.get(iattribute);
+ }
+
+ public AttributeInstance a(String s) {
+ return (AttributeInstance) this.b.get(s);
+ }
+
+ public AttributeInstance b(IAttribute iattribute) {
+ if (this.b.containsKey(iattribute.getName())) {
+ throw new IllegalArgumentException("Attribute is already registered!");
+ } else {
+ AttributeInstance attributeinstance = this.c(iattribute);
+
+ this.b.put(iattribute.getName(), attributeinstance);
+ this.a.put(iattribute, attributeinstance);
+
+ for (IAttribute iattribute1 = iattribute.d(); iattribute1 != null; iattribute1 = iattribute1.d()) {
+ this.c.put(iattribute1, iattribute);
+ }
+
+ return attributeinstance;
+ }
+ }
+
+ protected abstract AttributeInstance c(IAttribute iattribute);
+
+ public Collection a() {
+ return this.b.values();
+ }
+
+ public void a(AttributeInstance attributeinstance) {}
+
+ public void a(Multimap multimap) {
+ Iterator iterator = multimap.entries().iterator();
+
+ while (iterator.hasNext()) {
+ Entry entry = (Entry) iterator.next();
+ AttributeInstance attributeinstance = this.a((String) entry.getKey());
+
+ if (attributeinstance != null) {
+ attributeinstance.c((AttributeModifier) entry.getValue());
+ }
+ }
+
+ }
+
+ public void b(Multimap multimap) {
+ Iterator iterator = multimap.entries().iterator();
+
+ while (iterator.hasNext()) {
+ Entry entry = (Entry) iterator.next();
+ AttributeInstance attributeinstance = this.a((String) entry.getKey());
+
+ if (attributeinstance != null) {
+ attributeinstance.c((AttributeModifier) entry.getValue());
+ attributeinstance.b((AttributeModifier) entry.getValue());
+ }
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapServer.java
new file mode 100644
index 0000000..97726c9
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeMapServer.java
@@ -0,0 +1,89 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Sets;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+public class AttributeMapServer extends AttributeMapBase {
+
+ private final Set e = Sets.newHashSet();
+ protected final Map d = new InsensitiveStringMap();
+
+ public AttributeMapServer() {}
+
+ public AttributeModifiable e(IAttribute iattribute) {
+ return (AttributeModifiable) super.a(iattribute);
+ }
+
+ public AttributeModifiable b(String s) {
+ AttributeInstance attributeinstance = super.a(s);
+
+ if (attributeinstance == null) {
+ attributeinstance = (AttributeInstance) this.d.get(s);
+ }
+
+ return (AttributeModifiable) attributeinstance;
+ }
+
+ public AttributeInstance b(IAttribute iattribute) {
+ AttributeInstance attributeinstance = super.b(iattribute);
+
+ if (iattribute instanceof AttributeRanged && ((AttributeRanged) iattribute).g() != null) {
+ this.d.put(((AttributeRanged) iattribute).g(), attributeinstance);
+ }
+
+ return attributeinstance;
+ }
+
+ protected AttributeInstance c(IAttribute iattribute) {
+ return new AttributeModifiable(this, iattribute);
+ }
+
+ public void a(AttributeInstance attributeinstance) {
+ if (attributeinstance.getAttribute().c()) {
+ this.e.add(attributeinstance);
+ }
+
+ Iterator iterator = this.c.get(attributeinstance.getAttribute()).iterator();
+
+ while (iterator.hasNext()) {
+ IAttribute iattribute = (IAttribute) iterator.next();
+ AttributeModifiable attributemodifiable = this.e(iattribute);
+
+ if (attributemodifiable != null) {
+ attributemodifiable.f();
+ }
+ }
+
+ }
+
+ public Set getAttributes() {
+ return this.e;
+ }
+
+ public Collection c() {
+ HashSet hashset = Sets.newHashSet();
+ Iterator iterator = this.a().iterator();
+
+ while (iterator.hasNext()) {
+ AttributeInstance attributeinstance = (AttributeInstance) iterator.next();
+
+ if (attributeinstance.getAttribute().c()) {
+ hashset.add(attributeinstance);
+ }
+ }
+
+ return hashset;
+ }
+
+ public AttributeInstance a(String s) {
+ return this.b(s);
+ }
+
+ public AttributeInstance a(IAttribute iattribute) {
+ return this.e(iattribute);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifiable.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifiable.java
new file mode 100644
index 0000000..58c9d00
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifiable.java
@@ -0,0 +1,156 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+public class AttributeModifiable implements AttributeInstance {
+
+ private final AttributeMapBase a;
+ private final IAttribute b;
+ private final Map> c = Maps.newHashMap();
+ private final Map> d = Maps.newHashMap();
+ private final Map e = Maps.newHashMap();
+ private double f;
+ private boolean g = true;
+ private double h;
+
+ public AttributeModifiable(AttributeMapBase attributemapbase, IAttribute iattribute) {
+ this.a = attributemapbase;
+ this.b = iattribute;
+ this.f = iattribute.b();
+
+ for (int i = 0; i < 3; ++i) {
+ this.c.put(Integer.valueOf(i), Sets.newHashSet());
+ }
+
+ }
+
+ public IAttribute getAttribute() {
+ return this.b;
+ }
+
+ public double b() {
+ return this.f;
+ }
+
+ public void setValue(double d0) {
+ if (d0 != this.b()) {
+ this.f = d0;
+ this.f();
+ }
+ }
+
+ public Collection a(int i) {
+ return (Collection) this.c.get(Integer.valueOf(i));
+ }
+
+ public Collection c() {
+ HashSet hashset = Sets.newHashSet();
+
+ for (int i = 0; i < 3; ++i) {
+ hashset.addAll(this.a(i));
+ }
+
+ return hashset;
+ }
+
+ public AttributeModifier a(UUID uuid) {
+ return (AttributeModifier) this.e.get(uuid);
+ }
+
+ public boolean a(AttributeModifier attributemodifier) {
+ return this.e.get(attributemodifier.a()) != null;
+ }
+
+ public void b(AttributeModifier attributemodifier) {
+ if (this.a(attributemodifier.a()) != null) {
+ throw new IllegalArgumentException("Modifier is already applied on this attribute!");
+ } else {
+ Set object = this.d.computeIfAbsent(attributemodifier.b(), k -> Sets.newHashSet());
+
+ this.c.get(attributemodifier.c()).add(attributemodifier);
+ object.add(attributemodifier);
+ this.e.put(attributemodifier.a(), attributemodifier);
+ this.f();
+ }
+ }
+
+ protected void f() {
+ this.g = true;
+ this.a.a((AttributeInstance) this);
+ }
+
+ public void c(AttributeModifier attributemodifier) {
+ for (int i = 0; i < 3; ++i) {
+ Set set = (Set) this.c.get(Integer.valueOf(i));
+
+ set.remove(attributemodifier);
+ }
+
+ Set set1 = (Set) this.d.get(attributemodifier.b());
+
+ if (set1 != null) {
+ set1.remove(attributemodifier);
+ if (set1.isEmpty()) {
+ this.d.remove(attributemodifier.b());
+ }
+ }
+
+ this.e.remove(attributemodifier.a());
+ this.f();
+ }
+
+ public double getValue() {
+ if (this.g) {
+ this.h = this.g();
+ this.g = false;
+ }
+
+ return this.h;
+ }
+
+ private double g() {
+ double d0 = this.b();
+
+ AttributeModifier attributemodifier;
+
+ for (Iterator iterator = this.b(0).iterator(); iterator.hasNext(); d0 += attributemodifier.d()) {
+ attributemodifier = (AttributeModifier) iterator.next();
+ }
+
+ double d1 = d0;
+
+ Iterator iterator1;
+ AttributeModifier attributemodifier1;
+
+ for (iterator1 = this.b(1).iterator(); iterator1.hasNext(); d1 += d0 * attributemodifier1.d()) {
+ attributemodifier1 = (AttributeModifier) iterator1.next();
+ }
+
+ for (iterator1 = this.b(2).iterator(); iterator1.hasNext(); d1 *= 1.0D + attributemodifier1.d()) {
+ attributemodifier1 = (AttributeModifier) iterator1.next();
+ }
+
+ return this.b.a(d1);
+ }
+
+ private Collection b(int i) {
+ HashSet hashset = Sets.newHashSet(this.a(i));
+
+ for (IAttribute iattribute = this.b.d(); iattribute != null; iattribute = iattribute.d()) {
+ AttributeInstance attributeinstance = this.a.a(iattribute);
+
+ if (attributeinstance != null) {
+ hashset.addAll(attributeinstance.a(i));
+ }
+ }
+
+ return hashset;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifier.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifier.java
new file mode 100644
index 0000000..da33bb6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeModifier.java
@@ -0,0 +1,82 @@
+package net.minecraft.server;
+
+import io.netty.util.internal.ThreadLocalRandom;
+import java.util.Random;
+import java.util.UUID;
+import org.apache.commons.lang3.Validate;
+
+public class AttributeModifier {
+
+ private final double a;
+ private final int b;
+ private final String c;
+ private final UUID d;
+ private boolean e;
+
+ public AttributeModifier(String s, double d0, int i) {
+ this(MathHelper.a((Random) ThreadLocalRandom.current()), s, d0, i);
+ }
+
+ public AttributeModifier(UUID uuid, String s, double d0, int i) {
+ this.e = true;
+ this.d = uuid;
+ this.c = s;
+ this.a = d0;
+ this.b = i;
+ Validate.notEmpty(s, "Modifier name cannot be empty", new Object[0]);
+ Validate.inclusiveBetween(0L, 2L, (long) i, "Invalid operation");
+ }
+
+ public UUID a() {
+ return this.d;
+ }
+
+ public String b() {
+ return this.c;
+ }
+
+ public int c() {
+ return this.b;
+ }
+
+ public double d() {
+ return this.a;
+ }
+
+ public boolean e() {
+ return this.e;
+ }
+
+ public AttributeModifier a(boolean flag) {
+ this.e = flag;
+ return this;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (object != null && this.getClass() == object.getClass()) {
+ AttributeModifier attributemodifier = (AttributeModifier) object;
+
+ if (this.d != null) {
+ if (!this.d.equals(attributemodifier.d)) {
+ return false;
+ }
+ } else if (attributemodifier.d != null) {
+ return false;
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ return this.d != null ? this.d.hashCode() : 0;
+ }
+
+ public String toString() {
+ return "AttributeModifier{amount=" + this.a + ", operation=" + this.b + ", name=\'" + this.c + '\'' + ", id=" + this.d + ", serialize=" + this.e + '}';
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java b/eSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/AttributeRanged.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/AxisAlignedBB.java b/eSpigot-Server/src/main/java/net/minecraft/server/AxisAlignedBB.java
new file mode 100644
index 0000000..88b6fe5
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/AxisAlignedBB.java
@@ -0,0 +1,285 @@
+package net.minecraft.server;
+
+public class AxisAlignedBB {
+
+ public final double a;
+ public final double b;
+ public final double c;
+ public final double d;
+ public final double e;
+ public final double f;
+
+ public AxisAlignedBB(double d0, double d1, double d2, double d3, double d4, double d5) {
+ this.a = Math.min(d0, d3);
+ this.b = Math.min(d1, d4);
+ this.c = Math.min(d2, d5);
+ this.d = Math.max(d0, d3);
+ this.e = Math.max(d1, d4);
+ this.f = Math.max(d2, d5);
+ }
+
+ public AxisAlignedBB(BlockPosition blockposition, BlockPosition blockposition1) {
+ this.a = (double) blockposition.getX();
+ this.b = (double) blockposition.getY();
+ this.c = (double) blockposition.getZ();
+ this.d = (double) blockposition1.getX();
+ this.e = (double) blockposition1.getY();
+ this.f = (double) blockposition1.getZ();
+ }
+
+ public AxisAlignedBB a(double d0, double d1, double d2) {
+ double d3 = this.a;
+ double d4 = this.b;
+ double d5 = this.c;
+ double d6 = this.d;
+ double d7 = this.e;
+ double d8 = this.f;
+
+ if (d0 < 0.0D) {
+ d3 += d0;
+ } else if (d0 > 0.0D) {
+ d6 += d0;
+ }
+
+ if (d1 < 0.0D) {
+ d4 += d1;
+ } else if (d1 > 0.0D) {
+ d7 += d1;
+ }
+
+ if (d2 < 0.0D) {
+ d5 += d2;
+ } else if (d2 > 0.0D) {
+ d8 += d2;
+ }
+
+ return new AxisAlignedBB(d3, d4, d5, d6, d7, d8);
+ }
+
+ public AxisAlignedBB grow(double d0, double d1, double d2) {
+ double d3 = this.a - d0;
+ double d4 = this.b - d1;
+ double d5 = this.c - d2;
+ double d6 = this.d + d0;
+ double d7 = this.e + d1;
+ double d8 = this.f + d2;
+
+ return new AxisAlignedBB(d3, d4, d5, d6, d7, d8);
+ }
+
+ public AxisAlignedBB a(AxisAlignedBB axisalignedbb) {
+ double d0 = Math.min(this.a, axisalignedbb.a);
+ double d1 = Math.min(this.b, axisalignedbb.b);
+ double d2 = Math.min(this.c, axisalignedbb.c);
+ double d3 = Math.max(this.d, axisalignedbb.d);
+ double d4 = Math.max(this.e, axisalignedbb.e);
+ double d5 = Math.max(this.f, axisalignedbb.f);
+
+ return new AxisAlignedBB(d0, d1, d2, d3, d4, d5);
+ }
+
+ public static AxisAlignedBB a(double d0, double d1, double d2, double d3, double d4, double d5) {
+ double d6 = Math.min(d0, d3);
+ double d7 = Math.min(d1, d4);
+ double d8 = Math.min(d2, d5);
+ double d9 = Math.max(d0, d3);
+ double d10 = Math.max(d1, d4);
+ double d11 = Math.max(d2, d5);
+
+ return new AxisAlignedBB(d6, d7, d8, d9, d10, d11);
+ }
+
+ public AxisAlignedBB c(double d0, double d1, double d2) {
+ return new AxisAlignedBB(this.a + d0, this.b + d1, this.c + d2, this.d + d0, this.e + d1, this.f + d2);
+ }
+
+ public double a(AxisAlignedBB axisalignedbb, double d0) {
+ if (axisalignedbb.e > this.b && axisalignedbb.b < this.e && axisalignedbb.f > this.c && axisalignedbb.c < this.f) {
+ double d1;
+
+ if (d0 > 0.0D && axisalignedbb.d <= this.a) {
+ d1 = this.a - axisalignedbb.d;
+ if (d1 < d0) {
+ d0 = d1;
+ }
+ } else if (d0 < 0.0D && axisalignedbb.a >= this.d) {
+ d1 = this.d - axisalignedbb.a;
+ if (d1 > d0) {
+ d0 = d1;
+ }
+ }
+
+ return d0;
+ } else {
+ return d0;
+ }
+ }
+
+ public double b(AxisAlignedBB axisalignedbb, double d0) {
+ if (axisalignedbb.d > this.a && axisalignedbb.a < this.d && axisalignedbb.f > this.c && axisalignedbb.c < this.f) {
+ double d1;
+
+ if (d0 > 0.0D && axisalignedbb.e <= this.b) {
+ d1 = this.b - axisalignedbb.e;
+ if (d1 < d0) {
+ d0 = d1;
+ }
+ } else if (d0 < 0.0D && axisalignedbb.b >= this.e) {
+ d1 = this.e - axisalignedbb.b;
+ if (d1 > d0) {
+ d0 = d1;
+ }
+ }
+
+ return d0;
+ } else {
+ return d0;
+ }
+ }
+
+ public double c(AxisAlignedBB axisalignedbb, double d0) {
+ if (axisalignedbb.d > this.a && axisalignedbb.a < this.d && axisalignedbb.e > this.b && axisalignedbb.b < this.e) {
+ double d1;
+
+ if (d0 > 0.0D && axisalignedbb.f <= this.c) {
+ d1 = this.c - axisalignedbb.f;
+ if (d1 < d0) {
+ d0 = d1;
+ }
+ } else if (d0 < 0.0D && axisalignedbb.c >= this.f) {
+ d1 = this.f - axisalignedbb.c;
+ if (d1 > d0) {
+ d0 = d1;
+ }
+ }
+
+ return d0;
+ } else {
+ return d0;
+ }
+ }
+
+ public boolean b(AxisAlignedBB axisalignedbb) {
+ return axisalignedbb.d > this.a && axisalignedbb.a < this.d ? (axisalignedbb.e > this.b && axisalignedbb.b < this.e ? axisalignedbb.f > this.c && axisalignedbb.c < this.f : false) : false;
+ }
+
+ public boolean a(Vec3D vec3d) {
+ return vec3d.a > this.a && vec3d.a < this.d ? (vec3d.b > this.b && vec3d.b < this.e ? vec3d.c > this.c && vec3d.c < this.f : false) : false;
+ }
+
+ public double a() {
+ double d0 = this.d - this.a;
+ double d1 = this.e - this.b;
+ double d2 = this.f - this.c;
+
+ return (d0 + d1 + d2) / 3.0D;
+ }
+
+ public AxisAlignedBB shrink(double d0, double d1, double d2) {
+ double d3 = this.a + d0;
+ double d4 = this.b + d1;
+ double d5 = this.c + d2;
+ double d6 = this.d - d0;
+ double d7 = this.e - d1;
+ double d8 = this.f - d2;
+
+ return new AxisAlignedBB(d3, d4, d5, d6, d7, d8);
+ }
+
+ public MovingObjectPosition a(Vec3D vec3d, Vec3D vec3d1) {
+ Vec3D vec3d2 = vec3d.a(vec3d1, this.a);
+ Vec3D vec3d3 = vec3d.a(vec3d1, this.d);
+ Vec3D vec3d4 = vec3d.b(vec3d1, this.b);
+ Vec3D vec3d5 = vec3d.b(vec3d1, this.e);
+ Vec3D vec3d6 = vec3d.c(vec3d1, this.c);
+ Vec3D vec3d7 = vec3d.c(vec3d1, this.f);
+
+ if (!this.b(vec3d2)) {
+ vec3d2 = null;
+ }
+
+ if (!this.b(vec3d3)) {
+ vec3d3 = null;
+ }
+
+ if (!this.c(vec3d4)) {
+ vec3d4 = null;
+ }
+
+ if (!this.c(vec3d5)) {
+ vec3d5 = null;
+ }
+
+ if (!this.d(vec3d6)) {
+ vec3d6 = null;
+ }
+
+ if (!this.d(vec3d7)) {
+ vec3d7 = null;
+ }
+
+ Vec3D vec3d8 = null;
+
+ if (vec3d2 != null) {
+ vec3d8 = vec3d2;
+ }
+
+ if (vec3d3 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d3) < vec3d.distanceSquared(vec3d8))) {
+ vec3d8 = vec3d3;
+ }
+
+ if (vec3d4 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d4) < vec3d.distanceSquared(vec3d8))) {
+ vec3d8 = vec3d4;
+ }
+
+ if (vec3d5 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d5) < vec3d.distanceSquared(vec3d8))) {
+ vec3d8 = vec3d5;
+ }
+
+ if (vec3d6 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d6) < vec3d.distanceSquared(vec3d8))) {
+ vec3d8 = vec3d6;
+ }
+
+ if (vec3d7 != null && (vec3d8 == null || vec3d.distanceSquared(vec3d7) < vec3d.distanceSquared(vec3d8))) {
+ vec3d8 = vec3d7;
+ }
+
+ if (vec3d8 == null) {
+ return null;
+ } else {
+ EnumDirection enumdirection = null;
+
+ if (vec3d8 == vec3d2) {
+ enumdirection = EnumDirection.WEST;
+ } else if (vec3d8 == vec3d3) {
+ enumdirection = EnumDirection.EAST;
+ } else if (vec3d8 == vec3d4) {
+ enumdirection = EnumDirection.DOWN;
+ } else if (vec3d8 == vec3d5) {
+ enumdirection = EnumDirection.UP;
+ } else if (vec3d8 == vec3d6) {
+ enumdirection = EnumDirection.NORTH;
+ } else {
+ enumdirection = EnumDirection.SOUTH;
+ }
+
+ return new MovingObjectPosition(vec3d8, enumdirection);
+ }
+ }
+
+ private boolean b(Vec3D vec3d) {
+ return vec3d == null ? false : vec3d.b >= this.b && vec3d.b <= this.e && vec3d.c >= this.c && vec3d.c <= this.f;
+ }
+
+ private boolean c(Vec3D vec3d) {
+ return vec3d == null ? false : vec3d.a >= this.a && vec3d.a <= this.d && vec3d.c >= this.c && vec3d.c <= this.f;
+ }
+
+ private boolean d(Vec3D vec3d) {
+ return vec3d == null ? false : vec3d.a >= this.a && vec3d.a <= this.d && vec3d.b >= this.b && vec3d.b <= this.e;
+ }
+
+ public String toString() {
+ return "box[" + this.a + ", " + this.b + ", " + this.c + " -> " + this.d + ", " + this.e + ", " + this.f + "]";
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java
similarity index 94%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java
index 54f9c32..f86c12f 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BaseBlockPosition.java
@@ -1,6 +1,6 @@
package net.minecraft.server;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
public class BaseBlockPosition implements Comparable {
@@ -80,7 +80,7 @@ public class BaseBlockPosition implements Comparable {
}
public String toString() {
- return Objects.toStringHelper(this).add("x", this.getX()).add("y", this.getY()).add("z", this.getZ()).toString();
+ return MoreObjects.toStringHelper(this).add("x", this.getX()).add("y", this.getY()).add("z", this.getZ()).toString();
}
// Paperspigot - Signature change, Object -> BaseBlockPosition
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeBase.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBaseSub.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBaseSub.java
new file mode 100644
index 0000000..e2280a4
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBaseSub.java
@@ -0,0 +1,62 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.Random;
+
+public class BiomeBaseSub extends BiomeBase {
+
+ protected BiomeBase aE;
+
+ public BiomeBaseSub(int i, BiomeBase biomebase) {
+ super(i);
+ this.aE = biomebase;
+ this.a(biomebase.ai, true);
+ this.ah = biomebase.ah + " M";
+ this.ak = biomebase.ak;
+ this.al = biomebase.al;
+ this.am = biomebase.am;
+ this.an = biomebase.an;
+ this.ao = biomebase.ao;
+ this.temperature = biomebase.temperature;
+ this.humidity = biomebase.humidity;
+ this.ar = biomebase.ar;
+ this.ax = biomebase.ax;
+ this.ay = biomebase.ay;
+ this.au = Lists.newArrayList(biomebase.au);
+ this.at = Lists.newArrayList(biomebase.at);
+ this.aw = Lists.newArrayList(biomebase.aw);
+ this.av = Lists.newArrayList(biomebase.av);
+ this.temperature = biomebase.temperature;
+ this.humidity = biomebase.humidity;
+ this.an = biomebase.an + 0.1F;
+ this.ao = biomebase.ao + 0.2F;
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ this.aE.as.a(world, random, this, blockposition);
+ }
+
+ public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
+ this.aE.a(world, random, chunksnapshot, i, j, d0);
+ }
+
+ public float g() {
+ return this.aE.g();
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return this.aE.a(random);
+ }
+
+ public Class extends BiomeBase> l() {
+ return this.aE.l();
+ }
+
+ public boolean a(BiomeBase biomebase) {
+ return this.aE.a(biomebase);
+ }
+
+ public BiomeBase.EnumTemperature m() {
+ return this.aE.m();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBeach.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBeach.java
new file mode 100644
index 0000000..ba9285d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBeach.java
@@ -0,0 +1,15 @@
+package net.minecraft.server;
+
+public class BiomeBeach extends BiomeBase {
+
+ public BiomeBeach(int i) {
+ super(i);
+ this.au.clear();
+ this.ak = Blocks.SAND.getBlockData();
+ this.al = Blocks.SAND.getBlockData();
+ this.as.A = -999;
+ this.as.D = 0;
+ this.as.F = 0;
+ this.as.G = 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBigHills.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBigHills.java
new file mode 100644
index 0000000..90c4992
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeBigHills.java
@@ -0,0 +1,87 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeBigHills extends BiomeBase {
+
+ private WorldGenerator aD;
+ private WorldGenTaiga2 aE;
+ private int aF;
+ private int aG;
+ private int aH;
+ private int aI;
+
+ protected BiomeBigHills(int i, boolean flag) {
+ super(i);
+ this.aD = new WorldGenMinable(Blocks.MONSTER_EGG.getBlockData().set(BlockMonsterEggs.VARIANT, BlockMonsterEggs.EnumMonsterEggVarient.STONE), 9);
+ this.aE = new WorldGenTaiga2(false);
+ this.aF = 0;
+ this.aG = 1;
+ this.aH = 2;
+ this.aI = this.aF;
+ if (flag) {
+ this.as.A = 3;
+ this.aI = this.aG;
+ }
+
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return (WorldGenTreeAbstract) (random.nextInt(3) > 0 ? this.aE : super.a(random));
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ super.a(world, random, blockposition);
+ int i = 3 + random.nextInt(6);
+
+ int j;
+ int k;
+ int l;
+
+ for (j = 0; j < i; ++j) {
+ k = random.nextInt(16);
+ l = random.nextInt(28) + 4;
+ int i1 = random.nextInt(16);
+ BlockPosition blockposition1 = blockposition.a(k, l, i1);
+
+ if (world.getType(blockposition1).getBlock() == Blocks.STONE) {
+ world.setTypeAndData(blockposition1, Blocks.EMERALD_ORE.getBlockData(), 2);
+ }
+ }
+
+ for (i = 0; i < 7; ++i) {
+ j = random.nextInt(16);
+ k = random.nextInt(64);
+ l = random.nextInt(16);
+ this.aD.generate(world, random, blockposition.a(j, k, l));
+ }
+
+ }
+
+ public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
+ this.ak = Blocks.GRASS.getBlockData();
+ this.al = Blocks.DIRT.getBlockData();
+ if ((d0 < -1.0D || d0 > 2.0D) && this.aI == this.aH) {
+ this.ak = Blocks.GRAVEL.getBlockData();
+ this.al = Blocks.GRAVEL.getBlockData();
+ } else if (d0 > 1.0D && this.aI != this.aG) {
+ this.ak = Blocks.STONE.getBlockData();
+ this.al = Blocks.STONE.getBlockData();
+ }
+
+ this.b(world, random, chunksnapshot, i, j, d0);
+ }
+
+ private BiomeBigHills b(BiomeBase biomebase) {
+ this.aI = this.aH;
+ this.a(biomebase.ai, true);
+ this.a(biomebase.ah + " M");
+ this.a(new BiomeBase.BiomeTemperature(biomebase.an, biomebase.ao));
+ this.a(biomebase.temperature, biomebase.humidity);
+ return this;
+ }
+
+ protected BiomeBase d(int i) {
+ return (new BiomeBigHills(i, false)).b((BiomeBase) this);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeCache.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeCache.java
new file mode 100644
index 0000000..d1c0634
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeCache.java
@@ -0,0 +1,84 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.List;
+
+public class BiomeCache {
+
+ private final WorldChunkManager a;
+ private long b;
+ private LongHashMap c = new LongHashMap();
+ private List d = Lists.newArrayList();
+
+ public BiomeCache(WorldChunkManager worldchunkmanager) {
+ this.a = worldchunkmanager;
+ }
+
+ public BiomeCache.BiomeCacheBlock a(int i, int j) {
+ i >>= 4;
+ j >>= 4;
+ long k = (long) i & 4294967295L | ((long) j & 4294967295L) << 32;
+ BiomeCache.BiomeCacheBlock biomecache_biomecacheblock = (BiomeCache.BiomeCacheBlock) this.c.getEntry(k);
+
+ if (biomecache_biomecacheblock == null) {
+ biomecache_biomecacheblock = new BiomeCache.BiomeCacheBlock(i, j);
+ this.c.put(k, biomecache_biomecacheblock);
+ this.d.add(biomecache_biomecacheblock);
+ }
+
+ biomecache_biomecacheblock.e = MinecraftServer.az();
+ return biomecache_biomecacheblock;
+ }
+
+ public BiomeBase a(int i, int j, BiomeBase biomebase) {
+ BiomeBase biomebase1 = this.a(i, j).a(i, j);
+
+ return biomebase1 == null ? biomebase : biomebase1;
+ }
+
+ public void a() {
+ long i = MinecraftServer.az();
+ long j = i - this.b;
+
+ if (j > 7500L || j < 0L) {
+ this.b = i;
+
+ for (int k = 0; k < this.d.size(); ++k) {
+ BiomeCache.BiomeCacheBlock biomecache_biomecacheblock = (BiomeCache.BiomeCacheBlock) this.d.get(k);
+ long l = i - biomecache_biomecacheblock.e;
+
+ if (l > 30000L || l < 0L) {
+ this.d.remove(k--);
+ long i1 = (long) biomecache_biomecacheblock.c & 4294967295L | ((long) biomecache_biomecacheblock.d & 4294967295L) << 32;
+
+ this.c.remove(i1);
+ }
+ }
+ }
+
+ }
+
+ public BiomeBase[] c(int i, int j) {
+ return this.a(i, j).b;
+ }
+
+ public class BiomeCacheBlock {
+
+ public float[] a = new float[256];
+ public BiomeBase[] b = new BiomeBase[256];
+ public int c;
+ public int d;
+ public long e;
+
+ public BiomeCacheBlock(int i, int j) {
+ this.c = i;
+ this.d = j;
+ BiomeCache.this.a.getWetness(this.a, i << 4, j << 4, 16, 16);
+ BiomeCache.this.a.a(this.b, i << 4, j << 4, 16, 16, false);
+ }
+
+ public BiomeBase a(int i, int j) {
+ return this.b[i & 15 | (j & 15) << 4];
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeDecorator.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDesert.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDesert.java
new file mode 100644
index 0000000..59bea06
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeDesert.java
@@ -0,0 +1,30 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeDesert extends BiomeBase {
+
+ public BiomeDesert(int i) {
+ super(i);
+ this.au.clear();
+ this.ak = Blocks.SAND.getBlockData();
+ this.al = Blocks.SAND.getBlockData();
+ this.as.A = -999;
+ this.as.D = 2;
+ this.as.F = 50;
+ this.as.G = 10;
+ this.au.clear();
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ super.a(world, random, blockposition);
+ if (random.nextInt(1000) == 0) {
+ int i = random.nextInt(16) + 8;
+ int j = random.nextInt(16) + 8;
+ BlockPosition blockposition1 = world.getHighestBlockYAt(blockposition.a(i, 0, j)).up();
+
+ (new WorldGenDesertWell()).generate(world, random, blockposition1);
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeForest.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeForest.java
new file mode 100644
index 0000000..022c626
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeForest.java
@@ -0,0 +1,159 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeForest extends BiomeBase {
+
+ private int aG;
+ protected static final WorldGenForest aD = new WorldGenForest(false, true);
+ protected static final WorldGenForest aE = new WorldGenForest(false, false);
+ protected static final WorldGenForestTree aF = new WorldGenForestTree(false);
+
+ public BiomeForest(int i, int j) {
+ super(i);
+ this.aG = j;
+ this.as.A = 10;
+ this.as.C = 2;
+ if (this.aG == 1) {
+ this.as.A = 6;
+ this.as.B = 100;
+ this.as.C = 1;
+ }
+
+ this.a(5159473);
+ this.a(0.7F, 0.8F);
+ if (this.aG == 2) {
+ this.aj = 353825;
+ this.ai = 3175492;
+ this.a(0.6F, 0.6F);
+ }
+
+ if (this.aG == 0) {
+ this.au.add(new BiomeBase.BiomeMeta(EntityWolf.class, 5, 4, 4));
+ }
+
+ if (this.aG == 3) {
+ this.as.A = -999;
+ }
+
+ }
+
+ protected BiomeBase a(int i, boolean flag) {
+ if (this.aG == 2) {
+ this.aj = 353825;
+ this.ai = i;
+ if (flag) {
+ this.aj = (this.aj & 16711422) >> 1;
+ }
+
+ return this;
+ } else {
+ return super.a(i, flag);
+ }
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return (WorldGenTreeAbstract) (this.aG == 3 && random.nextInt(3) > 0 ? BiomeForest.aF : (this.aG != 2 && random.nextInt(5) != 0 ? this.aA : BiomeForest.aE));
+ }
+
+ public BlockFlowers.EnumFlowerVarient a(Random random, BlockPosition blockposition) {
+ if (this.aG == 1) {
+ double d0 = MathHelper.a((1.0D + BiomeForest.af.a((double) blockposition.getX() / 48.0D, (double) blockposition.getZ() / 48.0D)) / 2.0D, 0.0D, 0.9999D);
+ BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient = BlockFlowers.EnumFlowerVarient.values()[(int) (d0 * (double) BlockFlowers.EnumFlowerVarient.values().length)];
+
+ return blockflowers_enumflowervarient == BlockFlowers.EnumFlowerVarient.BLUE_ORCHID ? BlockFlowers.EnumFlowerVarient.POPPY : blockflowers_enumflowervarient;
+ } else {
+ return super.a(random, blockposition);
+ }
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ int i;
+ int j;
+ int k;
+ int l;
+
+ if (this.aG == 3) {
+ for (i = 0; i < 4; ++i) {
+ for (j = 0; j < 4; ++j) {
+ k = i * 4 + 1 + 8 + random.nextInt(3);
+ l = j * 4 + 1 + 8 + random.nextInt(3);
+ BlockPosition blockposition1 = world.getHighestBlockYAt(blockposition.a(k, 0, l));
+
+ if (random.nextInt(20) == 0) {
+ WorldGenHugeMushroom worldgenhugemushroom = new WorldGenHugeMushroom();
+
+ worldgenhugemushroom.generate(world, random, blockposition1);
+ } else {
+ WorldGenTreeAbstract worldgentreeabstract = this.a(random);
+
+ worldgentreeabstract.e();
+ if (worldgentreeabstract.generate(world, random, blockposition1)) {
+ worldgentreeabstract.a(world, random, blockposition1);
+ }
+ }
+ }
+ }
+ }
+
+ i = random.nextInt(5) - 3;
+ if (this.aG == 1) {
+ i += 2;
+ }
+
+ j = 0;
+
+ while (j < i) {
+ k = random.nextInt(3);
+ if (k == 0) {
+ BiomeForest.ag.a(BlockTallPlant.EnumTallFlowerVariants.SYRINGA);
+ } else if (k == 1) {
+ BiomeForest.ag.a(BlockTallPlant.EnumTallFlowerVariants.ROSE);
+ } else if (k == 2) {
+ BiomeForest.ag.a(BlockTallPlant.EnumTallFlowerVariants.PAEONIA);
+ }
+
+ l = 0;
+
+ while (true) {
+ if (l < 5) {
+ int i1 = random.nextInt(16) + 8;
+ int j1 = random.nextInt(16) + 8;
+ int k1 = random.nextInt(world.getHighestBlockYAt(blockposition.a(i1, 0, j1)).getY() + 32);
+
+ if (!BiomeForest.ag.generate(world, random, new BlockPosition(blockposition.getX() + i1, k1, blockposition.getZ() + j1))) {
+ ++l;
+ continue;
+ }
+ }
+
+ ++j;
+ break;
+ }
+ }
+
+ super.a(world, random, blockposition);
+ }
+
+ protected BiomeBase d(final int i) {
+ if (this.id == BiomeBase.FOREST.id) {
+ BiomeForest biomeforest = new BiomeForest(i, 1);
+
+ biomeforest.a(new BiomeBase.BiomeTemperature(this.an, this.ao + 0.2F));
+ biomeforest.a("Flower Forest");
+ biomeforest.a(6976549, true);
+ biomeforest.a(8233509);
+ return biomeforest;
+ } else {
+ return this.id != BiomeBase.BIRCH_FOREST.id && this.id != BiomeBase.BIRCH_FOREST_HILLS.id ? new BiomeBaseSub(i, this) {
+ public void a(World world, Random random, BlockPosition blockposition) {
+ this.aE.a(world, random, blockposition);
+ }
+ } : new BiomeBaseSub(i, this) {
+ public WorldGenTreeAbstract a(Random random) {
+ return random.nextBoolean() ? BiomeForest.aD : BiomeForest.aE;
+ }
+ };
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeHell.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeHell.java
new file mode 100644
index 0000000..d2845b5
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeHell.java
@@ -0,0 +1,15 @@
+package net.minecraft.server;
+
+public class BiomeHell extends BiomeBase {
+
+ public BiomeHell(int i) {
+ super(i);
+ this.at.clear();
+ this.au.clear();
+ this.av.clear();
+ this.aw.clear();
+ this.at.add(new BiomeBase.BiomeMeta(EntityGhast.class, 50, 4, 4));
+ this.at.add(new BiomeBase.BiomeMeta(EntityPigZombie.class, 100, 4, 4));
+ this.at.add(new BiomeBase.BiomeMeta(EntityMagmaCube.class, 1, 4, 4));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeIcePlains.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeIcePlains.java
new file mode 100644
index 0000000..b5a5850
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeIcePlains.java
@@ -0,0 +1,54 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeIcePlains extends BiomeBase {
+
+ private boolean aD;
+ private WorldGenPackedIce2 aE = new WorldGenPackedIce2();
+ private WorldGenPackedIce1 aF = new WorldGenPackedIce1(4);
+
+ public BiomeIcePlains(int i, boolean flag) {
+ super(i);
+ this.aD = flag;
+ if (flag) {
+ this.ak = Blocks.SNOW.getBlockData();
+ }
+
+ this.au.clear();
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ if (this.aD) {
+ int i;
+ int j;
+ int k;
+
+ for (i = 0; i < 3; ++i) {
+ j = random.nextInt(16) + 8;
+ k = random.nextInt(16) + 8;
+ this.aE.generate(world, random, world.getHighestBlockYAt(blockposition.a(j, 0, k)));
+ }
+
+ for (i = 0; i < 2; ++i) {
+ j = random.nextInt(16) + 8;
+ k = random.nextInt(16) + 8;
+ this.aF.generate(world, random, world.getHighestBlockYAt(blockposition.a(j, 0, k)));
+ }
+ }
+
+ super.a(world, random, blockposition);
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return new WorldGenTaiga2(false);
+ }
+
+ protected BiomeBase d(int i) {
+ BiomeBase biomebase = (new BiomeIcePlains(i, true)).a(13828095, true).a(this.ah + " Spikes").c().a(0.0F, 0.5F).a(new BiomeBase.BiomeTemperature(this.an + 0.1F, this.ao + 0.1F));
+
+ biomebase.an = this.an + 0.3F;
+ biomebase.ao = this.ao + 0.4F;
+ return biomebase;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeJungle.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeJungle.java
new file mode 100644
index 0000000..1d069d9
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeJungle.java
@@ -0,0 +1,56 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeJungle extends BiomeBase {
+
+ private boolean aD;
+ private static final IBlockData aE = Blocks.LOG.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.JUNGLE);
+ private static final IBlockData aF = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.JUNGLE).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false));
+ private static final IBlockData aG = Blocks.LEAVES.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false));
+
+ public BiomeJungle(int i, boolean flag) {
+ super(i);
+ this.aD = flag;
+ if (flag) {
+ this.as.A = 2;
+ } else {
+ this.as.A = 50;
+ }
+
+ this.as.C = 25;
+ this.as.B = 4;
+ if (!flag) {
+ this.at.add(new BiomeBase.BiomeMeta(EntityOcelot.class, 2, 1, 1));
+ }
+
+ this.au.add(new BiomeBase.BiomeMeta(EntityChicken.class, 10, 4, 4));
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return (WorldGenTreeAbstract) (random.nextInt(10) == 0 ? this.aB : (random.nextInt(2) == 0 ? new WorldGenGroundBush(BiomeJungle.aE, BiomeJungle.aG) : (!this.aD && random.nextInt(3) == 0 ? new WorldGenJungleTree(false, 10, 20, BiomeJungle.aE, BiomeJungle.aF) : new WorldGenTrees(false, 4 + random.nextInt(7), BiomeJungle.aE, BiomeJungle.aF, true))));
+ }
+
+ public WorldGenerator b(Random random) {
+ return random.nextInt(4) == 0 ? new WorldGenGrass(BlockLongGrass.EnumTallGrassType.FERN) : new WorldGenGrass(BlockLongGrass.EnumTallGrassType.GRASS);
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ super.a(world, random, blockposition);
+ int i = random.nextInt(16) + 8;
+ int j = random.nextInt(16) + 8;
+ int k = random.nextInt(world.getHighestBlockYAt(blockposition.a(i, 0, j)).getY() * 2);
+
+ (new WorldGenMelon()).generate(world, random, blockposition.a(i, k, j));
+ WorldGenVines worldgenvines = new WorldGenVines();
+
+ for (j = 0; j < 50; ++j) {
+ k = random.nextInt(16) + 8;
+ boolean flag = true;
+ int l = random.nextInt(16) + 8;
+
+ worldgenvines.generate(world, random, blockposition.a(k, 128, l));
+ }
+
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeMesa.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMushrooms.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMushrooms.java
new file mode 100644
index 0000000..5e61e18
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeMushrooms.java
@@ -0,0 +1,18 @@
+package net.minecraft.server;
+
+public class BiomeMushrooms extends BiomeBase {
+
+ public BiomeMushrooms(int i) {
+ super(i);
+ this.as.A = -100;
+ this.as.B = -100;
+ this.as.C = -100;
+ this.as.E = 1;
+ this.as.K = 1;
+ this.ak = Blocks.MYCELIUM.getBlockData();
+ this.at.clear();
+ this.au.clear();
+ this.av.clear();
+ this.au.add(new BiomeBase.BiomeMeta(EntityMushroomCow.class, 8, 4, 8));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeOcean.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeOcean.java
new file mode 100644
index 0000000..1ddc21c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeOcean.java
@@ -0,0 +1,19 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeOcean extends BiomeBase {
+
+ public BiomeOcean(int i) {
+ super(i);
+ this.au.clear();
+ }
+
+ public BiomeBase.EnumTemperature m() {
+ return BiomeBase.EnumTemperature.OCEAN;
+ }
+
+ public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
+ super.a(world, random, chunksnapshot, i, j, d0);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomePlains.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomePlains.java
new file mode 100644
index 0000000..50d8e6a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomePlains.java
@@ -0,0 +1,93 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomePlains extends BiomeBase {
+
+ protected boolean aD;
+
+ protected BiomePlains(int i) {
+ super(i);
+ this.a(0.8F, 0.4F);
+ this.a(BiomePlains.e);
+ this.au.add(new BiomeBase.BiomeMeta(EntityHorse.class, 5, 2, 6));
+ this.as.A = -999;
+ this.as.B = 4;
+ this.as.C = 10;
+ }
+
+ public BlockFlowers.EnumFlowerVarient a(Random random, BlockPosition blockposition) {
+ double d0 = BiomePlains.af.a((double) blockposition.getX() / 200.0D, (double) blockposition.getZ() / 200.0D);
+ int i;
+
+ if (d0 < -0.8D) {
+ i = random.nextInt(4);
+ switch (i) {
+ case 0:
+ return BlockFlowers.EnumFlowerVarient.ORANGE_TULIP;
+
+ case 1:
+ return BlockFlowers.EnumFlowerVarient.RED_TULIP;
+
+ case 2:
+ return BlockFlowers.EnumFlowerVarient.PINK_TULIP;
+
+ case 3:
+ default:
+ return BlockFlowers.EnumFlowerVarient.WHITE_TULIP;
+ }
+ } else if (random.nextInt(3) > 0) {
+ i = random.nextInt(3);
+ return i == 0 ? BlockFlowers.EnumFlowerVarient.POPPY : (i == 1 ? BlockFlowers.EnumFlowerVarient.HOUSTONIA : BlockFlowers.EnumFlowerVarient.OXEYE_DAISY);
+ } else {
+ return BlockFlowers.EnumFlowerVarient.DANDELION;
+ }
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ double d0 = BiomePlains.af.a((double) (blockposition.getX() + 8) / 200.0D, (double) (blockposition.getZ() + 8) / 200.0D);
+ int i;
+ int j;
+ int k;
+ int l;
+
+ if (d0 < -0.8D) {
+ this.as.B = 15;
+ this.as.C = 5;
+ } else {
+ this.as.B = 4;
+ this.as.C = 10;
+ BiomePlains.ag.a(BlockTallPlant.EnumTallFlowerVariants.GRASS);
+
+ for (i = 0; i < 7; ++i) {
+ j = random.nextInt(16) + 8;
+ k = random.nextInt(16) + 8;
+ l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32);
+ BiomePlains.ag.generate(world, random, blockposition.a(j, l, k));
+ }
+ }
+
+ if (this.aD) {
+ BiomePlains.ag.a(BlockTallPlant.EnumTallFlowerVariants.SUNFLOWER);
+
+ for (i = 0; i < 10; ++i) {
+ j = random.nextInt(16) + 8;
+ k = random.nextInt(16) + 8;
+ l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32);
+ BiomePlains.ag.generate(world, random, blockposition.a(j, l, k));
+ }
+ }
+
+ super.a(world, random, blockposition);
+ }
+
+ protected BiomeBase d(int i) {
+ BiomePlains biomeplains = new BiomePlains(i);
+
+ biomeplains.a("Sunflower Plains");
+ biomeplains.aD = true;
+ biomeplains.b(9286496);
+ biomeplains.aj = 14273354;
+ return biomeplains;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeRiver.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeRiver.java
new file mode 100644
index 0000000..e0a0a79
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeRiver.java
@@ -0,0 +1,9 @@
+package net.minecraft.server;
+
+public class BiomeRiver extends BiomeBase {
+
+ public BiomeRiver(int i) {
+ super(i);
+ this.au.clear();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSavanna.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSavanna.java
new file mode 100644
index 0000000..4d3d38a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSavanna.java
@@ -0,0 +1,70 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeSavanna extends BiomeBase {
+
+ private static final WorldGenAcaciaTree aD = new WorldGenAcaciaTree(false);
+
+ protected BiomeSavanna(int i) {
+ super(i);
+ this.au.add(new BiomeBase.BiomeMeta(EntityHorse.class, 1, 2, 6));
+ this.as.A = 1;
+ this.as.B = 4;
+ this.as.C = 20;
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return (WorldGenTreeAbstract) (random.nextInt(5) > 0 ? BiomeSavanna.aD : this.aA);
+ }
+
+ protected BiomeBase d(int i) {
+ BiomeSavanna.BiomeSavannaSub biomesavanna_biomesavannasub = new BiomeSavanna.BiomeSavannaSub(i, this);
+
+ biomesavanna_biomesavannasub.temperature = (this.temperature + 1.0F) * 0.5F;
+ biomesavanna_biomesavannasub.an = this.an * 0.5F + 0.3F;
+ biomesavanna_biomesavannasub.ao = this.ao * 0.5F + 1.2F;
+ return biomesavanna_biomesavannasub;
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ BiomeSavanna.ag.a(BlockTallPlant.EnumTallFlowerVariants.GRASS);
+
+ for (int i = 0; i < 7; ++i) {
+ int j = random.nextInt(16) + 8;
+ int k = random.nextInt(16) + 8;
+ int l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32);
+
+ BiomeSavanna.ag.generate(world, random, blockposition.a(j, l, k));
+ }
+
+ super.a(world, random, blockposition);
+ }
+
+ public static class BiomeSavannaSub extends BiomeBaseSub {
+
+ public BiomeSavannaSub(int i, BiomeBase biomebase) {
+ super(i, biomebase);
+ this.as.A = 2;
+ this.as.B = 2;
+ this.as.C = 5;
+ }
+
+ public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
+ this.ak = Blocks.GRASS.getBlockData();
+ this.al = Blocks.DIRT.getBlockData();
+ if (d0 > 1.75D) {
+ this.ak = Blocks.STONE.getBlockData();
+ this.al = Blocks.STONE.getBlockData();
+ } else if (d0 > -0.5D) {
+ this.ak = Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.COARSE_DIRT);
+ }
+
+ this.b(world, random, chunksnapshot, i, j, d0);
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ this.as.a(world, random, this, blockposition);
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeStoneBeach.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeStoneBeach.java
new file mode 100644
index 0000000..453033f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeStoneBeach.java
@@ -0,0 +1,15 @@
+package net.minecraft.server;
+
+public class BiomeStoneBeach extends BiomeBase {
+
+ public BiomeStoneBeach(int i) {
+ super(i);
+ this.au.clear();
+ this.ak = Blocks.STONE.getBlockData();
+ this.al = Blocks.STONE.getBlockData();
+ this.as.A = -999;
+ this.as.D = 0;
+ this.as.F = 0;
+ this.as.G = 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSwamp.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSwamp.java
new file mode 100644
index 0000000..29959fd
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeSwamp.java
@@ -0,0 +1,53 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeSwamp extends BiomeBase {
+
+ protected BiomeSwamp(int i) {
+ super(i);
+ this.as.A = 2;
+ this.as.B = 1;
+ this.as.D = 1;
+ this.as.E = 8;
+ this.as.F = 10;
+ this.as.J = 1;
+ this.as.z = 4;
+ this.as.I = 0;
+ this.as.H = 0;
+ this.as.C = 5;
+ this.ar = 14745518;
+ this.at.add(new BiomeBase.BiomeMeta(EntitySlime.class, 1, 1, 1));
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return this.aC;
+ }
+
+ public BlockFlowers.EnumFlowerVarient a(Random random, BlockPosition blockposition) {
+ return BlockFlowers.EnumFlowerVarient.BLUE_ORCHID;
+ }
+
+ public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
+ double d1 = BiomeSwamp.af.a((double) i * 0.25D, (double) j * 0.25D);
+
+ if (d1 > 0.0D) {
+ int k = i & 15;
+ int l = j & 15;
+
+ for (int i1 = 255; i1 >= 0; --i1) {
+ if (chunksnapshot.a(l, i1, k).getBlock().getMaterial() != Material.AIR) {
+ if (i1 == 62 && chunksnapshot.a(l, i1, k).getBlock() != Blocks.WATER) {
+ chunksnapshot.a(l, i1, k, Blocks.WATER.getBlockData());
+ if (d1 < 0.12D) {
+ chunksnapshot.a(l, i1 + 1, k, Blocks.WATERLILY.getBlockData());
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ this.b(world, random, chunksnapshot, i, j, d0);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTaiga.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTaiga.java
new file mode 100644
index 0000000..314dfed
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTaiga.java
@@ -0,0 +1,85 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BiomeTaiga extends BiomeBase {
+
+ private static final WorldGenTaiga1 aD = new WorldGenTaiga1();
+ private static final WorldGenTaiga2 aE = new WorldGenTaiga2(false);
+ private static final WorldGenMegaTree aF = new WorldGenMegaTree(false, false);
+ private static final WorldGenMegaTree aG = new WorldGenMegaTree(false, true);
+ private static final WorldGenTaigaStructure aH = new WorldGenTaigaStructure(Blocks.MOSSY_COBBLESTONE, 0);
+ private int aI;
+
+ public BiomeTaiga(int i, int j) {
+ super(i);
+ this.aI = j;
+ this.au.add(new BiomeBase.BiomeMeta(EntityWolf.class, 8, 4, 4));
+ this.as.A = 10;
+ if (j != 1 && j != 2) {
+ this.as.C = 1;
+ this.as.E = 1;
+ } else {
+ this.as.C = 7;
+ this.as.D = 1;
+ this.as.E = 3;
+ }
+
+ }
+
+ public WorldGenTreeAbstract a(Random random) {
+ return (WorldGenTreeAbstract) ((this.aI == 1 || this.aI == 2) && random.nextInt(3) == 0 ? (this.aI != 2 && random.nextInt(13) != 0 ? BiomeTaiga.aF : BiomeTaiga.aG) : (random.nextInt(3) == 0 ? BiomeTaiga.aD : BiomeTaiga.aE));
+ }
+
+ public WorldGenerator b(Random random) {
+ return random.nextInt(5) > 0 ? new WorldGenGrass(BlockLongGrass.EnumTallGrassType.FERN) : new WorldGenGrass(BlockLongGrass.EnumTallGrassType.GRASS);
+ }
+
+ public void a(World world, Random random, BlockPosition blockposition) {
+ int i;
+ int j;
+ int k;
+ int l;
+
+ if (this.aI == 1 || this.aI == 2) {
+ i = random.nextInt(3);
+
+ for (j = 0; j < i; ++j) {
+ k = random.nextInt(16) + 8;
+ l = random.nextInt(16) + 8;
+ BlockPosition blockposition1 = world.getHighestBlockYAt(blockposition.a(k, 0, l));
+
+ BiomeTaiga.aH.generate(world, random, blockposition1);
+ }
+ }
+
+ BiomeTaiga.ag.a(BlockTallPlant.EnumTallFlowerVariants.FERN);
+
+ for (i = 0; i < 7; ++i) {
+ j = random.nextInt(16) + 8;
+ k = random.nextInt(16) + 8;
+ l = random.nextInt(world.getHighestBlockYAt(blockposition.a(j, 0, k)).getY() + 32);
+ BiomeTaiga.ag.generate(world, random, blockposition.a(j, l, k));
+ }
+
+ super.a(world, random, blockposition);
+ }
+
+ public void a(World world, Random random, ChunkSnapshot chunksnapshot, int i, int j, double d0) {
+ if (this.aI == 1 || this.aI == 2) {
+ this.ak = Blocks.GRASS.getBlockData();
+ this.al = Blocks.DIRT.getBlockData();
+ if (d0 > 1.75D) {
+ this.ak = Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.COARSE_DIRT);
+ } else if (d0 > -0.95D) {
+ this.ak = Blocks.DIRT.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.PODZOL);
+ }
+ }
+
+ this.b(world, random, chunksnapshot, i, j, d0);
+ }
+
+ protected BiomeBase d(int i) {
+ return this.id == BiomeBase.MEGA_TAIGA.id ? (new BiomeTaiga(i, 2)).a(5858897, true).a("Mega Spruce Taiga").a(5159473).a(0.25F, 0.8F).a(new BiomeBase.BiomeTemperature(this.an, this.ao)) : super.d(i);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEnd.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEnd.java
new file mode 100644
index 0000000..24fb34d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEnd.java
@@ -0,0 +1,16 @@
+package net.minecraft.server;
+
+public class BiomeTheEnd extends BiomeBase {
+
+ public BiomeTheEnd(int i) {
+ super(i);
+ this.at.clear();
+ this.au.clear();
+ this.av.clear();
+ this.aw.clear();
+ this.at.add(new BiomeBase.BiomeMeta(EntityEnderman.class, 10, 4, 4));
+ this.ak = Blocks.DIRT.getBlockData();
+ this.al = Blocks.DIRT.getBlockData();
+ this.as = new BiomeTheEndDecorator();
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java b/eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BiomeTheEndDecorator.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Block.java b/eSpigot-Server/src/main/java/net/minecraft/server/Block.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Block.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/Block.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockActionData.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockActionData.java
new file mode 100644
index 0000000..6fb62f2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockActionData.java
@@ -0,0 +1,46 @@
+package net.minecraft.server;
+
+public class BlockActionData {
+
+ private BlockPosition a;
+ private Block b;
+ private int c;
+ private int d;
+
+ public BlockActionData(BlockPosition blockposition, Block block, int i, int j) {
+ this.a = blockposition;
+ this.c = i;
+ this.d = j;
+ this.b = block;
+ }
+
+ public BlockPosition a() {
+ return this.a;
+ }
+
+ public int b() {
+ return this.c;
+ }
+
+ public int c() {
+ return this.d;
+ }
+
+ public Block d() {
+ return this.b;
+ }
+
+ public boolean equals(Object object) {
+ if (!(object instanceof BlockActionData)) {
+ return false;
+ } else {
+ BlockActionData blockactiondata = (BlockActionData) object;
+
+ return this.a.equals(blockactiondata.a) && this.c == blockactiondata.c && this.d == blockactiondata.d && this.b == blockactiondata.b;
+ }
+ }
+
+ public String toString() {
+ return "TE(" + this.a + ")," + this.c + "," + this.d + "," + this.b;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockAir.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockAir.java
new file mode 100644
index 0000000..58b6eeb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockAir.java
@@ -0,0 +1,30 @@
+package net.minecraft.server;
+
+public class BlockAir extends Block {
+
+ protected BlockAir() {
+ super(Material.AIR);
+ }
+
+ public int b() {
+ return -1;
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return null;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean a(IBlockData iblockdata, boolean flag) {
+ return false;
+ }
+
+ public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {}
+
+ public boolean a(World world, BlockPosition blockposition) {
+ return true;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockAnvil.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBanner.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBanner.java
new file mode 100644
index 0000000..e1fe30f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBanner.java
@@ -0,0 +1,214 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.Random;
+
+public class BlockBanner extends BlockContainer {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+ public static final BlockStateInteger ROTATION = BlockStateInteger.of("rotation", 0, 15);
+
+ protected BlockBanner() {
+ super(Material.WOOD);
+ float f = 0.25F;
+ float f1 = 1.0F;
+
+ this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f);
+ }
+
+ public String getName() {
+ return LocaleI18n.get("item.banner.white.name");
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return null;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return true;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean g() {
+ return true;
+ }
+
+ public TileEntity a(World world, int i) {
+ return new TileEntityBanner();
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.BANNER;
+ }
+
+ public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityBanner) {
+ ItemStack itemstack = new ItemStack(Items.BANNER, 1, ((TileEntityBanner) tileentity).b());
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+
+ tileentity.b(nbttagcompound);
+ nbttagcompound.remove("x");
+ nbttagcompound.remove("y");
+ nbttagcompound.remove("z");
+ nbttagcompound.remove("id");
+ itemstack.a("BlockEntityTag", (NBTBase) nbttagcompound);
+ a(world, blockposition, itemstack);
+ } else {
+ super.dropNaturally(world, blockposition, iblockdata, f, i);
+ }
+
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return !this.e(world, blockposition) && super.canPlace(world, blockposition);
+ }
+
+ public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) {
+ if (tileentity instanceof TileEntityBanner) {
+ TileEntityBanner tileentitybanner = (TileEntityBanner) tileentity;
+ ItemStack itemstack = new ItemStack(Items.BANNER, 1, ((TileEntityBanner) tileentity).b());
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+
+ TileEntityBanner.a(nbttagcompound, tileentitybanner.b(), tileentitybanner.d());
+ itemstack.a("BlockEntityTag", (NBTBase) nbttagcompound);
+ a(world, blockposition, itemstack);
+ } else {
+ super.a(world, entityhuman, blockposition, iblockdata, (TileEntity) null);
+ }
+
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[EnumDirection.values().length];
+
+ static {
+ try {
+ BlockBanner.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockBanner.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockBanner.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ BlockBanner.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ }
+ }
+
+ public static class BlockStandingBanner extends BlockBanner {
+
+ public BlockStandingBanner() {
+ this.j(this.blockStateList.getBlockData().set(BlockBanner.BlockStandingBanner.ROTATION, Integer.valueOf(0)));
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ if (!world.getType(blockposition.down()).getBlock().getMaterial().isBuildable()) {
+ this.b(world, blockposition, iblockdata, 0);
+ world.setAir(blockposition);
+ }
+
+ super.doPhysics(world, blockposition, iblockdata, block);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockBanner.BlockStandingBanner.ROTATION, Integer.valueOf(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((Integer) iblockdata.get(BlockBanner.BlockStandingBanner.ROTATION)).intValue();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockBanner.BlockStandingBanner.ROTATION});
+ }
+ }
+
+ public static class BlockWallBanner extends BlockBanner {
+
+ public BlockWallBanner() {
+ this.j(this.blockStateList.getBlockData().set(BlockBanner.BlockWallBanner.FACING, EnumDirection.NORTH));
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ EnumDirection enumdirection = (EnumDirection) iblockaccess.getType(blockposition).get(BlockBanner.BlockWallBanner.FACING);
+ float f = 0.0F;
+ float f1 = 0.78125F;
+ float f2 = 0.0F;
+ float f3 = 1.0F;
+ float f4 = 0.125F;
+
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ switch (BlockBanner.SyntheticClass_1.a[enumdirection.ordinal()]) {
+ case 1:
+ default:
+ this.a(f2, f, 1.0F - f4, f3, f1, 1.0F);
+ break;
+
+ case 2:
+ this.a(f2, f, 0.0F, f3, f1, f4);
+ break;
+
+ case 3:
+ this.a(1.0F - f4, f, f2, 1.0F, f1, f3);
+ break;
+
+ case 4:
+ this.a(0.0F, f, f2, f4, f1, f3);
+ }
+
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockBanner.BlockWallBanner.FACING);
+
+ if (!world.getType(blockposition.shift(enumdirection.opposite())).getBlock().getMaterial().isBuildable()) {
+ this.b(world, blockposition, iblockdata, 0);
+ world.setAir(blockposition);
+ }
+
+ super.doPhysics(world, blockposition, iblockdata, block);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ EnumDirection enumdirection = EnumDirection.fromType1(i);
+
+ if (enumdirection.k() == EnumDirection.EnumAxis.Y) {
+ enumdirection = EnumDirection.NORTH;
+ }
+
+ return this.getBlockData().set(BlockBanner.BlockWallBanner.FACING, enumdirection);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumDirection) iblockdata.get(BlockBanner.BlockWallBanner.FACING)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockBanner.BlockWallBanner.FACING});
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBarrier.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBarrier.java
new file mode 100644
index 0000000..6571694
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBarrier.java
@@ -0,0 +1,22 @@
+package net.minecraft.server;
+
+public class BlockBarrier extends Block {
+
+ protected BlockBarrier() {
+ super(Material.BANNER);
+ this.x();
+ this.b(6000001.0F);
+ this.K();
+ this.t = true;
+ }
+
+ public int b() {
+ return -1;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {}
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockBeacon.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBed.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBed.java
new file mode 100644
index 0000000..42d137e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBed.java
@@ -0,0 +1,233 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+import java.util.Random;
+
+public class BlockBed extends BlockDirectional {
+
+ public static final BlockStateEnum PART = BlockStateEnum.of("part", BlockBed.EnumBedPart.class);
+ public static final BlockStateBoolean OCCUPIED = BlockStateBoolean.of("occupied");
+
+ public BlockBed() {
+ super(Material.CLOTH);
+ this.j(this.blockStateList.getBlockData().set(BlockBed.PART, BlockBed.EnumBedPart.FOOT).set(BlockBed.OCCUPIED, Boolean.valueOf(false)));
+ this.l();
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (world.isClientSide) {
+ return true;
+ } else {
+ if (iblockdata.get(BlockBed.PART) != BlockBed.EnumBedPart.HEAD) {
+ blockposition = blockposition.shift((EnumDirection) iblockdata.get(BlockBed.FACING));
+ iblockdata = world.getType(blockposition);
+ if (iblockdata.getBlock() != this) {
+ return true;
+ }
+ }
+
+ if (world.worldProvider.e() && world.getBiome(blockposition) != BiomeBase.HELL) {
+ if (((Boolean) iblockdata.get(BlockBed.OCCUPIED)).booleanValue()) {
+ EntityHuman entityhuman1 = this.f(world, blockposition);
+
+ if (entityhuman1 != null) {
+ entityhuman.b((IChatBaseComponent) (new ChatMessage("tile.bed.occupied", new Object[0])));
+ return true;
+ }
+
+ iblockdata = iblockdata.set(BlockBed.OCCUPIED, Boolean.valueOf(false));
+ world.setTypeAndData(blockposition, iblockdata, 4);
+ }
+
+ EntityHuman.EnumBedResult entityhuman_enumbedresult = entityhuman.a(blockposition);
+
+ if (entityhuman_enumbedresult == EntityHuman.EnumBedResult.OK) {
+ iblockdata = iblockdata.set(BlockBed.OCCUPIED, Boolean.valueOf(true));
+ world.setTypeAndData(blockposition, iblockdata, 4);
+ return true;
+ } else {
+ if (entityhuman_enumbedresult == EntityHuman.EnumBedResult.NOT_POSSIBLE_NOW) {
+ entityhuman.b((IChatBaseComponent) (new ChatMessage("tile.bed.noSleep", new Object[0])));
+ } else if (entityhuman_enumbedresult == EntityHuman.EnumBedResult.NOT_SAFE) {
+ entityhuman.b((IChatBaseComponent) (new ChatMessage("tile.bed.notSafe", new Object[0])));
+ }
+
+ return true;
+ }
+ } else {
+ world.setAir(blockposition);
+ BlockPosition blockposition1 = blockposition.shift(((EnumDirection) iblockdata.get(BlockBed.FACING)).opposite());
+
+ if (world.getType(blockposition1).getBlock() == this) {
+ world.setAir(blockposition1);
+ }
+
+ world.createExplosion((Entity) null, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, 5.0F, true, true);
+ return true;
+ }
+ }
+ }
+
+ private EntityHuman f(World world, BlockPosition blockposition) {
+ Iterator iterator = world.players.iterator();
+
+ EntityHuman entityhuman;
+
+ do {
+ if (!iterator.hasNext()) {
+ return null;
+ }
+
+ entityhuman = (EntityHuman) iterator.next();
+ } while (!entityhuman.isSleeping() || !entityhuman.bx.equals(blockposition));
+
+ return entityhuman;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ this.l();
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockBed.FACING);
+
+ if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD) {
+ if (world.getType(blockposition.shift(enumdirection.opposite())).getBlock() != this) {
+ world.setAir(blockposition);
+ }
+ } else if (world.getType(blockposition.shift(enumdirection)).getBlock() != this) {
+ world.setAir(blockposition);
+ if (!world.isClientSide) {
+ this.b(world, blockposition, iblockdata, 0);
+ }
+ }
+
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD ? null : Items.BED;
+ }
+
+ private void l() {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5625F, 1.0F);
+ }
+
+ public static BlockPosition a(World world, BlockPosition blockposition, int i) {
+ EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockBed.FACING);
+ int j = blockposition.getX();
+ int k = blockposition.getY();
+ int l = blockposition.getZ();
+
+ for (int i1 = 0; i1 <= 1; ++i1) {
+ int j1 = j - enumdirection.getAdjacentX() * i1 - 1;
+ int k1 = l - enumdirection.getAdjacentZ() * i1 - 1;
+ int l1 = j1 + 2;
+ int i2 = k1 + 2;
+
+ for (int j2 = j1; j2 <= l1; ++j2) {
+ for (int k2 = k1; k2 <= i2; ++k2) {
+ BlockPosition blockposition1 = new BlockPosition(j2, k, k2);
+
+ if (e(world, blockposition1)) {
+ if (i <= 0) {
+ return blockposition1;
+ }
+
+ --i;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ protected static boolean e(World world, BlockPosition blockposition) {
+ return World.a((IBlockAccess) world, blockposition.down()) && !world.getType(blockposition).getBlock().getMaterial().isBuildable() && !world.getType(blockposition.up()).getBlock().getMaterial().isBuildable();
+ }
+
+ public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {
+ if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.FOOT) {
+ super.dropNaturally(world, blockposition, iblockdata, f, 0);
+ }
+
+ }
+
+ public int k() {
+ return 1;
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) {
+ if (entityhuman.abilities.canInstantlyBuild && iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD) {
+ BlockPosition blockposition1 = blockposition.shift(((EnumDirection) iblockdata.get(BlockBed.FACING)).opposite());
+
+ if (world.getType(blockposition1).getBlock() == this) {
+ world.setAir(blockposition1);
+ }
+ }
+
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ EnumDirection enumdirection = EnumDirection.fromType2(i);
+
+ return (i & 8) > 0 ? this.getBlockData().set(BlockBed.PART, BlockBed.EnumBedPart.HEAD).set(BlockBed.FACING, enumdirection).set(BlockBed.OCCUPIED, Boolean.valueOf((i & 4) > 0)) : this.getBlockData().set(BlockBed.PART, BlockBed.EnumBedPart.FOOT).set(BlockBed.FACING, enumdirection);
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.FOOT) {
+ IBlockData iblockdata1 = iblockaccess.getType(blockposition.shift((EnumDirection) iblockdata.get(BlockBed.FACING)));
+
+ if (iblockdata1.getBlock() == this) {
+ iblockdata = iblockdata.set(BlockBed.OCCUPIED, iblockdata1.get(BlockBed.OCCUPIED));
+ }
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((EnumDirection) iblockdata.get(BlockBed.FACING)).b();
+
+ if (iblockdata.get(BlockBed.PART) == BlockBed.EnumBedPart.HEAD) {
+ i |= 8;
+ if (((Boolean) iblockdata.get(BlockBed.OCCUPIED)).booleanValue()) {
+ i |= 4;
+ }
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockBed.FACING, BlockBed.PART, BlockBed.OCCUPIED});
+ }
+
+ public static enum EnumBedPart implements INamable {
+
+ HEAD("head"), FOOT("foot");
+
+ private final String c;
+
+ private EnumBedPart(String s) {
+ this.c = s;
+ }
+
+ public String toString() {
+ return this.c;
+ }
+
+ public String getName() {
+ return this.c;
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockBloodStone.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockBookshelf.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBookshelf.java
new file mode 100644
index 0000000..37f43e9
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBookshelf.java
@@ -0,0 +1,19 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockBookshelf extends Block {
+
+ public BlockBookshelf() {
+ super(Material.WOOD);
+ this.a(CreativeModeTab.b);
+ }
+
+ public int a(Random random) {
+ return 3;
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.BOOK;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockBrewingStand.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockButtonAbstract.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java
similarity index 97%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java
index 2758fd8..e67d4ee 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCactus.java
@@ -63,7 +63,7 @@ public class BlockCactus extends Block {
}
public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
- if (!this.e(world, blockposition)) {
+ if (!this.e(world, blockposition) && ((WorldServer) world).hasPhysicsEvent) {
org.bukkit.block.Block bukkit = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
BlockPhysicsEvent event = new BlockPhysicsEvent(bukkit, bukkit.getTypeId());
world.getServer().getPluginManager().callEvent(event);
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCake.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCarpet.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarrots.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarrots.java
new file mode 100644
index 0000000..3bdc67a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCarrots.java
@@ -0,0 +1,14 @@
+package net.minecraft.server;
+
+public class BlockCarrots extends BlockCrops {
+
+ public BlockCarrots() {}
+
+ protected Item l() {
+ return Items.CARROT;
+ }
+
+ protected Item n() {
+ return Items.CARROT;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCauldron.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCauldron.java
new file mode 100644
index 0000000..5a4d5f7
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCauldron.java
@@ -0,0 +1,185 @@
+package net.minecraft.server;
+
+import java.util.List;
+import java.util.Random;
+
+public class BlockCauldron extends Block {
+
+ public static final BlockStateInteger LEVEL = BlockStateInteger.of("level", 0, 3);
+
+ public BlockCauldron() {
+ super(Material.ORE, MaterialMapColor.m);
+ this.j(this.blockStateList.getBlockData().set(BlockCauldron.LEVEL, Integer.valueOf(0)));
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.3125F, 1.0F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ float f = 0.125F;
+
+ this.a(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, f);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ this.a(1.0F - f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ this.a(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ this.j();
+ }
+
+ public void j() {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, Entity entity) {
+ int i = ((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue();
+ float f = (float) blockposition.getY() + (6.0F + (float) (3 * i)) / 16.0F;
+
+ if (!world.isClientSide && entity.isBurning() && i > 0 && entity.getBoundingBox().b <= (double) f) {
+ entity.extinguish();
+ this.a(world, blockposition, iblockdata, i - 1);
+ }
+
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (world.isClientSide) {
+ return true;
+ } else {
+ ItemStack itemstack = entityhuman.inventory.getItemInHand();
+
+ if (itemstack == null) {
+ return true;
+ } else {
+ int i = ((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue();
+ Item item = itemstack.getItem();
+
+ if (item == Items.WATER_BUCKET) {
+ if (i < 3) {
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, new ItemStack(Items.BUCKET));
+ }
+
+ entityhuman.b(StatisticList.I);
+ this.a(world, blockposition, iblockdata, 3);
+ }
+
+ return true;
+ } else {
+ ItemStack itemstack1;
+
+ if (item == Items.GLASS_BOTTLE) {
+ if (i > 0) {
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ itemstack1 = new ItemStack(Items.POTION, 1, 0);
+ if (!entityhuman.inventory.pickup(itemstack1)) {
+ world.addEntity(new EntityItem(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 1.5D, (double) blockposition.getZ() + 0.5D, itemstack1));
+ } else if (entityhuman instanceof EntityPlayer) {
+ ((EntityPlayer) entityhuman).updateInventory(entityhuman.defaultContainer);
+ }
+
+ entityhuman.b(StatisticList.J);
+ --itemstack.count;
+ if (itemstack.count <= 0) {
+ entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null);
+ }
+ }
+
+ this.a(world, blockposition, iblockdata, i - 1);
+ }
+
+ return true;
+ } else {
+ if (i > 0 && item instanceof ItemArmor) {
+ ItemArmor itemarmor = (ItemArmor) item;
+
+ if (itemarmor.x_() == ItemArmor.EnumArmorMaterial.LEATHER && itemarmor.d_(itemstack)) {
+ itemarmor.c(itemstack);
+ this.a(world, blockposition, iblockdata, i - 1);
+ entityhuman.b(StatisticList.K);
+ return true;
+ }
+ }
+
+ if (i > 0 && item instanceof ItemBanner && TileEntityBanner.c(itemstack) > 0) {
+ itemstack1 = itemstack.cloneItemStack();
+ itemstack1.count = 1;
+ TileEntityBanner.e(itemstack1);
+ if (itemstack.count <= 1 && !entityhuman.abilities.canInstantlyBuild) {
+ entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, itemstack1);
+ } else {
+ if (!entityhuman.inventory.pickup(itemstack1)) {
+ world.addEntity(new EntityItem(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 1.5D, (double) blockposition.getZ() + 0.5D, itemstack1));
+ } else if (entityhuman instanceof EntityPlayer) {
+ ((EntityPlayer) entityhuman).updateInventory(entityhuman.defaultContainer);
+ }
+
+ entityhuman.b(StatisticList.L);
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ --itemstack.count;
+ }
+ }
+
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ this.a(world, blockposition, iblockdata, i - 1);
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, int i) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockCauldron.LEVEL, Integer.valueOf(MathHelper.clamp(i, 0, 3))), 2);
+ world.updateAdjacentComparators(blockposition, this);
+ }
+
+ public void k(World world, BlockPosition blockposition) {
+ if (world.random.nextInt(20) == 1) {
+ IBlockData iblockdata = world.getType(blockposition);
+
+ if (((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue() < 3) {
+ world.setTypeAndData(blockposition, iblockdata.a(BlockCauldron.LEVEL), 2);
+ }
+
+ }
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.CAULDRON;
+ }
+
+ public boolean isComplexRedstone() {
+ return true;
+ }
+
+ public int l(World world, BlockPosition blockposition) {
+ return ((Integer) world.getType(blockposition).get(BlockCauldron.LEVEL)).intValue();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockCauldron.LEVEL, Integer.valueOf(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((Integer) iblockdata.get(BlockCauldron.LEVEL)).intValue();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockCauldron.LEVEL});
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockChest.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockClay.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockClay.java
new file mode 100644
index 0000000..dbbe36b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockClay.java
@@ -0,0 +1,19 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockClay extends Block {
+
+ public BlockClay() {
+ super(Material.CLAY);
+ this.a(CreativeModeTab.b);
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.CLAY_BALL;
+ }
+
+ public int a(Random random) {
+ return 4;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCloth.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCloth.java
new file mode 100644
index 0000000..a834bd4
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCloth.java
@@ -0,0 +1,32 @@
+package net.minecraft.server;
+
+public class BlockCloth extends Block {
+
+ public static final BlockStateEnum COLOR = BlockStateEnum.of("color", EnumColor.class);
+
+ public BlockCloth(Material material) {
+ super(material);
+ this.j(this.blockStateList.getBlockData().set(BlockCloth.COLOR, EnumColor.WHITE));
+ this.a(CreativeModeTab.b);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockCloth.COLOR)).getColorIndex();
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockCloth.COLOR)).e();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockCloth.COLOR, EnumColor.fromColorIndex(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockCloth.COLOR)).getColorIndex();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockCloth.COLOR});
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockCobbleWall.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCobbleWall.java
new file mode 100644
index 0000000..08f8b5e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCobbleWall.java
@@ -0,0 +1,160 @@
+package net.minecraft.server;
+
+public class BlockCobbleWall extends Block {
+
+ public static final BlockStateBoolean UP = BlockStateBoolean.of("up");
+ public static final BlockStateBoolean NORTH = BlockStateBoolean.of("north");
+ public static final BlockStateBoolean EAST = BlockStateBoolean.of("east");
+ public static final BlockStateBoolean SOUTH = BlockStateBoolean.of("south");
+ public static final BlockStateBoolean WEST = BlockStateBoolean.of("west");
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockCobbleWall.EnumCobbleVariant.class);
+
+ public BlockCobbleWall(Block block) {
+ super(block.material);
+ this.j(this.blockStateList.getBlockData().set(BlockCobbleWall.UP, Boolean.valueOf(false)).set(BlockCobbleWall.NORTH, Boolean.valueOf(false)).set(BlockCobbleWall.EAST, Boolean.valueOf(false)).set(BlockCobbleWall.SOUTH, Boolean.valueOf(false)).set(BlockCobbleWall.WEST, Boolean.valueOf(false)).set(BlockCobbleWall.VARIANT, BlockCobbleWall.EnumCobbleVariant.NORMAL));
+ this.c(block.strength);
+ this.b(block.durability / 3.0F);
+ this.a(block.stepSound);
+ this.a(CreativeModeTab.b);
+ }
+
+ public String getName() {
+ return LocaleI18n.get(this.a() + "." + BlockCobbleWall.EnumCobbleVariant.NORMAL.c() + ".name");
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return false;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ boolean flag = this.e(iblockaccess, blockposition.north());
+ boolean flag1 = this.e(iblockaccess, blockposition.south());
+ boolean flag2 = this.e(iblockaccess, blockposition.west());
+ boolean flag3 = this.e(iblockaccess, blockposition.east());
+ float f = 0.25F;
+ float f1 = 0.75F;
+ float f2 = 0.25F;
+ float f3 = 0.75F;
+ float f4 = 1.0F;
+
+ if (flag) {
+ f2 = 0.0F;
+ }
+
+ if (flag1) {
+ f3 = 1.0F;
+ }
+
+ if (flag2) {
+ f = 0.0F;
+ }
+
+ if (flag3) {
+ f1 = 1.0F;
+ }
+
+ if (flag && flag1 && !flag2 && !flag3) {
+ f4 = 0.8125F;
+ f = 0.3125F;
+ f1 = 0.6875F;
+ } else if (!flag && !flag1 && flag2 && flag3) {
+ f4 = 0.8125F;
+ f2 = 0.3125F;
+ f3 = 0.6875F;
+ }
+
+ this.a(f, 0.0F, f2, f1, f4, f3);
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.updateShape(world, blockposition);
+ this.maxY = 1.5D;
+ return super.a(world, blockposition, iblockdata);
+ }
+
+ public boolean e(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ Block block = iblockaccess.getType(blockposition).getBlock();
+
+ return block == Blocks.BARRIER ? false : (block != this && !(block instanceof BlockFenceGate) ? (block.material.k() && block.d() ? block.material != Material.PUMPKIN : false) : true);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockCobbleWall.EnumCobbleVariant) iblockdata.get(BlockCobbleWall.VARIANT)).a();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockCobbleWall.VARIANT, BlockCobbleWall.EnumCobbleVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockCobbleWall.EnumCobbleVariant) iblockdata.get(BlockCobbleWall.VARIANT)).a();
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return iblockdata.set(BlockCobbleWall.UP, Boolean.valueOf(!iblockaccess.isEmpty(blockposition.up()))).set(BlockCobbleWall.NORTH, Boolean.valueOf(this.e(iblockaccess, blockposition.north()))).set(BlockCobbleWall.EAST, Boolean.valueOf(this.e(iblockaccess, blockposition.east()))).set(BlockCobbleWall.SOUTH, Boolean.valueOf(this.e(iblockaccess, blockposition.south()))).set(BlockCobbleWall.WEST, Boolean.valueOf(this.e(iblockaccess, blockposition.west())));
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockCobbleWall.UP, BlockCobbleWall.NORTH, BlockCobbleWall.EAST, BlockCobbleWall.WEST, BlockCobbleWall.SOUTH, BlockCobbleWall.VARIANT});
+ }
+
+ public static enum EnumCobbleVariant implements INamable {
+
+ NORMAL(0, "cobblestone", "normal"), MOSSY(1, "mossy_cobblestone", "mossy");
+
+ private static final BlockCobbleWall.EnumCobbleVariant[] c = new BlockCobbleWall.EnumCobbleVariant[values().length];
+ private final int d;
+ private final String e;
+ private String f;
+
+ private EnumCobbleVariant(int i, String s, String s1) {
+ this.d = i;
+ this.e = s;
+ this.f = s1;
+ }
+
+ public int a() {
+ return this.d;
+ }
+
+ public String toString() {
+ return this.e;
+ }
+
+ public static BlockCobbleWall.EnumCobbleVariant a(int i) {
+ if (i < 0 || i >= BlockCobbleWall.EnumCobbleVariant.c.length) {
+ i = 0;
+ }
+
+ return BlockCobbleWall.EnumCobbleVariant.c[i];
+ }
+
+ public String getName() {
+ return this.e;
+ }
+
+ public String c() {
+ return this.f;
+ }
+
+ static {
+ BlockCobbleWall.EnumCobbleVariant[] ablockcobblewall_enumcobblevariant = values();
+ int i = ablockcobblewall_enumcobblevariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockCobbleWall.EnumCobbleVariant blockcobblewall_enumcobblevariant = ablockcobblewall_enumcobblevariant[j];
+
+ BlockCobbleWall.EnumCobbleVariant.c[blockcobblewall_enumcobblevariant.a()] = blockcobblewall_enumcobblevariant;
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCocoa.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCommand.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockContainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockContainer.java
new file mode 100644
index 0000000..c51f6c6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockContainer.java
@@ -0,0 +1,37 @@
+package net.minecraft.server;
+
+public abstract class BlockContainer extends Block implements IContainer {
+
+ protected BlockContainer(Material material) {
+ this(material, material.r());
+ }
+
+ protected BlockContainer(Material material, MaterialMapColor materialmapcolor) {
+ super(material, materialmapcolor);
+ this.isTileEntity = true;
+ }
+
+ protected boolean a(World world, BlockPosition blockposition, EnumDirection enumdirection) {
+ return world.getType(blockposition.shift(enumdirection)).getBlock().getMaterial() == Material.CACTUS;
+ }
+
+ protected boolean e(World world, BlockPosition blockposition) {
+ return this.a(world, blockposition, EnumDirection.NORTH) || this.a(world, blockposition, EnumDirection.SOUTH) || this.a(world, blockposition, EnumDirection.WEST) || this.a(world, blockposition, EnumDirection.EAST);
+ }
+
+ public int b() {
+ return -1;
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ super.remove(world, blockposition, iblockdata);
+ world.t(blockposition);
+ }
+
+ public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, int i, int j) {
+ super.a(world, blockposition, iblockdata, i, j);
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ return tileentity == null ? false : tileentity.c(i, j);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockCrops.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDataAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDataAbstract.java
new file mode 100644
index 0000000..77d2a07
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDataAbstract.java
@@ -0,0 +1,63 @@
+package net.minecraft.server;
+
+import com.google.common.base.Function;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Iterables;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map.Entry;
+
+public abstract class BlockDataAbstract implements IBlockData {
+
+ private static final Joiner a = Joiner.on(',');
+ private static final Function, String> b = new Function() {
+ public String a(Entry entry) {
+ if (entry == null) {
+ return "";
+ } else {
+ IBlockState iblockstate = (IBlockState) entry.getKey();
+
+ return iblockstate.a() + "=" + iblockstate.a((Comparable) entry.getValue());
+ }
+ }
+
+ public Object apply(Object object) {
+ return this.a((Entry) object);
+ }
+ };
+
+ public BlockDataAbstract() {}
+
+ public > IBlockData a(IBlockState iblockstate) {
+ return this.set(iblockstate, a(iblockstate.c(), this.get(iblockstate)));
+ }
+
+ protected static T a(Collection collection, T t0) {
+ Iterator iterator = collection.iterator();
+
+ do {
+ if (!iterator.hasNext()) {
+ return iterator.next();
+ }
+ } while (!iterator.next().equals(t0));
+
+ if (iterator.hasNext()) {
+ return iterator.next();
+ } else {
+ return collection.iterator().next();
+ }
+ }
+
+ public String toString() {
+ StringBuilder stringbuilder = new StringBuilder();
+
+ stringbuilder.append(Block.REGISTRY.c(this.getBlock()));
+ if (!this.b().isEmpty()) {
+ stringbuilder.append("[");
+ BlockDataAbstract.a.appendTo(stringbuilder, Iterables.transform(this.b().entrySet(), BlockDataAbstract.b));
+ stringbuilder.append("]");
+ }
+
+ return stringbuilder.toString();
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDaylightDetector.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDeadBush.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDeadBush.java
new file mode 100644
index 0000000..98c3304
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDeadBush.java
@@ -0,0 +1,39 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockDeadBush extends BlockPlant {
+
+ protected BlockDeadBush() {
+ super(Material.REPLACEABLE_PLANT);
+ float f = 0.4F;
+
+ this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.o;
+ }
+
+ protected boolean c(Block block) {
+ return block == Blocks.SAND || block == Blocks.HARDENED_CLAY || block == Blocks.STAINED_HARDENED_CLAY || block == Blocks.DIRT;
+ }
+
+ public boolean a(World world, BlockPosition blockposition) {
+ return true;
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return null;
+ }
+
+ public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) {
+ if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) {
+ entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]);
+ a(world, blockposition, new ItemStack(Blocks.DEADBUSH, 1, 0));
+ } else {
+ super.a(world, entityhuman, blockposition, iblockdata, tileentity);
+ }
+
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDiodeAbstract.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirectional.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirectional.java
new file mode 100644
index 0000000..2005bc1
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirectional.java
@@ -0,0 +1,16 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+
+public abstract class BlockDirectional extends Block {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+
+ protected BlockDirectional(Material material) {
+ super(material);
+ }
+
+ protected BlockDirectional(Material material, MaterialMapColor materialmapcolor) {
+ super(material, materialmapcolor);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirt.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirt.java
new file mode 100644
index 0000000..ced74e1
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDirt.java
@@ -0,0 +1,117 @@
+package net.minecraft.server;
+
+public class BlockDirt extends Block {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockDirt.EnumDirtVariant.class);
+ public static final BlockStateBoolean SNOWY = BlockStateBoolean.of("snowy");
+
+ protected BlockDirt() {
+ super(Material.EARTH);
+ this.j(this.blockStateList.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.DIRT).set(BlockDirt.SNOWY, Boolean.valueOf(false)));
+ this.a(CreativeModeTab.b);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).d();
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ if (iblockdata.get(BlockDirt.VARIANT) == BlockDirt.EnumDirtVariant.PODZOL) {
+ Block block = iblockaccess.getType(blockposition.up()).getBlock();
+
+ iblockdata = iblockdata.set(BlockDirt.SNOWY, Boolean.valueOf(block == Blocks.SNOW || block == Blocks.SNOW_LAYER));
+ }
+
+ return iblockdata;
+ }
+
+ public int getDropData(World world, BlockPosition blockposition) {
+ IBlockData iblockdata = world.getType(blockposition);
+
+ return iblockdata.getBlock() != this ? 0 : ((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).a();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockDirt.VARIANT, BlockDirt.SNOWY});
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ BlockDirt.EnumDirtVariant blockdirt_enumdirtvariant = (BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT);
+
+ if (blockdirt_enumdirtvariant == BlockDirt.EnumDirtVariant.PODZOL) {
+ blockdirt_enumdirtvariant = BlockDirt.EnumDirtVariant.DIRT;
+ }
+
+ return blockdirt_enumdirtvariant.a();
+ }
+
+ public static enum EnumDirtVariant implements INamable {
+
+ DIRT(0, "dirt", "default", MaterialMapColor.l), COARSE_DIRT(1, "coarse_dirt", "coarse", MaterialMapColor.l), PODZOL(2, "podzol", MaterialMapColor.J);
+
+ private static final BlockDirt.EnumDirtVariant[] d = new BlockDirt.EnumDirtVariant[values().length];
+ private final int e;
+ private final String f;
+ private final String g;
+ private final MaterialMapColor h;
+
+ private EnumDirtVariant(int i, String s, MaterialMapColor materialmapcolor) {
+ this(i, s, s, materialmapcolor);
+ }
+
+ private EnumDirtVariant(int i, String s, String s1, MaterialMapColor materialmapcolor) {
+ this.e = i;
+ this.f = s;
+ this.g = s1;
+ this.h = materialmapcolor;
+ }
+
+ public int a() {
+ return this.e;
+ }
+
+ public String c() {
+ return this.g;
+ }
+
+ public MaterialMapColor d() {
+ return this.h;
+ }
+
+ public String toString() {
+ return this.f;
+ }
+
+ public static BlockDirt.EnumDirtVariant a(int i) {
+ if (i < 0 || i >= BlockDirt.EnumDirtVariant.d.length) {
+ i = 0;
+ }
+
+ return BlockDirt.EnumDirtVariant.d[i];
+ }
+
+ public String getName() {
+ return this.f;
+ }
+
+ static {
+ BlockDirt.EnumDirtVariant[] ablockdirt_enumdirtvariant = values();
+ int i = ablockdirt_enumdirtvariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockDirt.EnumDirtVariant blockdirt_enumdirtvariant = ablockdirt_enumdirtvariant[j];
+
+ BlockDirt.EnumDirtVariant.d[blockdirt_enumdirtvariant.a()] = blockdirt_enumdirtvariant;
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java
similarity index 97%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java
index 4f10902..0acce70 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDispenser.java
@@ -20,6 +20,7 @@ public class BlockDispenser extends BlockContainer {
return 4;
}
+ /* // PandaSpigot - comment out - SPIGOT-1401
public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
super.onPlace(world, blockposition, iblockdata);
this.e(world, blockposition, iblockdata);
@@ -27,7 +28,7 @@ public class BlockDispenser extends BlockContainer {
private void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
if (!world.isClientSide) {
- EnumDirection enumdirection = iblockdata.get(BlockDispenser.FACING);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockDispenser.FACING);
boolean flag = world.getType(blockposition.north()).getBlock().o();
boolean flag1 = world.getType(blockposition.south()).getBlock().o();
@@ -46,9 +47,10 @@ public class BlockDispenser extends BlockContainer {
}
}
- world.setTypeAndData(blockposition, iblockdata.set(BlockDispenser.FACING, enumdirection).set(BlockDispenser.TRIGGERED, Boolean.FALSE), 2);
+ world.setTypeAndData(blockposition, iblockdata.set(BlockDispenser.FACING, enumdirection).set(BlockDispenser.TRIGGERED, Boolean.valueOf(false)), 2);
}
}
+ */ // PandaSpigot
public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
if (world.isClientSide) {
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDoor.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStep.java
new file mode 100644
index 0000000..46b853d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStep.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockDoubleStep extends BlockDoubleStepAbstract {
+
+ public BlockDoubleStep() {}
+
+ public boolean l() {
+ return true;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStepAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStepAbstract.java
new file mode 100644
index 0000000..4d75099
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStepAbstract.java
@@ -0,0 +1,140 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public abstract class BlockDoubleStepAbstract extends BlockStepAbstract {
+
+ public static final BlockStateBoolean SEAMLESS = BlockStateBoolean.of("seamless");
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockDoubleStepAbstract.EnumStoneSlabVariant.class);
+
+ public BlockDoubleStepAbstract() {
+ super(Material.STONE);
+ IBlockData iblockdata = this.blockStateList.getBlockData();
+
+ if (this.l()) {
+ iblockdata = iblockdata.set(BlockDoubleStepAbstract.SEAMLESS, Boolean.valueOf(false));
+ } else {
+ iblockdata = iblockdata.set(BlockDoubleStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM);
+ }
+
+ this.j(iblockdata.set(BlockDoubleStepAbstract.VARIANT, BlockDoubleStepAbstract.EnumStoneSlabVariant.STONE));
+ this.a(CreativeModeTab.b);
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Item.getItemOf(Blocks.STONE_SLAB);
+ }
+
+ public String b(int i) {
+ return super.a() + "." + BlockDoubleStepAbstract.EnumStoneSlabVariant.a(i).d();
+ }
+
+ public IBlockState> n() {
+ return BlockDoubleStepAbstract.VARIANT;
+ }
+
+ public Object a(ItemStack itemstack) {
+ return BlockDoubleStepAbstract.EnumStoneSlabVariant.a(itemstack.getData() & 7);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ IBlockData iblockdata = this.getBlockData().set(BlockDoubleStepAbstract.VARIANT, BlockDoubleStepAbstract.EnumStoneSlabVariant.a(i & 7));
+
+ if (this.l()) {
+ iblockdata = iblockdata.set(BlockDoubleStepAbstract.SEAMLESS, Boolean.valueOf((i & 8) != 0));
+ } else {
+ iblockdata = iblockdata.set(BlockDoubleStepAbstract.HALF, (i & 8) == 0 ? BlockStepAbstract.EnumSlabHalf.BOTTOM : BlockStepAbstract.EnumSlabHalf.TOP);
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((BlockDoubleStepAbstract.EnumStoneSlabVariant) iblockdata.get(BlockDoubleStepAbstract.VARIANT)).a();
+
+ if (this.l()) {
+ if (((Boolean) iblockdata.get(BlockDoubleStepAbstract.SEAMLESS)).booleanValue()) {
+ i |= 8;
+ }
+ } else if (iblockdata.get(BlockDoubleStepAbstract.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return this.l() ? new BlockStateList(this, new IBlockState[] { BlockDoubleStepAbstract.SEAMLESS, BlockDoubleStepAbstract.VARIANT}) : new BlockStateList(this, new IBlockState[] { BlockDoubleStepAbstract.HALF, BlockDoubleStepAbstract.VARIANT});
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockDoubleStepAbstract.EnumStoneSlabVariant) iblockdata.get(BlockDoubleStepAbstract.VARIANT)).a();
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((BlockDoubleStepAbstract.EnumStoneSlabVariant) iblockdata.get(BlockDoubleStepAbstract.VARIANT)).c();
+ }
+
+ public static enum EnumStoneSlabVariant implements INamable {
+
+ STONE(0, MaterialMapColor.m, "stone"), SAND(1, MaterialMapColor.d, "sandstone", "sand"), WOOD(2, MaterialMapColor.o, "wood_old", "wood"), COBBLESTONE(3, MaterialMapColor.m, "cobblestone", "cobble"), BRICK(4, MaterialMapColor.D, "brick"), SMOOTHBRICK(5, MaterialMapColor.m, "stone_brick", "smoothStoneBrick"), NETHERBRICK(6, MaterialMapColor.K, "nether_brick", "netherBrick"), QUARTZ(7, MaterialMapColor.p, "quartz");
+
+ private static final BlockDoubleStepAbstract.EnumStoneSlabVariant[] i = new BlockDoubleStepAbstract.EnumStoneSlabVariant[values().length];
+ private final int j;
+ private final MaterialMapColor k;
+ private final String l;
+ private final String m;
+
+ private EnumStoneSlabVariant(int i, MaterialMapColor materialmapcolor, String s) {
+ this(i, materialmapcolor, s, s);
+ }
+
+ private EnumStoneSlabVariant(int i, MaterialMapColor materialmapcolor, String s, String s1) {
+ this.j = i;
+ this.k = materialmapcolor;
+ this.l = s;
+ this.m = s1;
+ }
+
+ public int a() {
+ return this.j;
+ }
+
+ public MaterialMapColor c() {
+ return this.k;
+ }
+
+ public String toString() {
+ return this.l;
+ }
+
+ public static BlockDoubleStepAbstract.EnumStoneSlabVariant a(int i) {
+ if (i < 0 || i >= BlockDoubleStepAbstract.EnumStoneSlabVariant.i.length) {
+ i = 0;
+ }
+
+ return BlockDoubleStepAbstract.EnumStoneSlabVariant.i[i];
+ }
+
+ public String getName() {
+ return this.l;
+ }
+
+ public String d() {
+ return this.m;
+ }
+
+ static {
+ BlockDoubleStepAbstract.EnumStoneSlabVariant[] ablockdoublestepabstract_enumstoneslabvariant = values();
+ int i = ablockdoublestepabstract_enumstoneslabvariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockDoubleStepAbstract.EnumStoneSlabVariant blockdoublestepabstract_enumstoneslabvariant = ablockdoublestepabstract_enumstoneslabvariant[j];
+
+ BlockDoubleStepAbstract.EnumStoneSlabVariant.i[blockdoublestepabstract_enumstoneslabvariant.a()] = blockdoublestepabstract_enumstoneslabvariant;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStep2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStep2.java
new file mode 100644
index 0000000..87c61c4
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStep2.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockDoubleStoneStep2 extends BlockDoubleStoneStepAbstract {
+
+ public BlockDoubleStoneStep2() {}
+
+ public boolean l() {
+ return true;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStepAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStepAbstract.java
new file mode 100644
index 0000000..bd253ad
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleStoneStepAbstract.java
@@ -0,0 +1,138 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public abstract class BlockDoubleStoneStepAbstract extends BlockStepAbstract {
+
+ public static final BlockStateBoolean SEAMLESS = BlockStateBoolean.of("seamless");
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.class);
+
+ public BlockDoubleStoneStepAbstract() {
+ super(Material.STONE);
+ IBlockData iblockdata = this.blockStateList.getBlockData();
+
+ if (this.l()) {
+ iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.SEAMLESS, Boolean.valueOf(false));
+ } else {
+ iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM);
+ }
+
+ this.j(iblockdata.set(BlockDoubleStoneStepAbstract.VARIANT, BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.RED_SANDSTONE));
+ this.a(CreativeModeTab.b);
+ }
+
+ public String getName() {
+ return LocaleI18n.get(this.a() + ".red_sandstone.name");
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Item.getItemOf(Blocks.STONE_SLAB2);
+ }
+
+ public String b(int i) {
+ return super.a() + "." + BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.a(i).d();
+ }
+
+ public IBlockState> n() {
+ return BlockDoubleStoneStepAbstract.VARIANT;
+ }
+
+ public Object a(ItemStack itemstack) {
+ return BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.a(itemstack.getData() & 7);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ IBlockData iblockdata = this.getBlockData().set(BlockDoubleStoneStepAbstract.VARIANT, BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.a(i & 7));
+
+ if (this.l()) {
+ iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.SEAMLESS, Boolean.valueOf((i & 8) != 0));
+ } else {
+ iblockdata = iblockdata.set(BlockDoubleStoneStepAbstract.HALF, (i & 8) == 0 ? BlockStepAbstract.EnumSlabHalf.BOTTOM : BlockStepAbstract.EnumSlabHalf.TOP);
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant) iblockdata.get(BlockDoubleStoneStepAbstract.VARIANT)).a();
+
+ if (this.l()) {
+ if (((Boolean) iblockdata.get(BlockDoubleStoneStepAbstract.SEAMLESS)).booleanValue()) {
+ i |= 8;
+ }
+ } else if (iblockdata.get(BlockDoubleStoneStepAbstract.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return this.l() ? new BlockStateList(this, new IBlockState[] { BlockDoubleStoneStepAbstract.SEAMLESS, BlockDoubleStoneStepAbstract.VARIANT}) : new BlockStateList(this, new IBlockState[] { BlockDoubleStoneStepAbstract.HALF, BlockDoubleStoneStepAbstract.VARIANT});
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant) iblockdata.get(BlockDoubleStoneStepAbstract.VARIANT)).c();
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant) iblockdata.get(BlockDoubleStoneStepAbstract.VARIANT)).a();
+ }
+
+ public static enum EnumStoneSlab2Variant implements INamable {
+
+ RED_SANDSTONE(0, "red_sandstone", BlockSand.EnumSandVariant.RED_SAND.c());
+
+ private static final BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant[] b = new BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant[values().length];
+ private final int c;
+ private final String d;
+ private final MaterialMapColor e;
+
+ private EnumStoneSlab2Variant(int i, String s, MaterialMapColor materialmapcolor) {
+ this.c = i;
+ this.d = s;
+ this.e = materialmapcolor;
+ }
+
+ public int a() {
+ return this.c;
+ }
+
+ public MaterialMapColor c() {
+ return this.e;
+ }
+
+ public String toString() {
+ return this.d;
+ }
+
+ public static BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant a(int i) {
+ if (i < 0 || i >= BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.b.length) {
+ i = 0;
+ }
+
+ return BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.b[i];
+ }
+
+ public String getName() {
+ return this.d;
+ }
+
+ public String d() {
+ return this.d;
+ }
+
+ static {
+ BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant[] ablockdoublestonestepabstract_enumstoneslab2variant = values();
+ int i = ablockdoublestonestepabstract_enumstoneslab2variant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant blockdoublestonestepabstract_enumstoneslab2variant = ablockdoublestonestepabstract_enumstoneslab2variant[j];
+
+ BlockDoubleStoneStepAbstract.EnumStoneSlab2Variant.b[blockdoublestonestepabstract_enumstoneslab2variant.a()] = blockdoublestonestepabstract_enumstoneslab2variant;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleWoodStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleWoodStep.java
new file mode 100644
index 0000000..56cb6c7
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDoubleWoodStep.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockDoubleWoodStep extends BlockWoodenStep {
+
+ public BlockDoubleWoodStep() {}
+
+ public boolean l() {
+ return true;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDragonEgg.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockDropper.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnchantmentTable.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnchantmentTable.java
new file mode 100644
index 0000000..c27c0ff
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnchantmentTable.java
@@ -0,0 +1,53 @@
+package net.minecraft.server;
+
+public class BlockEnchantmentTable extends BlockContainer {
+
+ protected BlockEnchantmentTable() {
+ super(Material.STONE, MaterialMapColor.D);
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.75F, 1.0F);
+ this.e(0);
+ this.a(CreativeModeTab.c);
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public int b() {
+ return 3;
+ }
+
+ public TileEntity a(World world, int i) {
+ return new TileEntityEnchantTable();
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (world.isClientSide) {
+ return true;
+ } else {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityEnchantTable) {
+ entityhuman.openTileEntity((TileEntityEnchantTable) tileentity);
+ }
+
+ return true;
+ }
+ }
+
+ public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) {
+ super.postPlace(world, blockposition, iblockdata, entityliving, itemstack);
+ if (itemstack.hasName()) {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityEnchantTable) {
+ ((TileEntityEnchantTable) tileentity).a(itemstack.getName());
+ }
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderChest.java
new file mode 100644
index 0000000..15b5f2f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderChest.java
@@ -0,0 +1,90 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.Random;
+
+public class BlockEnderChest extends BlockContainer {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+
+ protected BlockEnderChest() {
+ super(Material.STONE);
+ this.j(this.blockStateList.getBlockData().set(BlockEnderChest.FACING, EnumDirection.NORTH));
+ this.a(CreativeModeTab.c);
+ this.a(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public int b() {
+ return 2;
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Item.getItemOf(Blocks.OBSIDIAN);
+ }
+
+ public int a(Random random) {
+ return 8;
+ }
+
+ protected boolean I() {
+ return true;
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return this.getBlockData().set(BlockEnderChest.FACING, entityliving.getDirection().opposite());
+ }
+
+ public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockEnderChest.FACING, entityliving.getDirection().opposite()), 2);
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ InventoryEnderChest inventoryenderchest = entityhuman.getEnderChest();
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (inventoryenderchest != null && tileentity instanceof TileEntityEnderChest) {
+ if (world.getType(blockposition.up()).getBlock().isOccluding()) {
+ return true;
+ } else if (world.isClientSide) {
+ return true;
+ } else {
+ inventoryenderchest.a((TileEntityEnderChest) tileentity);
+ entityhuman.openContainer(inventoryenderchest);
+ entityhuman.b(StatisticList.V);
+ return true;
+ }
+ } else {
+ return true;
+ }
+ }
+
+ public TileEntity a(World world, int i) {
+ return new TileEntityEnderChest();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ EnumDirection enumdirection = EnumDirection.fromType1(i);
+
+ if (enumdirection.k() == EnumDirection.EnumAxis.Y) {
+ enumdirection = EnumDirection.NORTH;
+ }
+
+ return this.getBlockData().set(BlockEnderChest.FACING, enumdirection);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumDirection) iblockdata.get(BlockEnderChest.FACING)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockEnderChest.FACING});
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortal.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortalFrame.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortalFrame.java
new file mode 100644
index 0000000..43e1da0
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockEnderPortalFrame.java
@@ -0,0 +1,70 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.List;
+import java.util.Random;
+
+public class BlockEnderPortalFrame extends Block {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+ public static final BlockStateBoolean EYE = BlockStateBoolean.of("eye");
+
+ public BlockEnderPortalFrame() {
+ super(Material.STONE, MaterialMapColor.C);
+ this.j(this.blockStateList.getBlockData().set(BlockEnderPortalFrame.FACING, EnumDirection.NORTH).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(false)));
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public void j() {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F);
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ if (((Boolean) world.getType(blockposition).get(BlockEnderPortalFrame.EYE)).booleanValue()) {
+ this.a(0.3125F, 0.8125F, 0.3125F, 0.6875F, 1.0F, 0.6875F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ this.j();
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return null;
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return this.getBlockData().set(BlockEnderPortalFrame.FACING, entityliving.getDirection().opposite()).set(BlockEnderPortalFrame.EYE, Boolean.valueOf(false));
+ }
+
+ public boolean isComplexRedstone() {
+ return true;
+ }
+
+ public int l(World world, BlockPosition blockposition) {
+ return ((Boolean) world.getType(blockposition).get(BlockEnderPortalFrame.EYE)).booleanValue() ? 15 : 0;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockEnderPortalFrame.EYE, Boolean.valueOf((i & 4) != 0)).set(BlockEnderPortalFrame.FACING, EnumDirection.fromType2(i & 3));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((EnumDirection) iblockdata.get(BlockEnderPortalFrame.FACING)).b();
+
+ if (((Boolean) iblockdata.get(BlockEnderPortalFrame.EYE)).booleanValue()) {
+ i |= 4;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockEnderPortalFrame.FACING, BlockEnderPortalFrame.EYE});
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFalling.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFence.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFence.java
new file mode 100644
index 0000000..1d50055
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFence.java
@@ -0,0 +1,133 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class BlockFence extends Block {
+
+ public static final BlockStateBoolean NORTH = BlockStateBoolean.of("north");
+ public static final BlockStateBoolean EAST = BlockStateBoolean.of("east");
+ public static final BlockStateBoolean SOUTH = BlockStateBoolean.of("south");
+ public static final BlockStateBoolean WEST = BlockStateBoolean.of("west");
+
+ public BlockFence(Material material) {
+ this(material, material.r());
+ }
+
+ public BlockFence(Material material, MaterialMapColor materialmapcolor) {
+ super(material, materialmapcolor);
+ this.j(this.blockStateList.getBlockData().set(BlockFence.NORTH, Boolean.valueOf(false)).set(BlockFence.EAST, Boolean.valueOf(false)).set(BlockFence.SOUTH, Boolean.valueOf(false)).set(BlockFence.WEST, Boolean.valueOf(false)));
+ this.a(CreativeModeTab.c);
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ boolean flag = this.e(world, blockposition.north());
+ boolean flag1 = this.e(world, blockposition.south());
+ boolean flag2 = this.e(world, blockposition.west());
+ boolean flag3 = this.e(world, blockposition.east());
+ float f = 0.375F;
+ float f1 = 0.625F;
+ float f2 = 0.375F;
+ float f3 = 0.625F;
+
+ if (flag) {
+ f2 = 0.0F;
+ }
+
+ if (flag1) {
+ f3 = 1.0F;
+ }
+
+ if (flag || flag1) {
+ this.a(f, 0.0F, f2, f1, 1.5F, f3);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ f2 = 0.375F;
+ f3 = 0.625F;
+ if (flag2) {
+ f = 0.0F;
+ }
+
+ if (flag3) {
+ f1 = 1.0F;
+ }
+
+ if (flag2 || flag3 || !flag && !flag1) {
+ this.a(f, 0.0F, f2, f1, 1.5F, f3);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ if (flag) {
+ f2 = 0.0F;
+ }
+
+ if (flag1) {
+ f3 = 1.0F;
+ }
+
+ this.a(f, 0.0F, f2, f1, 1.0F, f3);
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ boolean flag = this.e(iblockaccess, blockposition.north());
+ boolean flag1 = this.e(iblockaccess, blockposition.south());
+ boolean flag2 = this.e(iblockaccess, blockposition.west());
+ boolean flag3 = this.e(iblockaccess, blockposition.east());
+ float f = 0.375F;
+ float f1 = 0.625F;
+ float f2 = 0.375F;
+ float f3 = 0.625F;
+
+ if (flag) {
+ f2 = 0.0F;
+ }
+
+ if (flag1) {
+ f3 = 1.0F;
+ }
+
+ if (flag2) {
+ f = 0.0F;
+ }
+
+ if (flag3) {
+ f1 = 1.0F;
+ }
+
+ this.a(f, 0.0F, f2, f1, 1.0F, f3);
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return false;
+ }
+
+ public boolean e(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ Block block = iblockaccess.getType(blockposition).getBlock();
+
+ return block == Blocks.BARRIER ? false : ((!(block instanceof BlockFence) || block.material != this.material) && !(block instanceof BlockFenceGate) ? (block.material.k() && block.d() ? block.material != Material.PUMPKIN : false) : true);
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ return world.isClientSide ? true : ItemLeash.a(entityhuman, world, blockposition);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return 0;
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return iblockdata.set(BlockFence.NORTH, Boolean.valueOf(this.e(iblockaccess, blockposition.north()))).set(BlockFence.EAST, Boolean.valueOf(this.e(iblockaccess, blockposition.east()))).set(BlockFence.SOUTH, Boolean.valueOf(this.e(iblockaccess, blockposition.south()))).set(BlockFence.WEST, Boolean.valueOf(this.e(iblockaccess, blockposition.west())));
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockFence.NORTH, BlockFence.EAST, BlockFence.WEST, BlockFence.SOUTH});
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFenceGate.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFenceGate.java
new file mode 100644
index 0000000..c022812
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFenceGate.java
@@ -0,0 +1,126 @@
+package net.minecraft.server;
+
+public class BlockFenceGate extends BlockDirectional {
+
+ public static final BlockStateBoolean OPEN = BlockStateBoolean.of("open");
+ public static final BlockStateBoolean POWERED = BlockStateBoolean.of("powered");
+ public static final BlockStateBoolean IN_WALL = BlockStateBoolean.of("in_wall");
+
+ public BlockFenceGate(BlockWood.EnumLogVariant blockwood_enumlogvariant) {
+ super(Material.WOOD, blockwood_enumlogvariant.c());
+ this.j(this.blockStateList.getBlockData().set(BlockFenceGate.OPEN, Boolean.valueOf(false)).set(BlockFenceGate.POWERED, Boolean.valueOf(false)).set(BlockFenceGate.IN_WALL, Boolean.valueOf(false)));
+ this.a(CreativeModeTab.d);
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ EnumDirection.EnumAxis enumdirection_enumaxis = ((EnumDirection) iblockdata.get(BlockFenceGate.FACING)).k();
+
+ if (enumdirection_enumaxis == EnumDirection.EnumAxis.Z && (iblockaccess.getType(blockposition.west()).getBlock() == Blocks.COBBLESTONE_WALL || iblockaccess.getType(blockposition.east()).getBlock() == Blocks.COBBLESTONE_WALL) || enumdirection_enumaxis == EnumDirection.EnumAxis.X && (iblockaccess.getType(blockposition.north()).getBlock() == Blocks.COBBLESTONE_WALL || iblockaccess.getType(blockposition.south()).getBlock() == Blocks.COBBLESTONE_WALL)) {
+ iblockdata = iblockdata.set(BlockFenceGate.IN_WALL, Boolean.valueOf(true));
+ }
+
+ return iblockdata;
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return world.getType(blockposition.down()).getBlock().getMaterial().isBuildable() ? super.canPlace(world, blockposition) : false;
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue()) {
+ return null;
+ } else {
+ EnumDirection.EnumAxis enumdirection_enumaxis = ((EnumDirection) iblockdata.get(BlockFenceGate.FACING)).k();
+
+ return enumdirection_enumaxis == EnumDirection.EnumAxis.Z ? new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.375F), (double) (blockposition.getX() + 1), (double) ((float) blockposition.getY() + 1.5F), (double) ((float) blockposition.getZ() + 0.625F)) : new AxisAlignedBB((double) ((float) blockposition.getX() + 0.375F), (double) blockposition.getY(), (double) blockposition.getZ(), (double) ((float) blockposition.getX() + 0.625F), (double) ((float) blockposition.getY() + 1.5F), (double) (blockposition.getZ() + 1));
+ }
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ EnumDirection.EnumAxis enumdirection_enumaxis = ((EnumDirection) iblockaccess.getType(blockposition).get(BlockFenceGate.FACING)).k();
+
+ if (enumdirection_enumaxis == EnumDirection.EnumAxis.Z) {
+ this.a(0.0F, 0.0F, 0.375F, 1.0F, 1.0F, 0.625F);
+ } else {
+ this.a(0.375F, 0.0F, 0.0F, 0.625F, 1.0F, 1.0F);
+ }
+
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return ((Boolean) iblockaccess.getType(blockposition).get(BlockFenceGate.OPEN)).booleanValue();
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return this.getBlockData().set(BlockFenceGate.FACING, entityliving.getDirection()).set(BlockFenceGate.OPEN, Boolean.valueOf(false)).set(BlockFenceGate.POWERED, Boolean.valueOf(false)).set(BlockFenceGate.IN_WALL, Boolean.valueOf(false));
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue()) {
+ iblockdata = iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(false));
+ world.setTypeAndData(blockposition, iblockdata, 2);
+ } else {
+ EnumDirection enumdirection1 = EnumDirection.fromAngle((double) entityhuman.yaw);
+
+ if (iblockdata.get(BlockFenceGate.FACING) == enumdirection1.opposite()) {
+ iblockdata = iblockdata.set(BlockFenceGate.FACING, enumdirection1);
+ }
+
+ iblockdata = iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(true));
+ world.setTypeAndData(blockposition, iblockdata, 2);
+ }
+
+ world.a(entityhuman, ((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue() ? 1003 : 1006, blockposition, 0);
+ return true;
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ if (!world.isClientSide) {
+ boolean flag = world.isBlockIndirectlyPowered(blockposition);
+
+ if (flag || block.isPowerSource()) {
+ if (flag && !((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue() && !((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(true)).set(BlockFenceGate.POWERED, Boolean.valueOf(true)), 2);
+ world.a((EntityHuman) null, 1003, blockposition, 0);
+ } else if (!flag && ((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue() && ((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockFenceGate.OPEN, Boolean.valueOf(false)).set(BlockFenceGate.POWERED, Boolean.valueOf(false)), 2);
+ world.a((EntityHuman) null, 1006, blockposition, 0);
+ } else if (flag != ((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockFenceGate.POWERED, Boolean.valueOf(flag)), 2);
+ }
+ }
+
+ }
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockFenceGate.FACING, EnumDirection.fromType2(i)).set(BlockFenceGate.OPEN, Boolean.valueOf((i & 4) != 0)).set(BlockFenceGate.POWERED, Boolean.valueOf((i & 8) != 0));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((EnumDirection) iblockdata.get(BlockFenceGate.FACING)).b();
+
+ if (((Boolean) iblockdata.get(BlockFenceGate.POWERED)).booleanValue()) {
+ i |= 8;
+ }
+
+ if (((Boolean) iblockdata.get(BlockFenceGate.OPEN)).booleanValue()) {
+ i |= 4;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockFenceGate.FACING, BlockFenceGate.OPEN, BlockFenceGate.POWERED, BlockFenceGate.IN_WALL});
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFire.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFloorSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFloorSign.java
new file mode 100644
index 0000000..27bc097
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFloorSign.java
@@ -0,0 +1,31 @@
+package net.minecraft.server;
+
+public class BlockFloorSign extends BlockSign {
+
+ public static final BlockStateInteger ROTATION = BlockStateInteger.of("rotation", 0, 15);
+
+ public BlockFloorSign() {
+ this.j(this.blockStateList.getBlockData().set(BlockFloorSign.ROTATION, Integer.valueOf(0)));
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ if (!world.getType(blockposition.down()).getBlock().getMaterial().isBuildable()) {
+ this.b(world, blockposition, iblockdata, 0);
+ world.setAir(blockposition);
+ }
+
+ super.doPhysics(world, blockposition, iblockdata, block);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockFloorSign.ROTATION, Integer.valueOf(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((Integer) iblockdata.get(BlockFloorSign.ROTATION)).intValue();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockFloorSign.ROTATION});
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowerPot.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowers.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowers.java
new file mode 100644
index 0000000..ce128d9
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowers.java
@@ -0,0 +1,133 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
+import java.util.Collection;
+
+public abstract class BlockFlowers extends BlockPlant {
+
+ protected BlockStateEnum TYPE;
+
+ protected BlockFlowers() {
+ this.j(this.blockStateList.getBlockData().set(this.n(), this.l() == BlockFlowers.EnumFlowerType.RED ? BlockFlowers.EnumFlowerVarient.POPPY : BlockFlowers.EnumFlowerVarient.DANDELION));
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockFlowers.EnumFlowerVarient) iblockdata.get(this.n())).b();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(this.n(), BlockFlowers.EnumFlowerVarient.a(this.l(), i));
+ }
+
+ public abstract BlockFlowers.EnumFlowerType l();
+
+ public IBlockState n() {
+ if (this.TYPE == null) {
+ this.TYPE = BlockStateEnum.a("type", BlockFlowers.EnumFlowerVarient.class, new Predicate() {
+ public boolean a(BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient) {
+ return blockflowers_enumflowervarient.a() == BlockFlowers.this.l();
+ }
+
+ public boolean apply(Object object) {
+ return this.a((BlockFlowers.EnumFlowerVarient) object);
+ }
+ });
+ }
+
+ return this.TYPE;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockFlowers.EnumFlowerVarient) iblockdata.get(this.n())).b();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { this.n()});
+ }
+
+ public static enum EnumFlowerVarient implements INamable {
+
+ DANDELION(BlockFlowers.EnumFlowerType.YELLOW, 0, "dandelion"), POPPY(BlockFlowers.EnumFlowerType.RED, 0, "poppy"), BLUE_ORCHID(BlockFlowers.EnumFlowerType.RED, 1, "blue_orchid", "blueOrchid"), ALLIUM(BlockFlowers.EnumFlowerType.RED, 2, "allium"), HOUSTONIA(BlockFlowers.EnumFlowerType.RED, 3, "houstonia"), RED_TULIP(BlockFlowers.EnumFlowerType.RED, 4, "red_tulip", "tulipRed"), ORANGE_TULIP(BlockFlowers.EnumFlowerType.RED, 5, "orange_tulip", "tulipOrange"), WHITE_TULIP(BlockFlowers.EnumFlowerType.RED, 6, "white_tulip", "tulipWhite"), PINK_TULIP(BlockFlowers.EnumFlowerType.RED, 7, "pink_tulip", "tulipPink"), OXEYE_DAISY(BlockFlowers.EnumFlowerType.RED, 8, "oxeye_daisy", "oxeyeDaisy");
+
+ private static final BlockFlowers.EnumFlowerVarient[][] k = new BlockFlowers.EnumFlowerVarient[BlockFlowers.EnumFlowerType.values().length][];
+ private final BlockFlowers.EnumFlowerType l;
+ private final int m;
+ private final String n;
+ private final String o;
+
+ private EnumFlowerVarient(BlockFlowers.EnumFlowerType blockflowers_enumflowertype, int i, String s) {
+ this(blockflowers_enumflowertype, i, s, s);
+ }
+
+ private EnumFlowerVarient(BlockFlowers.EnumFlowerType blockflowers_enumflowertype, int i, String s, String s1) {
+ this.l = blockflowers_enumflowertype;
+ this.m = i;
+ this.n = s;
+ this.o = s1;
+ }
+
+ public BlockFlowers.EnumFlowerType a() {
+ return this.l;
+ }
+
+ public int b() {
+ return this.m;
+ }
+
+ public static BlockFlowers.EnumFlowerVarient a(BlockFlowers.EnumFlowerType blockflowers_enumflowertype, int i) {
+ BlockFlowers.EnumFlowerVarient[] ablockflowers_enumflowervarient = BlockFlowers.EnumFlowerVarient.k[blockflowers_enumflowertype.ordinal()];
+
+ if (i < 0 || i >= ablockflowers_enumflowervarient.length) {
+ i = 0;
+ }
+
+ return ablockflowers_enumflowervarient[i];
+ }
+
+ public String toString() {
+ return this.n;
+ }
+
+ public String getName() {
+ return this.n;
+ }
+
+ public String d() {
+ return this.o;
+ }
+
+ static {
+ BlockFlowers.EnumFlowerType[] ablockflowers_enumflowertype = BlockFlowers.EnumFlowerType.values();
+ int i = ablockflowers_enumflowertype.length;
+
+ for (int j = 0; j < i; ++j) {
+ final BlockFlowers.EnumFlowerType blockflowers_enumflowertype = ablockflowers_enumflowertype[j];
+ Collection collection = Collections2.filter(Lists.newArrayList(values()), new Predicate() {
+ public boolean a(BlockFlowers.EnumFlowerVarient blockflowers_enumflowervarient) {
+ return blockflowers_enumflowervarient.a() == blockflowers_enumflowertype;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((BlockFlowers.EnumFlowerVarient) object);
+ }
+ });
+
+ BlockFlowers.EnumFlowerVarient.k[blockflowers_enumflowertype.ordinal()] = (BlockFlowers.EnumFlowerVarient[]) collection.toArray(new BlockFlowers.EnumFlowerVarient[collection.size()]);
+ }
+
+ }
+ }
+
+ public static enum EnumFlowerType {
+
+ YELLOW, RED;
+
+ private EnumFlowerType() {}
+
+ public BlockFlowers a() {
+ return this == BlockFlowers.EnumFlowerType.YELLOW ? Blocks.YELLOW_FLOWER : Blocks.RED_FLOWER;
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFlowing.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockFluids.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFurnace.java
new file mode 100644
index 0000000..21d868c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockFurnace.java
@@ -0,0 +1,148 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.Random;
+
+public class BlockFurnace extends BlockContainer {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+ private final boolean b;
+ private static boolean N;
+
+ protected BlockFurnace(boolean flag) {
+ super(Material.STONE);
+ this.j(this.blockStateList.getBlockData().set(BlockFurnace.FACING, EnumDirection.NORTH));
+ this.b = flag;
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Item.getItemOf(Blocks.FURNACE);
+ }
+
+ /* // PandaSpigot - comment out - SPIGOT-1401
+ public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.e(world, blockposition, iblockdata);
+ }
+
+ private void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!world.isClientSide) {
+ Block block = world.getType(blockposition.north()).getBlock();
+ Block block1 = world.getType(blockposition.south()).getBlock();
+ Block block2 = world.getType(blockposition.west()).getBlock();
+ Block block3 = world.getType(blockposition.east()).getBlock();
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockFurnace.FACING);
+
+ if (enumdirection == EnumDirection.NORTH && block.o() && !block1.o()) {
+ enumdirection = EnumDirection.SOUTH;
+ } else if (enumdirection == EnumDirection.SOUTH && block1.o() && !block.o()) {
+ enumdirection = EnumDirection.NORTH;
+ } else if (enumdirection == EnumDirection.WEST && block2.o() && !block3.o()) {
+ enumdirection = EnumDirection.EAST;
+ } else if (enumdirection == EnumDirection.EAST && block3.o() && !block2.o()) {
+ enumdirection = EnumDirection.WEST;
+ }
+
+ world.setTypeAndData(blockposition, iblockdata.set(BlockFurnace.FACING, enumdirection), 2);
+ }
+ }
+ */ // PandaSpigot
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (world.isClientSide) {
+ return true;
+ } else {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityFurnace) {
+ entityhuman.openContainer((TileEntityFurnace) tileentity);
+ entityhuman.b(StatisticList.Y);
+ }
+
+ return true;
+ }
+ }
+
+ public static void a(boolean flag, World world, BlockPosition blockposition) {
+ IBlockData iblockdata = world.getType(blockposition);
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ BlockFurnace.N = true;
+ if (flag) {
+ world.setTypeAndData(blockposition, Blocks.LIT_FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3);
+ world.setTypeAndData(blockposition, Blocks.LIT_FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3);
+ } else {
+ world.setTypeAndData(blockposition, Blocks.FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3);
+ world.setTypeAndData(blockposition, Blocks.FURNACE.getBlockData().set(BlockFurnace.FACING, iblockdata.get(BlockFurnace.FACING)), 3);
+ }
+
+ BlockFurnace.N = false;
+ if (tileentity != null) {
+ tileentity.D();
+ world.setTileEntity(blockposition, tileentity);
+ }
+
+ }
+
+ public TileEntity a(World world, int i) {
+ return new TileEntityFurnace();
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return this.getBlockData().set(BlockFurnace.FACING, entityliving.getDirection().opposite());
+ }
+
+ public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockFurnace.FACING, entityliving.getDirection().opposite()), 2);
+ if (itemstack.hasName()) {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityFurnace) {
+ ((TileEntityFurnace) tileentity).a(itemstack.getName());
+ }
+ }
+
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!BlockFurnace.N) {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityFurnace) {
+ InventoryUtils.dropInventory(world, blockposition, (TileEntityFurnace) tileentity);
+ world.updateAdjacentComparators(blockposition, this);
+ }
+ }
+
+ super.remove(world, blockposition, iblockdata);
+ }
+
+ public boolean isComplexRedstone() {
+ return true;
+ }
+
+ public int l(World world, BlockPosition blockposition) {
+ return Container.a(world.getTileEntity(blockposition));
+ }
+
+ public int b() {
+ return 3;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ EnumDirection enumdirection = EnumDirection.fromType1(i);
+
+ if (enumdirection.k() == EnumDirection.EnumAxis.Y) {
+ enumdirection = EnumDirection.NORTH;
+ }
+
+ return this.getBlockData().set(BlockFurnace.FACING, enumdirection);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumDirection) iblockdata.get(BlockFurnace.FACING)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockFurnace.FACING});
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockGlass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGlass.java
new file mode 100644
index 0000000..7879084
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGlass.java
@@ -0,0 +1,23 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockGlass extends BlockHalfTransparent {
+
+ public BlockGlass(Material material, boolean flag) {
+ super(material, flag);
+ this.a(CreativeModeTab.b);
+ }
+
+ public int a(Random random) {
+ return 0;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ protected boolean I() {
+ return true;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockGrass.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockGravel.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGravel.java
new file mode 100644
index 0000000..d910b79
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockGravel.java
@@ -0,0 +1,20 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockGravel extends BlockFalling {
+
+ public BlockGravel() {}
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ if (i > 3) {
+ i = 3;
+ }
+
+ return random.nextInt(10 - i * 3) == 0 ? Items.FLINT : Item.getItemOf(this);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.m;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHalfTransparent.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHalfTransparent.java
new file mode 100644
index 0000000..84c13ea
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHalfTransparent.java
@@ -0,0 +1,19 @@
+package net.minecraft.server;
+
+public class BlockHalfTransparent extends Block {
+
+ private boolean a;
+
+ protected BlockHalfTransparent(Material material, boolean flag) {
+ this(material, flag, material.r());
+ }
+
+ protected BlockHalfTransparent(Material material, boolean flag, MaterialMapColor materialmapcolor) {
+ super(material, materialmapcolor);
+ this.a = flag;
+ }
+
+ public boolean c() {
+ return false;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHardenedClay.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHardenedClay.java
new file mode 100644
index 0000000..7b12023
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHardenedClay.java
@@ -0,0 +1,13 @@
+package net.minecraft.server;
+
+public class BlockHardenedClay extends Block {
+
+ public BlockHardenedClay() {
+ super(Material.STONE);
+ this.a(CreativeModeTab.b);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.q;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHay.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHay.java
new file mode 100644
index 0000000..cc1dab7
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHay.java
@@ -0,0 +1,48 @@
+package net.minecraft.server;
+
+public class BlockHay extends BlockRotatable {
+
+ public BlockHay() {
+ super(Material.GRASS, MaterialMapColor.t);
+ this.j(this.blockStateList.getBlockData().set(BlockHay.AXIS, EnumDirection.EnumAxis.Y));
+ this.a(CreativeModeTab.b);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ EnumDirection.EnumAxis enumdirection_enumaxis = EnumDirection.EnumAxis.Y;
+ int j = i & 12;
+
+ if (j == 4) {
+ enumdirection_enumaxis = EnumDirection.EnumAxis.X;
+ } else if (j == 8) {
+ enumdirection_enumaxis = EnumDirection.EnumAxis.Z;
+ }
+
+ return this.getBlockData().set(BlockHay.AXIS, enumdirection_enumaxis);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ int i = 0;
+ EnumDirection.EnumAxis enumdirection_enumaxis = (EnumDirection.EnumAxis) iblockdata.get(BlockHay.AXIS);
+
+ if (enumdirection_enumaxis == EnumDirection.EnumAxis.X) {
+ i |= 4;
+ } else if (enumdirection_enumaxis == EnumDirection.EnumAxis.Z) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockHay.AXIS});
+ }
+
+ protected ItemStack i(IBlockData iblockdata) {
+ return new ItemStack(Item.getItemOf(this), 1, 0);
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving).set(BlockHay.AXIS, enumdirection.k());
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockHopper.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockHugeMushroom.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHugeMushroom.java
new file mode 100644
index 0000000..e5642dd
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockHugeMushroom.java
@@ -0,0 +1,129 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockHugeMushroom extends Block {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockHugeMushroom.EnumHugeMushroomVariant.class);
+ private final Block b;
+
+ public BlockHugeMushroom(Material material, MaterialMapColor materialmapcolor, Block block) {
+ super(material, materialmapcolor);
+ this.j(this.blockStateList.getBlockData().set(BlockHugeMushroom.VARIANT, BlockHugeMushroom.EnumHugeMushroomVariant.ALL_OUTSIDE));
+ this.b = block;
+ }
+
+ public int a(Random random) {
+ return Math.max(0, random.nextInt(10) - 7);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ switch (BlockHugeMushroom.SyntheticClass_1.a[((BlockHugeMushroom.EnumHugeMushroomVariant) iblockdata.get(BlockHugeMushroom.VARIANT)).ordinal()]) {
+ case 1:
+ return MaterialMapColor.e;
+
+ case 2:
+ return MaterialMapColor.d;
+
+ case 3:
+ return MaterialMapColor.d;
+
+ default:
+ return super.g(iblockdata);
+ }
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Item.getItemOf(this.b);
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return this.getBlockData();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockHugeMushroom.VARIANT, BlockHugeMushroom.EnumHugeMushroomVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockHugeMushroom.EnumHugeMushroomVariant) iblockdata.get(BlockHugeMushroom.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockHugeMushroom.VARIANT});
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[BlockHugeMushroom.EnumHugeMushroomVariant.values().length];
+
+ static {
+ try {
+ BlockHugeMushroom.SyntheticClass_1.a[BlockHugeMushroom.EnumHugeMushroomVariant.ALL_STEM.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockHugeMushroom.SyntheticClass_1.a[BlockHugeMushroom.EnumHugeMushroomVariant.ALL_INSIDE.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockHugeMushroom.SyntheticClass_1.a[BlockHugeMushroom.EnumHugeMushroomVariant.STEM.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ }
+ }
+
+ public static enum EnumHugeMushroomVariant implements INamable {
+
+ NORTH_WEST(1, "north_west"), NORTH(2, "north"), NORTH_EAST(3, "north_east"), WEST(4, "west"), CENTER(5, "center"), EAST(6, "east"), SOUTH_WEST(7, "south_west"), SOUTH(8, "south"), SOUTH_EAST(9, "south_east"), STEM(10, "stem"), ALL_INSIDE(0, "all_inside"), ALL_OUTSIDE(14, "all_outside"), ALL_STEM(15, "all_stem");
+
+ private static final BlockHugeMushroom.EnumHugeMushroomVariant[] n = new BlockHugeMushroom.EnumHugeMushroomVariant[16];
+ private final int o;
+ private final String p;
+
+ private EnumHugeMushroomVariant(int i, String s) {
+ this.o = i;
+ this.p = s;
+ }
+
+ public int a() {
+ return this.o;
+ }
+
+ public String toString() {
+ return this.p;
+ }
+
+ public static BlockHugeMushroom.EnumHugeMushroomVariant a(int i) {
+ if (i < 0 || i >= BlockHugeMushroom.EnumHugeMushroomVariant.n.length) {
+ i = 0;
+ }
+
+ BlockHugeMushroom.EnumHugeMushroomVariant blockhugemushroom_enumhugemushroomvariant = BlockHugeMushroom.EnumHugeMushroomVariant.n[i];
+
+ return blockhugemushroom_enumhugemushroomvariant == null ? BlockHugeMushroom.EnumHugeMushroomVariant.n[0] : blockhugemushroom_enumhugemushroomvariant;
+ }
+
+ public String getName() {
+ return this.p;
+ }
+
+ static {
+ BlockHugeMushroom.EnumHugeMushroomVariant[] ablockhugemushroom_enumhugemushroomvariant = values();
+ int i = ablockhugemushroom_enumhugemushroomvariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockHugeMushroom.EnumHugeMushroomVariant blockhugemushroom_enumhugemushroomvariant = ablockhugemushroom_enumhugemushroomvariant[j];
+
+ BlockHugeMushroom.EnumHugeMushroomVariant.n[blockhugemushroom_enumhugemushroomvariant.a()] = blockhugemushroom_enumhugemushroomvariant;
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockIce.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockJukeBox.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLadder.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLadder.java
new file mode 100644
index 0000000..529aff2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLadder.java
@@ -0,0 +1,144 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.Iterator;
+
+public class BlockLadder extends Block {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+
+ protected BlockLadder() {
+ super(Material.ORIENTABLE);
+ this.j(this.blockStateList.getBlockData().set(BlockLadder.FACING, EnumDirection.NORTH));
+ this.a(CreativeModeTab.c);
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.updateShape(world, blockposition);
+ return super.a(world, blockposition, iblockdata);
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ IBlockData iblockdata = iblockaccess.getType(blockposition);
+
+ if (iblockdata.getBlock() == this) {
+ float f = 0.125F;
+
+ switch (BlockLadder.SyntheticClass_1.a[((EnumDirection) iblockdata.get(BlockLadder.FACING)).ordinal()]) {
+ case 1:
+ this.a(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F);
+ break;
+
+ case 2:
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, f);
+ break;
+
+ case 3:
+ this.a(1.0F - f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ break;
+
+ case 4:
+ default:
+ this.a(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F);
+ }
+
+ }
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return world.getType(blockposition.west()).getBlock().isOccluding() ? true : (world.getType(blockposition.east()).getBlock().isOccluding() ? true : (world.getType(blockposition.north()).getBlock().isOccluding() ? true : world.getType(blockposition.south()).getBlock().isOccluding()));
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ if (enumdirection.k().c() && this.a(world, blockposition, enumdirection)) {
+ return this.getBlockData().set(BlockLadder.FACING, enumdirection);
+ } else {
+ Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator();
+
+ EnumDirection enumdirection1;
+
+ do {
+ if (!iterator.hasNext()) {
+ return this.getBlockData();
+ }
+
+ enumdirection1 = (EnumDirection) iterator.next();
+ } while (!this.a(world, blockposition, enumdirection1));
+
+ return this.getBlockData().set(BlockLadder.FACING, enumdirection1);
+ }
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockLadder.FACING);
+
+ if (!this.a(world, blockposition, enumdirection)) {
+ this.b(world, blockposition, iblockdata, 0);
+ world.setAir(blockposition);
+ }
+
+ super.doPhysics(world, blockposition, iblockdata, block);
+ }
+
+ protected boolean a(World world, BlockPosition blockposition, EnumDirection enumdirection) {
+ return world.getType(blockposition.shift(enumdirection.opposite())).getBlock().isOccluding();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ EnumDirection enumdirection = EnumDirection.fromType1(i);
+
+ if (enumdirection.k() == EnumDirection.EnumAxis.Y) {
+ enumdirection = EnumDirection.NORTH;
+ }
+
+ return this.getBlockData().set(BlockLadder.FACING, enumdirection);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumDirection) iblockdata.get(BlockLadder.FACING)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockLadder.FACING});
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[EnumDirection.values().length];
+
+ static {
+ try {
+ BlockLadder.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockLadder.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockLadder.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ BlockLadder.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves1.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves1.java
new file mode 100644
index 0000000..aac5aa2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves1.java
@@ -0,0 +1,75 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+
+public class BlockLeaves1 extends BlockLeaves {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() {
+ public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) {
+ return blockwood_enumlogvariant.a() < 4;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((BlockWood.EnumLogVariant) object);
+ }
+ });
+
+ public BlockLeaves1() {
+ this.j(this.blockStateList.getBlockData().set(BlockLeaves1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLeaves1.CHECK_DECAY, Boolean.valueOf(true)).set(BlockLeaves1.DECAYABLE, Boolean.valueOf(true)));
+ }
+
+ protected void a(World world, BlockPosition blockposition, IBlockData iblockdata, int i) {
+ if (iblockdata.get(BlockLeaves1.VARIANT) == BlockWood.EnumLogVariant.OAK && world.random.nextInt(i) == 0) {
+ a(world, blockposition, new ItemStack(Items.APPLE, 1, 0));
+ }
+
+ }
+
+ protected int d(IBlockData iblockdata) {
+ return iblockdata.get(BlockLeaves1.VARIANT) == BlockWood.EnumLogVariant.JUNGLE ? 40 : super.d(iblockdata);
+ }
+
+ protected ItemStack i(IBlockData iblockdata) {
+ return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a());
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockLeaves1.VARIANT, this.b(i)).set(BlockLeaves1.DECAYABLE, Boolean.valueOf((i & 4) == 0)).set(BlockLeaves1.CHECK_DECAY, Boolean.valueOf((i & 8) > 0));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a();
+
+ if (!((Boolean) iblockdata.get(BlockLeaves1.DECAYABLE)).booleanValue()) {
+ i |= 4;
+ }
+
+ if (((Boolean) iblockdata.get(BlockLeaves1.CHECK_DECAY)).booleanValue()) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ public BlockWood.EnumLogVariant b(int i) {
+ return BlockWood.EnumLogVariant.a((i & 3) % 4);
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockLeaves1.VARIANT, BlockLeaves1.CHECK_DECAY, BlockLeaves1.DECAYABLE});
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a();
+ }
+
+ public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) {
+ if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) {
+ entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]);
+ a(world, blockposition, new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves1.VARIANT)).a()));
+ } else {
+ super.a(world, entityhuman, blockposition, iblockdata, tileentity);
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves2.java
new file mode 100644
index 0000000..944ce5b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLeaves2.java
@@ -0,0 +1,77 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+
+public class BlockLeaves2 extends BlockLeaves {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() {
+ public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) {
+ return blockwood_enumlogvariant.a() >= 4;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((BlockWood.EnumLogVariant) object);
+ }
+ });
+
+ public BlockLeaves2() {
+ this.j(this.blockStateList.getBlockData().set(BlockLeaves2.VARIANT, BlockWood.EnumLogVariant.ACACIA).set(BlockLeaves2.CHECK_DECAY, Boolean.valueOf(true)).set(BlockLeaves2.DECAYABLE, Boolean.valueOf(true)));
+ }
+
+ protected void a(World world, BlockPosition blockposition, IBlockData iblockdata, int i) {
+ if (iblockdata.get(BlockLeaves2.VARIANT) == BlockWood.EnumLogVariant.DARK_OAK && world.random.nextInt(i) == 0) {
+ a(world, blockposition, new ItemStack(Items.APPLE, 1, 0));
+ }
+
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a();
+ }
+
+ public int getDropData(World world, BlockPosition blockposition) {
+ IBlockData iblockdata = world.getType(blockposition);
+
+ return iblockdata.getBlock().toLegacyData(iblockdata) & 3;
+ }
+
+ protected ItemStack i(IBlockData iblockdata) {
+ return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a() - 4);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockLeaves2.VARIANT, this.b(i)).set(BlockLeaves2.DECAYABLE, Boolean.valueOf((i & 4) == 0)).set(BlockLeaves2.CHECK_DECAY, Boolean.valueOf((i & 8) > 0));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a() - 4;
+
+ if (!((Boolean) iblockdata.get(BlockLeaves2.DECAYABLE)).booleanValue()) {
+ i |= 4;
+ }
+
+ if (((Boolean) iblockdata.get(BlockLeaves2.CHECK_DECAY)).booleanValue()) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ public BlockWood.EnumLogVariant b(int i) {
+ return BlockWood.EnumLogVariant.a((i & 3) + 4);
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockLeaves2.VARIANT, BlockLeaves2.CHECK_DECAY, BlockLeaves2.DECAYABLE});
+ }
+
+ public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) {
+ if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) {
+ entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]);
+ a(world, blockposition, new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLeaves2.VARIANT)).a() - 4));
+ } else {
+ super.a(world, entityhuman, blockposition, iblockdata, tileentity);
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockLever.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLightStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLightStone.java
new file mode 100644
index 0000000..b50dc9a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLightStone.java
@@ -0,0 +1,27 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockLightStone extends Block {
+
+ public BlockLightStone(Material material) {
+ super(material);
+ this.a(CreativeModeTab.b);
+ }
+
+ public int getDropCount(int i, Random random) {
+ return MathHelper.clamp(this.a(random) + random.nextInt(i + 1), 1, 4);
+ }
+
+ public int a(Random random) {
+ return 2 + random.nextInt(3);
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.GLOWSTONE_DUST;
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.d;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog1.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog1.java
new file mode 100644
index 0000000..5290b36
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog1.java
@@ -0,0 +1,162 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+
+public class BlockLog1 extends BlockLogAbstract {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() {
+ public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) {
+ return blockwood_enumlogvariant.a() < 4;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((BlockWood.EnumLogVariant) object);
+ }
+ });
+
+ public BlockLog1() {
+ this.j(this.blockStateList.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.OAK).set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.Y));
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ BlockWood.EnumLogVariant blockwood_enumlogvariant = (BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT);
+
+ switch (BlockLog1.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog1.AXIS)).ordinal()]) {
+ case 1:
+ case 2:
+ case 3:
+ default:
+ switch (BlockLog1.SyntheticClass_1.a[blockwood_enumlogvariant.ordinal()]) {
+ case 1:
+ default:
+ return BlockWood.EnumLogVariant.SPRUCE.c();
+
+ case 2:
+ return BlockWood.EnumLogVariant.DARK_OAK.c();
+
+ case 3:
+ return MaterialMapColor.p;
+
+ case 4:
+ return BlockWood.EnumLogVariant.SPRUCE.c();
+ }
+
+ case 4:
+ return blockwood_enumlogvariant.c();
+ }
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ IBlockData iblockdata = this.getBlockData().set(BlockLog1.VARIANT, BlockWood.EnumLogVariant.a((i & 3) % 4));
+
+ switch (i & 12) {
+ case 0:
+ iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.Y);
+ break;
+
+ case 4:
+ iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.X);
+ break;
+
+ case 8:
+ iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.Z);
+ break;
+
+ default:
+ iblockdata = iblockdata.set(BlockLog1.AXIS, BlockLogAbstract.EnumLogRotation.NONE);
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT)).a();
+
+ switch (BlockLog1.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog1.AXIS)).ordinal()]) {
+ case 1:
+ i |= 4;
+ break;
+
+ case 2:
+ i |= 8;
+ break;
+
+ case 3:
+ i |= 12;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockLog1.VARIANT, BlockLog1.AXIS});
+ }
+
+ protected ItemStack i(IBlockData iblockdata) {
+ return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT)).a());
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog1.VARIANT)).a();
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a;
+ static final int[] b = new int[BlockLogAbstract.EnumLogRotation.values().length];
+
+ static {
+ try {
+ BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.X.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Z.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.NONE.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ BlockLog1.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Y.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ a = new int[BlockWood.EnumLogVariant.values().length];
+
+ try {
+ BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.OAK.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror4) {
+ ;
+ }
+
+ try {
+ BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.SPRUCE.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror5) {
+ ;
+ }
+
+ try {
+ BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.BIRCH.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror6) {
+ ;
+ }
+
+ try {
+ BlockLog1.SyntheticClass_1.a[BlockWood.EnumLogVariant.JUNGLE.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror7) {
+ ;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog2.java
new file mode 100644
index 0000000..0f9cabc
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLog2.java
@@ -0,0 +1,144 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+
+public class BlockLog2 extends BlockLogAbstract {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.a("variant", BlockWood.EnumLogVariant.class, new Predicate() {
+ public boolean a(BlockWood.EnumLogVariant blockwood_enumlogvariant) {
+ return blockwood_enumlogvariant.a() >= 4;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((BlockWood.EnumLogVariant) object);
+ }
+ });
+
+ public BlockLog2() {
+ this.j(this.blockStateList.getBlockData().set(BlockLog2.VARIANT, BlockWood.EnumLogVariant.ACACIA).set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.Y));
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ BlockWood.EnumLogVariant blockwood_enumlogvariant = (BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT);
+
+ switch (BlockLog2.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog2.AXIS)).ordinal()]) {
+ case 1:
+ case 2:
+ case 3:
+ default:
+ switch (BlockLog2.SyntheticClass_1.a[blockwood_enumlogvariant.ordinal()]) {
+ case 1:
+ default:
+ return MaterialMapColor.m;
+
+ case 2:
+ return BlockWood.EnumLogVariant.DARK_OAK.c();
+ }
+
+ case 4:
+ return blockwood_enumlogvariant.c();
+ }
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ IBlockData iblockdata = this.getBlockData().set(BlockLog2.VARIANT, BlockWood.EnumLogVariant.a((i & 3) + 4));
+
+ switch (i & 12) {
+ case 0:
+ iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.Y);
+ break;
+
+ case 4:
+ iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.X);
+ break;
+
+ case 8:
+ iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.Z);
+ break;
+
+ default:
+ iblockdata = iblockdata.set(BlockLog2.AXIS, BlockLogAbstract.EnumLogRotation.NONE);
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT)).a() - 4;
+
+ switch (BlockLog2.SyntheticClass_1.b[((BlockLogAbstract.EnumLogRotation) iblockdata.get(BlockLog2.AXIS)).ordinal()]) {
+ case 1:
+ i |= 4;
+ break;
+
+ case 2:
+ i |= 8;
+ break;
+
+ case 3:
+ i |= 12;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockLog2.VARIANT, BlockLog2.AXIS});
+ }
+
+ protected ItemStack i(IBlockData iblockdata) {
+ return new ItemStack(Item.getItemOf(this), 1, ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT)).a() - 4);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockLog2.VARIANT)).a() - 4;
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a;
+ static final int[] b = new int[BlockLogAbstract.EnumLogRotation.values().length];
+
+ static {
+ try {
+ BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.X.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Z.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.NONE.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ BlockLog2.SyntheticClass_1.b[BlockLogAbstract.EnumLogRotation.Y.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ a = new int[BlockWood.EnumLogVariant.values().length];
+
+ try {
+ BlockLog2.SyntheticClass_1.a[BlockWood.EnumLogVariant.ACACIA.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror4) {
+ ;
+ }
+
+ try {
+ BlockLog2.SyntheticClass_1.a[BlockWood.EnumLogVariant.DARK_OAK.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror5) {
+ ;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLogAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLogAbstract.java
new file mode 100644
index 0000000..69a1289
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLogAbstract.java
@@ -0,0 +1,99 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+
+public abstract class BlockLogAbstract extends BlockRotatable {
+
+ public static final BlockStateEnum AXIS = BlockStateEnum.of("axis", BlockLogAbstract.EnumLogRotation.class);
+
+ public BlockLogAbstract() {
+ super(Material.WOOD);
+ this.a(CreativeModeTab.b);
+ this.c(2.0F);
+ this.a(BlockLogAbstract.f);
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ byte b0 = 4;
+ int i = b0 + 1;
+
+ if (world.areChunksLoadedBetween(blockposition.a(-i, -i, -i), blockposition.a(i, i, i))) {
+ Iterator iterator = BlockPosition.a(blockposition.a(-b0, -b0, -b0), blockposition.a(b0, b0, b0)).iterator();
+
+ while (iterator.hasNext()) {
+ BlockPosition blockposition1 = (BlockPosition) iterator.next();
+ IBlockData iblockdata1 = world.getType(blockposition1);
+
+ if (iblockdata1.getBlock().getMaterial() == Material.LEAVES && !((Boolean) iblockdata1.get(BlockLeaves.CHECK_DECAY)).booleanValue()) {
+ world.setTypeAndData(blockposition1, iblockdata1.set(BlockLeaves.CHECK_DECAY, Boolean.valueOf(true)), 4);
+ }
+ }
+
+ }
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving).set(BlockLogAbstract.AXIS, BlockLogAbstract.EnumLogRotation.a(enumdirection.k()));
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[EnumDirection.EnumAxis.values().length];
+
+ static {
+ try {
+ BlockLogAbstract.SyntheticClass_1.a[EnumDirection.EnumAxis.X.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockLogAbstract.SyntheticClass_1.a[EnumDirection.EnumAxis.Y.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockLogAbstract.SyntheticClass_1.a[EnumDirection.EnumAxis.Z.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ }
+ }
+
+ public static enum EnumLogRotation implements INamable {
+
+ X("x"), Y("y"), Z("z"), NONE("none");
+
+ private final String e;
+
+ private EnumLogRotation(String s) {
+ this.e = s;
+ }
+
+ public String toString() {
+ return this.e;
+ }
+
+ public static BlockLogAbstract.EnumLogRotation a(EnumDirection.EnumAxis enumdirection_enumaxis) {
+ switch (BlockLogAbstract.SyntheticClass_1.a[enumdirection_enumaxis.ordinal()]) {
+ case 1:
+ return BlockLogAbstract.EnumLogRotation.X;
+
+ case 2:
+ return BlockLogAbstract.EnumLogRotation.Y;
+
+ case 3:
+ return BlockLogAbstract.EnumLogRotation.Z;
+
+ default:
+ return BlockLogAbstract.EnumLogRotation.NONE;
+ }
+ }
+
+ public String getName() {
+ return this.e;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockLongGrass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLongGrass.java
new file mode 100644
index 0000000..126a4d2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockLongGrass.java
@@ -0,0 +1,127 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockLongGrass extends BlockPlant implements IBlockFragilePlantElement {
+
+ public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockLongGrass.EnumTallGrassType.class);
+
+ protected BlockLongGrass() {
+ super(Material.REPLACEABLE_PLANT);
+ this.j(this.blockStateList.getBlockData().set(BlockLongGrass.TYPE, BlockLongGrass.EnumTallGrassType.DEAD_BUSH));
+ float f = 0.4F;
+
+ this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f);
+ }
+
+ public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return this.c(world.getType(blockposition.down()).getBlock());
+ }
+
+ public boolean a(World world, BlockPosition blockposition) {
+ return true;
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return random.nextInt(8) == 0 ? Items.WHEAT_SEEDS : null;
+ }
+
+ public int getDropCount(int i, Random random) {
+ return 1 + random.nextInt(i * 2 + 1);
+ }
+
+ public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) {
+ if (!world.isClientSide && entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) {
+ entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]);
+ a(world, blockposition, new ItemStack(Blocks.TALLGRASS, 1, ((BlockLongGrass.EnumTallGrassType) iblockdata.get(BlockLongGrass.TYPE)).a()));
+ } else {
+ super.a(world, entityhuman, blockposition, iblockdata, tileentity);
+ }
+
+ }
+
+ public int getDropData(World world, BlockPosition blockposition) {
+ IBlockData iblockdata = world.getType(blockposition);
+
+ return iblockdata.getBlock().toLegacyData(iblockdata);
+ }
+
+ public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, boolean flag) {
+ return iblockdata.get(BlockLongGrass.TYPE) != BlockLongGrass.EnumTallGrassType.DEAD_BUSH;
+ }
+
+ public boolean a(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
+ return true;
+ }
+
+ public void b(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
+ BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = BlockTallPlant.EnumTallFlowerVariants.GRASS;
+
+ if (iblockdata.get(BlockLongGrass.TYPE) == BlockLongGrass.EnumTallGrassType.FERN) {
+ blocktallplant_enumtallflowervariants = BlockTallPlant.EnumTallFlowerVariants.FERN;
+ }
+
+ if (Blocks.DOUBLE_PLANT.canPlace(world, blockposition)) {
+ Blocks.DOUBLE_PLANT.a(world, blockposition, blocktallplant_enumtallflowervariants, 2);
+ }
+
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockLongGrass.TYPE, BlockLongGrass.EnumTallGrassType.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockLongGrass.EnumTallGrassType) iblockdata.get(BlockLongGrass.TYPE)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockLongGrass.TYPE});
+ }
+
+ public static enum EnumTallGrassType implements INamable {
+
+ DEAD_BUSH(0, "dead_bush"), GRASS(1, "tall_grass"), FERN(2, "fern");
+
+ private static final BlockLongGrass.EnumTallGrassType[] d = new BlockLongGrass.EnumTallGrassType[values().length];
+ private final int e;
+ private final String f;
+
+ private EnumTallGrassType(int i, String s) {
+ this.e = i;
+ this.f = s;
+ }
+
+ public int a() {
+ return this.e;
+ }
+
+ public String toString() {
+ return this.f;
+ }
+
+ public static BlockLongGrass.EnumTallGrassType a(int i) {
+ if (i < 0 || i >= BlockLongGrass.EnumTallGrassType.d.length) {
+ i = 0;
+ }
+
+ return BlockLongGrass.EnumTallGrassType.d[i];
+ }
+
+ public String getName() {
+ return this.f;
+ }
+
+ static {
+ BlockLongGrass.EnumTallGrassType[] ablocklonggrass_enumtallgrasstype = values();
+ int i = ablocklonggrass_enumtallgrasstype.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockLongGrass.EnumTallGrassType blocklonggrass_enumtallgrasstype = ablocklonggrass_enumtallgrasstype[j];
+
+ BlockLongGrass.EnumTallGrassType.d[blocklonggrass_enumtallgrasstype.a()] = blocklonggrass_enumtallgrasstype;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockMelon.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMelon.java
new file mode 100644
index 0000000..9365fe0
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMelon.java
@@ -0,0 +1,23 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockMelon extends Block {
+
+ protected BlockMelon() {
+ super(Material.PUMPKIN, MaterialMapColor.u);
+ this.a(CreativeModeTab.b);
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.MELON;
+ }
+
+ public int a(Random random) {
+ return 3 + random.nextInt(5);
+ }
+
+ public int getDropCount(int i, Random random) {
+ return Math.min(9, this.a(random) + random.nextInt(1 + i));
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartDetector.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrack.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrack.java
new file mode 100644
index 0000000..f56f656
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrack.java
@@ -0,0 +1,34 @@
+package net.minecraft.server;
+
+public class BlockMinecartTrack extends BlockMinecartTrackAbstract {
+
+ public static final BlockStateEnum SHAPE = BlockStateEnum.of("shape", BlockMinecartTrackAbstract.EnumTrackPosition.class);
+
+ protected BlockMinecartTrack() {
+ super(false);
+ this.j(this.blockStateList.getBlockData().set(BlockMinecartTrack.SHAPE, BlockMinecartTrackAbstract.EnumTrackPosition.NORTH_SOUTH));
+ }
+
+ protected void b(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ if (block.isPowerSource() && (new BlockMinecartTrackAbstract.MinecartTrackLogic(world, blockposition, iblockdata)).a() == 3) {
+ this.a(world, blockposition, iblockdata, false);
+ }
+
+ }
+
+ public IBlockState n() {
+ return BlockMinecartTrack.SHAPE;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockMinecartTrack.SHAPE, BlockMinecartTrackAbstract.EnumTrackPosition.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockMinecartTrackAbstract.EnumTrackPosition) iblockdata.get(BlockMinecartTrack.SHAPE)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockMinecartTrack.SHAPE});
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMinecartTrackAbstract.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMobSpawner.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMonsterEggs.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMushroom.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockMycel.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherWart.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherbrick.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherbrick.java
new file mode 100644
index 0000000..4ddcbd6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNetherbrick.java
@@ -0,0 +1,13 @@
+package net.minecraft.server;
+
+public class BlockNetherbrick extends Block {
+
+ public BlockNetherbrick() {
+ super(Material.STONE);
+ this.a(CreativeModeTab.b);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.K;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockNote.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNote.java
new file mode 100644
index 0000000..e6b7546
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockNote.java
@@ -0,0 +1,86 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.List;
+
+public class BlockNote extends BlockContainer {
+
+ private static final List a = Lists.newArrayList(new String[] { "harp", "bd", "snare", "hat", "bassattack"});
+
+ public BlockNote() {
+ super(Material.WOOD);
+ this.a(CreativeModeTab.d);
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ boolean flag = world.isBlockIndirectlyPowered(blockposition);
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityNote) {
+ TileEntityNote tileentitynote = (TileEntityNote) tileentity;
+
+ if (tileentitynote.f != flag) {
+ if (flag) {
+ tileentitynote.play(world, blockposition);
+ }
+
+ tileentitynote.f = flag;
+ }
+ }
+
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (world.isClientSide) {
+ return true;
+ } else {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityNote) {
+ TileEntityNote tileentitynote = (TileEntityNote) tileentity;
+
+ tileentitynote.b();
+ tileentitynote.play(world, blockposition);
+ entityhuman.b(StatisticList.S);
+ }
+
+ return true;
+ }
+ }
+
+ public void attack(World world, BlockPosition blockposition, EntityHuman entityhuman) {
+ if (!world.isClientSide) {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityNote) {
+ ((TileEntityNote) tileentity).play(world, blockposition);
+ entityhuman.b(StatisticList.R);
+ }
+
+ }
+ }
+
+ public TileEntity a(World world, int i) {
+ return new TileEntityNote();
+ }
+
+ private String b(int i) {
+ if (i < 0 || i >= BlockNote.a.size()) {
+ i = 0;
+ }
+
+ return (String) BlockNote.a.get(i);
+ }
+
+ public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, int i, int j) {
+ float f = (float) Math.pow(2.0D, (double) (j - 12) / 12.0D);
+
+ world.makeSound((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, "note." + this.b(i), 3.0F, f);
+ world.addParticle(EnumParticle.NOTE, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 1.2D, (double) blockposition.getZ() + 0.5D, (double) j / 24.0D, 0.0D, 0.0D, new int[0]);
+ return true;
+ }
+
+ public int b() {
+ return 3;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockObsidian.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockObsidian.java
new file mode 100644
index 0000000..85ed566
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockObsidian.java
@@ -0,0 +1,19 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockObsidian extends Block {
+
+ public BlockObsidian() {
+ super(Material.STONE);
+ this.a(CreativeModeTab.b);
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Item.getItemOf(Blocks.OBSIDIAN);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.E;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockOre.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPackedIce.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPackedIce.java
new file mode 100644
index 0000000..38f0184
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPackedIce.java
@@ -0,0 +1,16 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockPackedIce extends Block {
+
+ public BlockPackedIce() {
+ super(Material.SNOW_LAYER);
+ this.frictionFactor = 0.98F;
+ this.a(CreativeModeTab.b);
+ }
+
+ public int a(Random random) {
+ return 0;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPiston.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonExtension.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonExtension.java
new file mode 100644
index 0000000..371d104
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonExtension.java
@@ -0,0 +1,249 @@
+package net.minecraft.server;
+
+import java.util.List;
+import java.util.Random;
+
+public class BlockPistonExtension extends Block {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing");
+ public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockPistonExtension.EnumPistonType.class);
+ public static final BlockStateBoolean SHORT = BlockStateBoolean.of("short");
+
+ public BlockPistonExtension() {
+ super(Material.PISTON);
+ this.j(this.blockStateList.getBlockData().set(BlockPistonExtension.FACING, EnumDirection.NORTH).set(BlockPistonExtension.TYPE, BlockPistonExtension.EnumPistonType.DEFAULT).set(BlockPistonExtension.SHORT, Boolean.valueOf(false)));
+ this.a(BlockPistonExtension.i);
+ this.c(0.5F);
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) {
+ if (entityhuman.abilities.canInstantlyBuild) {
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockPistonExtension.FACING);
+
+ if (enumdirection != null) {
+ BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite());
+ Block block = world.getType(blockposition1).getBlock();
+
+ if (block == Blocks.PISTON || block == Blocks.STICKY_PISTON) {
+ world.setAir(blockposition1);
+ }
+ }
+ }
+
+ super.a(world, blockposition, iblockdata, entityhuman);
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ super.remove(world, blockposition, iblockdata);
+ EnumDirection enumdirection = ((EnumDirection) iblockdata.get(BlockPistonExtension.FACING)).opposite();
+
+ blockposition = blockposition.shift(enumdirection);
+ IBlockData iblockdata1 = world.getType(blockposition);
+
+ if ((iblockdata1.getBlock() == Blocks.PISTON || iblockdata1.getBlock() == Blocks.STICKY_PISTON) && ((Boolean) iblockdata1.get(BlockPiston.EXTENDED)).booleanValue()) {
+ iblockdata1.getBlock().b(world, blockposition, iblockdata1, 0);
+ world.setAir(blockposition);
+ }
+
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return false;
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition, EnumDirection enumdirection) {
+ return false;
+ }
+
+ public int a(Random random) {
+ return 0;
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ this.d(iblockdata);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ this.e(iblockdata);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ private void e(IBlockData iblockdata) {
+ float f = 0.25F;
+ float f1 = 0.375F;
+ float f2 = 0.625F;
+ float f3 = 0.25F;
+ float f4 = 0.75F;
+
+ switch (BlockPistonExtension.SyntheticClass_1.a[((EnumDirection) iblockdata.get(BlockPistonExtension.FACING)).ordinal()]) {
+ case 1:
+ this.a(0.375F, 0.25F, 0.375F, 0.625F, 1.0F, 0.625F);
+ break;
+
+ case 2:
+ this.a(0.375F, 0.0F, 0.375F, 0.625F, 0.75F, 0.625F);
+ break;
+
+ case 3:
+ this.a(0.25F, 0.375F, 0.25F, 0.75F, 0.625F, 1.0F);
+ break;
+
+ case 4:
+ this.a(0.25F, 0.375F, 0.0F, 0.75F, 0.625F, 0.75F);
+ break;
+
+ case 5:
+ this.a(0.375F, 0.25F, 0.25F, 0.625F, 0.75F, 1.0F);
+ break;
+
+ case 6:
+ this.a(0.0F, 0.375F, 0.25F, 0.75F, 0.625F, 0.75F);
+ }
+
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ this.d(iblockaccess.getType(blockposition));
+ }
+
+ public void d(IBlockData iblockdata) {
+ float f = 0.25F;
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockPistonExtension.FACING);
+
+ if (enumdirection != null) {
+ switch (BlockPistonExtension.SyntheticClass_1.a[enumdirection.ordinal()]) {
+ case 1:
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
+ break;
+
+ case 2:
+ this.a(0.0F, 0.75F, 0.0F, 1.0F, 1.0F, 1.0F);
+ break;
+
+ case 3:
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.25F);
+ break;
+
+ case 4:
+ this.a(0.0F, 0.0F, 0.75F, 1.0F, 1.0F, 1.0F);
+ break;
+
+ case 5:
+ this.a(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 1.0F);
+ break;
+
+ case 6:
+ this.a(0.75F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ }
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockPistonExtension.FACING);
+ BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite());
+ IBlockData iblockdata1 = world.getType(blockposition1);
+
+ if (iblockdata1.getBlock() != Blocks.PISTON && iblockdata1.getBlock() != Blocks.STICKY_PISTON) {
+ world.setAir(blockposition);
+ } else {
+ iblockdata1.getBlock().doPhysics(world, blockposition1, iblockdata1, block);
+ }
+
+ }
+
+ public static EnumDirection b(int i) {
+ int j = i & 7;
+
+ return j > 5 ? null : EnumDirection.fromType1(j);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockPistonExtension.FACING, b(i)).set(BlockPistonExtension.TYPE, (i & 8) > 0 ? BlockPistonExtension.EnumPistonType.STICKY : BlockPistonExtension.EnumPistonType.DEFAULT);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((EnumDirection) iblockdata.get(BlockPistonExtension.FACING)).a();
+
+ if (iblockdata.get(BlockPistonExtension.TYPE) == BlockPistonExtension.EnumPistonType.STICKY) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockPistonExtension.FACING, BlockPistonExtension.TYPE, BlockPistonExtension.SHORT});
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[EnumDirection.values().length];
+
+ static {
+ try {
+ BlockPistonExtension.SyntheticClass_1.a[EnumDirection.DOWN.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockPistonExtension.SyntheticClass_1.a[EnumDirection.UP.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockPistonExtension.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ BlockPistonExtension.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ try {
+ BlockPistonExtension.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 5;
+ } catch (NoSuchFieldError nosuchfielderror4) {
+ ;
+ }
+
+ try {
+ BlockPistonExtension.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 6;
+ } catch (NoSuchFieldError nosuchfielderror5) {
+ ;
+ }
+
+ }
+ }
+
+ public static enum EnumPistonType implements INamable {
+
+ DEFAULT("normal"), STICKY("sticky");
+
+ private final String c;
+
+ private EnumPistonType(String s) {
+ this.c = s;
+ }
+
+ public String toString() {
+ return this.c;
+ }
+
+ public String getName() {
+ return this.c;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonMoving.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonMoving.java
new file mode 100644
index 0000000..3b33343
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPistonMoving.java
@@ -0,0 +1,210 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockPistonMoving extends BlockContainer {
+
+ public static final BlockStateDirection FACING = BlockPistonExtension.FACING;
+ public static final BlockStateEnum TYPE = BlockPistonExtension.TYPE;
+
+ public BlockPistonMoving() {
+ super(Material.PISTON);
+ this.j(this.blockStateList.getBlockData().set(BlockPistonMoving.FACING, EnumDirection.NORTH).set(BlockPistonMoving.TYPE, BlockPistonExtension.EnumPistonType.DEFAULT));
+ this.c(-1.0F);
+ }
+
+ public TileEntity a(World world, int i) {
+ return null;
+ }
+
+ public static TileEntity a(IBlockData iblockdata, EnumDirection enumdirection, boolean flag, boolean flag1) {
+ return new TileEntityPiston(iblockdata, enumdirection, flag, flag1);
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity instanceof TileEntityPiston) {
+ ((TileEntityPiston) tileentity).h();
+ } else {
+ super.remove(world, blockposition, iblockdata);
+ }
+
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return false;
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition, EnumDirection enumdirection) {
+ return false;
+ }
+
+ public void postBreak(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ BlockPosition blockposition1 = blockposition.shift(((EnumDirection) iblockdata.get(BlockPistonMoving.FACING)).opposite());
+ IBlockData iblockdata1 = world.getType(blockposition1);
+
+ if (iblockdata1.getBlock() instanceof BlockPiston && ((Boolean) iblockdata1.get(BlockPiston.EXTENDED)).booleanValue()) {
+ world.setAir(blockposition1);
+ }
+
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (!world.isClientSide && world.getTileEntity(blockposition) == null) {
+ world.setAir(blockposition);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return null;
+ }
+
+ public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {
+ if (!world.isClientSide) {
+ TileEntityPiston tileentitypiston = this.e((IBlockAccess) world, blockposition);
+
+ if (tileentitypiston != null) {
+ IBlockData iblockdata1 = tileentitypiston.b();
+
+ iblockdata1.getBlock().b(world, blockposition, iblockdata1, 0);
+ }
+ }
+ }
+
+ public MovingObjectPosition a(World world, BlockPosition blockposition, Vec3D vec3d, Vec3D vec3d1) {
+ return null;
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ if (!world.isClientSide) {
+ world.getTileEntity(blockposition);
+ }
+
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ TileEntityPiston tileentitypiston = this.e((IBlockAccess) world, blockposition);
+
+ if (tileentitypiston == null) {
+ return null;
+ } else {
+ float f = tileentitypiston.a(0.0F);
+
+ if (tileentitypiston.d()) {
+ f = 1.0F - f;
+ }
+
+ return this.a(world, blockposition, tileentitypiston.b(), f, tileentitypiston.e());
+ }
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ TileEntityPiston tileentitypiston = this.e(iblockaccess, blockposition);
+
+ if (tileentitypiston != null) {
+ IBlockData iblockdata = tileentitypiston.b();
+ Block block = iblockdata.getBlock();
+
+ if (block == this || block.getMaterial() == Material.AIR) {
+ return;
+ }
+
+ float f = tileentitypiston.a(0.0F);
+
+ if (tileentitypiston.d()) {
+ f = 1.0F - f;
+ }
+
+ block.updateShape(iblockaccess, blockposition);
+ if (block == Blocks.PISTON || block == Blocks.STICKY_PISTON) {
+ f = 0.0F;
+ }
+
+ EnumDirection enumdirection = tileentitypiston.e();
+
+ this.minX = block.B() - (double) ((float) enumdirection.getAdjacentX() * f);
+ this.minY = block.D() - (double) ((float) enumdirection.getAdjacentY() * f);
+ this.minZ = block.F() - (double) ((float) enumdirection.getAdjacentZ() * f);
+ this.maxX = block.C() - (double) ((float) enumdirection.getAdjacentX() * f);
+ this.maxY = block.E() - (double) ((float) enumdirection.getAdjacentY() * f);
+ this.maxZ = block.G() - (double) ((float) enumdirection.getAdjacentZ() * f);
+ }
+
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata, float f, EnumDirection enumdirection) {
+ if (iblockdata.getBlock() != this && iblockdata.getBlock().getMaterial() != Material.AIR) {
+ AxisAlignedBB axisalignedbb = iblockdata.getBlock().a(world, blockposition, iblockdata);
+
+ if (axisalignedbb == null) {
+ return null;
+ } else {
+ double d0 = axisalignedbb.a;
+ double d1 = axisalignedbb.b;
+ double d2 = axisalignedbb.c;
+ double d3 = axisalignedbb.d;
+ double d4 = axisalignedbb.e;
+ double d5 = axisalignedbb.f;
+
+ if (enumdirection.getAdjacentX() < 0) {
+ d0 -= (double) ((float) enumdirection.getAdjacentX() * f);
+ } else {
+ d3 -= (double) ((float) enumdirection.getAdjacentX() * f);
+ }
+
+ if (enumdirection.getAdjacentY() < 0) {
+ d1 -= (double) ((float) enumdirection.getAdjacentY() * f);
+ } else {
+ d4 -= (double) ((float) enumdirection.getAdjacentY() * f);
+ }
+
+ if (enumdirection.getAdjacentZ() < 0) {
+ d2 -= (double) ((float) enumdirection.getAdjacentZ() * f);
+ } else {
+ d5 -= (double) ((float) enumdirection.getAdjacentZ() * f);
+ }
+
+ return new AxisAlignedBB(d0, d1, d2, d3, d4, d5);
+ }
+ } else {
+ return null;
+ }
+ }
+
+ private TileEntityPiston e(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ TileEntity tileentity = iblockaccess.getTileEntity(blockposition);
+
+ return tileentity instanceof TileEntityPiston ? (TileEntityPiston) tileentity : null;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockPistonMoving.FACING, BlockPistonExtension.b(i)).set(BlockPistonMoving.TYPE, (i & 8) > 0 ? BlockPistonExtension.EnumPistonType.STICKY : BlockPistonExtension.EnumPistonType.DEFAULT);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((EnumDirection) iblockdata.get(BlockPistonMoving.FACING)).a();
+
+ if (iblockdata.get(BlockPistonMoving.TYPE) == BlockPistonExtension.EnumPistonType.STICKY) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockPistonMoving.FACING, BlockPistonMoving.TYPE});
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java
similarity index 94%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java
index 8b84846..6697837 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPlant.java
@@ -42,7 +42,7 @@ public class BlockPlant extends Block {
}
protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
- if (!this.f(world, blockposition, iblockdata)) {
+ if (!this.f(world, blockposition, iblockdata) && ((WorldServer) world).hasPhysicsEvent) { // PandaSpigot - hasPhysicsEvent
// CraftBukkit Start
org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
BlockPhysicsEvent event = new BlockPhysicsEvent(block, block.getTypeId());
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPortal.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPosition.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPotatoes.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPotatoes.java
new file mode 100644
index 0000000..2007ca1
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPotatoes.java
@@ -0,0 +1,24 @@
+package net.minecraft.server;
+
+public class BlockPotatoes extends BlockCrops {
+
+ public BlockPotatoes() {}
+
+ protected Item l() {
+ return Items.POTATO;
+ }
+
+ protected Item n() {
+ return Items.POTATO;
+ }
+
+ public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) {
+ super.dropNaturally(world, blockposition, iblockdata, f, i);
+ if (!world.isClientSide) {
+ if (((Integer) iblockdata.get(BlockPotatoes.AGE)).intValue() >= 7 && world.random.nextInt(50) == 0) {
+ a(world, blockposition, new ItemStack(Items.POISONOUS_POTATO));
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPowered.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPowered.java
new file mode 100644
index 0000000..798ae26
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPowered.java
@@ -0,0 +1,16 @@
+package net.minecraft.server;
+
+public class BlockPowered extends Block {
+
+ public BlockPowered(Material material, MaterialMapColor materialmapcolor) {
+ super(material, materialmapcolor);
+ }
+
+ public boolean isPowerSource() {
+ return true;
+ }
+
+ public int a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata, EnumDirection enumdirection) {
+ return 15;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPoweredRail.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPredicate.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPredicate.java
new file mode 100644
index 0000000..28af027
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPredicate.java
@@ -0,0 +1,24 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+
+public class BlockPredicate implements Predicate {
+
+ private final Block a;
+
+ private BlockPredicate(Block block) {
+ this.a = block;
+ }
+
+ public static BlockPredicate a(Block block) {
+ return new BlockPredicate(block);
+ }
+
+ public boolean a(IBlockData iblockdata) {
+ return iblockdata != null && iblockdata.getBlock() == this.a;
+ }
+
+ public boolean apply(IBlockData object) {
+ return this.a(object);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockPrismarine.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPrismarine.java
new file mode 100644
index 0000000..369f123
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPrismarine.java
@@ -0,0 +1,91 @@
+package net.minecraft.server;
+
+public class BlockPrismarine extends Block {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockPrismarine.EnumPrismarineVariant.class);
+ public static final int b = BlockPrismarine.EnumPrismarineVariant.ROUGH.a();
+ public static final int N = BlockPrismarine.EnumPrismarineVariant.BRICKS.a();
+ public static final int O = BlockPrismarine.EnumPrismarineVariant.DARK.a();
+
+ public BlockPrismarine() {
+ super(Material.STONE);
+ this.j(this.blockStateList.getBlockData().set(BlockPrismarine.VARIANT, BlockPrismarine.EnumPrismarineVariant.ROUGH));
+ this.a(CreativeModeTab.b);
+ }
+
+ public String getName() {
+ return LocaleI18n.get(this.a() + "." + BlockPrismarine.EnumPrismarineVariant.ROUGH.c() + ".name");
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return iblockdata.get(BlockPrismarine.VARIANT) == BlockPrismarine.EnumPrismarineVariant.ROUGH ? MaterialMapColor.y : MaterialMapColor.G;
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockPrismarine.EnumPrismarineVariant) iblockdata.get(BlockPrismarine.VARIANT)).a();
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockPrismarine.EnumPrismarineVariant) iblockdata.get(BlockPrismarine.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockPrismarine.VARIANT});
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockPrismarine.VARIANT, BlockPrismarine.EnumPrismarineVariant.a(i));
+ }
+
+ public static enum EnumPrismarineVariant implements INamable {
+
+ ROUGH(0, "prismarine", "rough"), BRICKS(1, "prismarine_bricks", "bricks"), DARK(2, "dark_prismarine", "dark");
+
+ private static final BlockPrismarine.EnumPrismarineVariant[] d = new BlockPrismarine.EnumPrismarineVariant[values().length];
+ private final int e;
+ private final String f;
+ private final String g;
+
+ private EnumPrismarineVariant(int i, String s, String s1) {
+ this.e = i;
+ this.f = s;
+ this.g = s1;
+ }
+
+ public int a() {
+ return this.e;
+ }
+
+ public String toString() {
+ return this.f;
+ }
+
+ public static BlockPrismarine.EnumPrismarineVariant a(int i) {
+ if (i < 0 || i >= BlockPrismarine.EnumPrismarineVariant.d.length) {
+ i = 0;
+ }
+
+ return BlockPrismarine.EnumPrismarineVariant.d[i];
+ }
+
+ public String getName() {
+ return this.f;
+ }
+
+ public String c() {
+ return this.g;
+ }
+
+ static {
+ BlockPrismarine.EnumPrismarineVariant[] ablockprismarine_enumprismarinevariant = values();
+ int i = ablockprismarine_enumprismarinevariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockPrismarine.EnumPrismarineVariant blockprismarine_enumprismarinevariant = ablockprismarine_enumprismarinevariant[j];
+
+ BlockPrismarine.EnumPrismarineVariant.d[blockprismarine_enumprismarinevariant.a()] = blockprismarine_enumprismarinevariant;
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockPumpkin.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockQuartz.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockQuartz.java
new file mode 100644
index 0000000..5c39ec2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockQuartz.java
@@ -0,0 +1,132 @@
+package net.minecraft.server;
+
+public class BlockQuartz extends Block {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockQuartz.EnumQuartzVariant.class);
+
+ public BlockQuartz() {
+ super(Material.STONE);
+ this.j(this.blockStateList.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.DEFAULT));
+ this.a(CreativeModeTab.b);
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ if (i == BlockQuartz.EnumQuartzVariant.LINES_Y.a()) {
+ switch (BlockQuartz.SyntheticClass_1.a[enumdirection.k().ordinal()]) {
+ case 1:
+ return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.LINES_Z);
+
+ case 2:
+ return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.LINES_X);
+
+ case 3:
+ default:
+ return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.LINES_Y);
+ }
+ } else {
+ return i == BlockQuartz.EnumQuartzVariant.CHISELED.a() ? this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.CHISELED) : this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.DEFAULT);
+ }
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ BlockQuartz.EnumQuartzVariant blockquartz_enumquartzvariant = (BlockQuartz.EnumQuartzVariant) iblockdata.get(BlockQuartz.VARIANT);
+
+ return blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_X && blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_Z ? blockquartz_enumquartzvariant.a() : BlockQuartz.EnumQuartzVariant.LINES_Y.a();
+ }
+
+ protected ItemStack i(IBlockData iblockdata) {
+ BlockQuartz.EnumQuartzVariant blockquartz_enumquartzvariant = (BlockQuartz.EnumQuartzVariant) iblockdata.get(BlockQuartz.VARIANT);
+
+ return blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_X && blockquartz_enumquartzvariant != BlockQuartz.EnumQuartzVariant.LINES_Z ? super.i(iblockdata) : new ItemStack(Item.getItemOf(this), 1, BlockQuartz.EnumQuartzVariant.LINES_Y.a());
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.p;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockQuartz.VARIANT, BlockQuartz.EnumQuartzVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockQuartz.EnumQuartzVariant) iblockdata.get(BlockQuartz.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockQuartz.VARIANT});
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[EnumDirection.EnumAxis.values().length];
+
+ static {
+ try {
+ BlockQuartz.SyntheticClass_1.a[EnumDirection.EnumAxis.Z.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockQuartz.SyntheticClass_1.a[EnumDirection.EnumAxis.X.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockQuartz.SyntheticClass_1.a[EnumDirection.EnumAxis.Y.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ }
+ }
+
+ public static enum EnumQuartzVariant implements INamable {
+
+ DEFAULT(0, "default", "default"), CHISELED(1, "chiseled", "chiseled"), LINES_Y(2, "lines_y", "lines"), LINES_X(3, "lines_x", "lines"), LINES_Z(4, "lines_z", "lines");
+
+ private static final BlockQuartz.EnumQuartzVariant[] f = new BlockQuartz.EnumQuartzVariant[values().length];
+ private final int g;
+ private final String h;
+ private final String i;
+
+ private EnumQuartzVariant(int i, String s, String s1) {
+ this.g = i;
+ this.h = s;
+ this.i = s1;
+ }
+
+ public int a() {
+ return this.g;
+ }
+
+ public String toString() {
+ return this.i;
+ }
+
+ public static BlockQuartz.EnumQuartzVariant a(int i) {
+ if (i < 0 || i >= BlockQuartz.EnumQuartzVariant.f.length) {
+ i = 0;
+ }
+
+ return BlockQuartz.EnumQuartzVariant.f[i];
+ }
+
+ public String getName() {
+ return this.h;
+ }
+
+ static {
+ BlockQuartz.EnumQuartzVariant[] ablockquartz_enumquartzvariant = values();
+ int i = ablockquartz_enumquartzvariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockQuartz.EnumQuartzVariant blockquartz_enumquartzvariant = ablockquartz_enumquartzvariant[j];
+
+ BlockQuartz.EnumQuartzVariant.f[blockquartz_enumquartzvariant.a()] = blockquartz_enumquartzvariant;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedFlowers.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedFlowers.java
new file mode 100644
index 0000000..0f4a18e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedFlowers.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockRedFlowers extends BlockFlowers {
+
+ public BlockRedFlowers() {}
+
+ public BlockFlowers.EnumFlowerType l() {
+ return BlockFlowers.EnumFlowerType.RED;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedSandstone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedSandstone.java
new file mode 100644
index 0000000..9f2d9c6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedSandstone.java
@@ -0,0 +1,80 @@
+package net.minecraft.server;
+
+public class BlockRedSandstone extends Block {
+
+ public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockRedSandstone.EnumRedSandstoneVariant.class);
+
+ public BlockRedSandstone() {
+ super(Material.STONE, BlockSand.EnumSandVariant.RED_SAND.c());
+ this.j(this.blockStateList.getBlockData().set(BlockRedSandstone.TYPE, BlockRedSandstone.EnumRedSandstoneVariant.DEFAULT));
+ this.a(CreativeModeTab.b);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockRedSandstone.EnumRedSandstoneVariant) iblockdata.get(BlockRedSandstone.TYPE)).a();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockRedSandstone.TYPE, BlockRedSandstone.EnumRedSandstoneVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockRedSandstone.EnumRedSandstoneVariant) iblockdata.get(BlockRedSandstone.TYPE)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockRedSandstone.TYPE});
+ }
+
+ public static enum EnumRedSandstoneVariant implements INamable {
+
+ DEFAULT(0, "red_sandstone", "default"), CHISELED(1, "chiseled_red_sandstone", "chiseled"), SMOOTH(2, "smooth_red_sandstone", "smooth");
+
+ private static final BlockRedSandstone.EnumRedSandstoneVariant[] d = new BlockRedSandstone.EnumRedSandstoneVariant[values().length];
+ private final int e;
+ private final String f;
+ private final String g;
+
+ private EnumRedSandstoneVariant(int i, String s, String s1) {
+ this.e = i;
+ this.f = s;
+ this.g = s1;
+ }
+
+ public int a() {
+ return this.e;
+ }
+
+ public String toString() {
+ return this.f;
+ }
+
+ public static BlockRedSandstone.EnumRedSandstoneVariant a(int i) {
+ if (i < 0 || i >= BlockRedSandstone.EnumRedSandstoneVariant.d.length) {
+ i = 0;
+ }
+
+ return BlockRedSandstone.EnumRedSandstoneVariant.d[i];
+ }
+
+ public String getName() {
+ return this.f;
+ }
+
+ public String c() {
+ return this.g;
+ }
+
+ static {
+ BlockRedSandstone.EnumRedSandstoneVariant[] ablockredsandstone_enumredsandstonevariant = values();
+ int i = ablockredsandstone_enumredsandstonevariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockRedSandstone.EnumRedSandstoneVariant blockredsandstone_enumredsandstonevariant = ablockredsandstone_enumredsandstonevariant[j];
+
+ BlockRedSandstone.EnumRedSandstoneVariant.d[blockredsandstone_enumredsandstonevariant.a()] = blockredsandstone_enumredsandstonevariant;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneComparator.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneComparator.java
new file mode 100644
index 0000000..71aaf47
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneComparator.java
@@ -0,0 +1,244 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.List;
+import java.util.Random;
+
+public class BlockRedstoneComparator extends BlockDiodeAbstract implements IContainer {
+
+ public static final BlockStateBoolean POWERED = BlockStateBoolean.of("powered");
+ public static final BlockStateEnum MODE = BlockStateEnum.of("mode", BlockRedstoneComparator.EnumComparatorMode.class);
+
+ public BlockRedstoneComparator(boolean flag) {
+ super(flag);
+ this.j(this.blockStateList.getBlockData().set(BlockRedstoneComparator.FACING, EnumDirection.NORTH).set(BlockRedstoneComparator.POWERED, Boolean.valueOf(false)).set(BlockRedstoneComparator.MODE, BlockRedstoneComparator.EnumComparatorMode.COMPARE));
+ this.isTileEntity = true;
+ }
+
+ public String getName() {
+ return LocaleI18n.get("item.comparator.name");
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.COMPARATOR;
+ }
+
+ protected int d(IBlockData iblockdata) {
+ return 2;
+ }
+
+ protected IBlockData e(IBlockData iblockdata) {
+ Boolean obool = (Boolean) iblockdata.get(BlockRedstoneComparator.POWERED);
+ BlockRedstoneComparator.EnumComparatorMode blockredstonecomparator_enumcomparatormode = (BlockRedstoneComparator.EnumComparatorMode) iblockdata.get(BlockRedstoneComparator.MODE);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING);
+
+ return Blocks.POWERED_COMPARATOR.getBlockData().set(BlockRedstoneComparator.FACING, enumdirection).set(BlockRedstoneComparator.POWERED, obool).set(BlockRedstoneComparator.MODE, blockredstonecomparator_enumcomparatormode);
+ }
+
+ protected IBlockData k(IBlockData iblockdata) {
+ Boolean obool = (Boolean) iblockdata.get(BlockRedstoneComparator.POWERED);
+ BlockRedstoneComparator.EnumComparatorMode blockredstonecomparator_enumcomparatormode = (BlockRedstoneComparator.EnumComparatorMode) iblockdata.get(BlockRedstoneComparator.MODE);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING);
+
+ return Blocks.UNPOWERED_COMPARATOR.getBlockData().set(BlockRedstoneComparator.FACING, enumdirection).set(BlockRedstoneComparator.POWERED, obool).set(BlockRedstoneComparator.MODE, blockredstonecomparator_enumcomparatormode);
+ }
+
+ protected boolean l(IBlockData iblockdata) {
+ return this.N || ((Boolean) iblockdata.get(BlockRedstoneComparator.POWERED)).booleanValue();
+ }
+
+ protected int a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) {
+ TileEntity tileentity = iblockaccess.getTileEntity(blockposition);
+
+ return tileentity instanceof TileEntityComparator ? ((TileEntityComparator) tileentity).b() : 0;
+ }
+
+ private int j(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.SUBTRACT ? Math.max(this.f(world, blockposition, iblockdata) - this.c(world, blockposition, iblockdata), 0) : this.f(world, blockposition, iblockdata);
+ }
+
+ protected boolean e(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ int i = this.f(world, blockposition, iblockdata);
+
+ if (i >= 15) {
+ return true;
+ } else if (i == 0) {
+ return false;
+ } else {
+ int j = this.c(world, blockposition, iblockdata);
+
+ return j == 0 ? true : i >= j;
+ }
+ }
+
+ protected int f(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ int i = super.f(world, blockposition, iblockdata);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING);
+ BlockPosition blockposition1 = blockposition.shift(enumdirection);
+ Block block = world.getType(blockposition1).getBlock();
+
+ if (block.isComplexRedstone()) {
+ i = block.l(world, blockposition1);
+ } else if (i < 15 && block.isOccluding()) {
+ blockposition1 = blockposition1.shift(enumdirection);
+ block = world.getType(blockposition1).getBlock();
+ if (block.isComplexRedstone()) {
+ i = block.l(world, blockposition1);
+ } else if (block.getMaterial() == Material.AIR) {
+ EntityItemFrame entityitemframe = this.a(world, enumdirection, blockposition1);
+
+ if (entityitemframe != null) {
+ i = entityitemframe.q();
+ }
+ }
+ }
+
+ return i;
+ }
+
+ private EntityItemFrame a(World world, final EnumDirection enumdirection, BlockPosition blockposition) {
+ List list = world.a(EntityItemFrame.class, new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) (blockposition.getY() + 1), (double) (blockposition.getZ() + 1)), new Predicate() {
+ public boolean a(Entity entity) {
+ return entity != null && entity.getDirection() == enumdirection;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((Entity) object);
+ }
+ });
+
+ return list.size() == 1 ? (EntityItemFrame) list.get(0) : null;
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (!entityhuman.abilities.mayBuild) {
+ return false;
+ } else {
+ iblockdata = iblockdata.a(BlockRedstoneComparator.MODE);
+ world.makeSound((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, "random.click", 0.3F, iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.SUBTRACT ? 0.55F : 0.5F);
+ world.setTypeAndData(blockposition, iblockdata, 2);
+ this.k(world, blockposition, iblockdata);
+ return true;
+ }
+ }
+
+ protected void g(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!world.a(blockposition, (Block) this)) {
+ int i = this.j(world, blockposition, iblockdata);
+ TileEntity tileentity = world.getTileEntity(blockposition);
+ int j = tileentity instanceof TileEntityComparator ? ((TileEntityComparator) tileentity).b() : 0;
+
+ if (i != j || this.l(iblockdata) != this.e(world, blockposition, iblockdata)) {
+ if (this.i(world, blockposition, iblockdata)) {
+ world.a(blockposition, this, 2, -1);
+ } else {
+ world.a(blockposition, this, 2, 0);
+ }
+ }
+
+ }
+ }
+
+ private void k(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ int i = this.j(world, blockposition, iblockdata);
+ TileEntity tileentity = world.getTileEntity(blockposition);
+ int j = 0;
+
+ if (tileentity instanceof TileEntityComparator) {
+ TileEntityComparator tileentitycomparator = (TileEntityComparator) tileentity;
+
+ j = tileentitycomparator.b();
+ tileentitycomparator.a(i);
+ }
+
+ if (j != i || iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.COMPARE) {
+ boolean flag = this.e(world, blockposition, iblockdata);
+ boolean flag1 = this.l(iblockdata);
+
+ if (flag1 && !flag) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockRedstoneComparator.POWERED, Boolean.valueOf(false)), 2);
+ } else if (!flag1 && flag) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockRedstoneComparator.POWERED, Boolean.valueOf(true)), 2);
+ }
+
+ this.h(world, blockposition, iblockdata);
+ }
+
+ }
+
+ public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) {
+ if (this.N) {
+ world.setTypeAndData(blockposition, this.k(iblockdata).set(BlockRedstoneComparator.POWERED, Boolean.valueOf(true)), 4);
+ }
+
+ this.k(world, blockposition, iblockdata);
+ }
+
+ public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ super.onPlace(world, blockposition, iblockdata);
+ world.setTileEntity(blockposition, this.a(world, 0));
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ super.remove(world, blockposition, iblockdata);
+ world.t(blockposition);
+ this.h(world, blockposition, iblockdata);
+ }
+
+ public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, int i, int j) {
+ super.a(world, blockposition, iblockdata, i, j);
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ return tileentity == null ? false : tileentity.c(i, j);
+ }
+
+ public TileEntity a(World world, int i) {
+ return new TileEntityComparator();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockRedstoneComparator.FACING, EnumDirection.fromType2(i)).set(BlockRedstoneComparator.POWERED, Boolean.valueOf((i & 8) > 0)).set(BlockRedstoneComparator.MODE, (i & 4) > 0 ? BlockRedstoneComparator.EnumComparatorMode.SUBTRACT : BlockRedstoneComparator.EnumComparatorMode.COMPARE);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((EnumDirection) iblockdata.get(BlockRedstoneComparator.FACING)).b();
+
+ if (((Boolean) iblockdata.get(BlockRedstoneComparator.POWERED)).booleanValue()) {
+ i |= 8;
+ }
+
+ if (iblockdata.get(BlockRedstoneComparator.MODE) == BlockRedstoneComparator.EnumComparatorMode.SUBTRACT) {
+ i |= 4;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockRedstoneComparator.FACING, BlockRedstoneComparator.MODE, BlockRedstoneComparator.POWERED});
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ return this.getBlockData().set(BlockRedstoneComparator.FACING, entityliving.getDirection().opposite()).set(BlockRedstoneComparator.POWERED, Boolean.valueOf(false)).set(BlockRedstoneComparator.MODE, BlockRedstoneComparator.EnumComparatorMode.COMPARE);
+ }
+
+ public static enum EnumComparatorMode implements INamable {
+
+ COMPARE("compare"), SUBTRACT("subtract");
+
+ private final String c;
+
+ private EnumComparatorMode(String s) {
+ this.c = s;
+ }
+
+ public String toString() {
+ return this.c;
+ }
+
+ public String getName() {
+ return this.c;
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneLamp.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneOre.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockRedstoneWire.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockReed.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRepeater.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRepeater.java
new file mode 100644
index 0000000..29a2428
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRepeater.java
@@ -0,0 +1,84 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockRepeater extends BlockDiodeAbstract {
+
+ public static final BlockStateBoolean LOCKED = BlockStateBoolean.of("locked");
+ public static final BlockStateInteger DELAY = BlockStateInteger.of("delay", 1, 4);
+
+ protected BlockRepeater(boolean flag) {
+ super(flag);
+ this.j(this.blockStateList.getBlockData().set(BlockRepeater.FACING, EnumDirection.NORTH).set(BlockRepeater.DELAY, Integer.valueOf(1)).set(BlockRepeater.LOCKED, Boolean.valueOf(false)));
+ }
+
+ public String getName() {
+ return LocaleI18n.get("item.diode.name");
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return iblockdata.set(BlockRepeater.LOCKED, Boolean.valueOf(this.b(iblockaccess, blockposition, iblockdata)));
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (!entityhuman.abilities.mayBuild) {
+ return false;
+ } else {
+ world.setTypeAndData(blockposition, iblockdata.a(BlockRepeater.DELAY), 3);
+ return true;
+ }
+ }
+
+ protected int d(IBlockData iblockdata) {
+ return ((Integer) iblockdata.get(BlockRepeater.DELAY)).intValue() * 2;
+ }
+
+ protected IBlockData e(IBlockData iblockdata) {
+ Integer integer = (Integer) iblockdata.get(BlockRepeater.DELAY);
+ Boolean obool = (Boolean) iblockdata.get(BlockRepeater.LOCKED);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRepeater.FACING);
+
+ return Blocks.POWERED_REPEATER.getBlockData().set(BlockRepeater.FACING, enumdirection).set(BlockRepeater.DELAY, integer).set(BlockRepeater.LOCKED, obool);
+ }
+
+ protected IBlockData k(IBlockData iblockdata) {
+ Integer integer = (Integer) iblockdata.get(BlockRepeater.DELAY);
+ Boolean obool = (Boolean) iblockdata.get(BlockRepeater.LOCKED);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockRepeater.FACING);
+
+ return Blocks.UNPOWERED_REPEATER.getBlockData().set(BlockRepeater.FACING, enumdirection).set(BlockRepeater.DELAY, integer).set(BlockRepeater.LOCKED, obool);
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.REPEATER;
+ }
+
+ public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) {
+ return this.c(iblockaccess, blockposition, iblockdata) > 0;
+ }
+
+ protected boolean c(Block block) {
+ return d(block);
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ super.remove(world, blockposition, iblockdata);
+ this.h(world, blockposition, iblockdata);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockRepeater.FACING, EnumDirection.fromType2(i)).set(BlockRepeater.LOCKED, Boolean.valueOf(false)).set(BlockRepeater.DELAY, Integer.valueOf(1 + (i >> 2)));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((EnumDirection) iblockdata.get(BlockRepeater.FACING)).b();
+
+ i |= ((Integer) iblockdata.get(BlockRepeater.DELAY)).intValue() - 1 << 2;
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockRepeater.FACING, BlockRepeater.DELAY, BlockRepeater.LOCKED});
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockRotatable.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRotatable.java
new file mode 100644
index 0000000..186eb0a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockRotatable.java
@@ -0,0 +1,14 @@
+package net.minecraft.server;
+
+public abstract class BlockRotatable extends Block {
+
+ public static final BlockStateEnum AXIS = BlockStateEnum.of("axis", EnumDirection.EnumAxis.class);
+
+ protected BlockRotatable(Material material) {
+ super(material, material.r());
+ }
+
+ protected BlockRotatable(Material material, MaterialMapColor materialmapcolor) {
+ super(material, materialmapcolor);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSand.java
new file mode 100644
index 0000000..567c3be
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSand.java
@@ -0,0 +1,88 @@
+package net.minecraft.server;
+
+public class BlockSand extends BlockFalling {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockSand.EnumSandVariant.class);
+
+ public BlockSand() {
+ this.j(this.blockStateList.getBlockData().set(BlockSand.VARIANT, BlockSand.EnumSandVariant.SAND));
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockSand.EnumSandVariant) iblockdata.get(BlockSand.VARIANT)).a();
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((BlockSand.EnumSandVariant) iblockdata.get(BlockSand.VARIANT)).c();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockSand.VARIANT, BlockSand.EnumSandVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockSand.EnumSandVariant) iblockdata.get(BlockSand.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockSand.VARIANT});
+ }
+
+ public static enum EnumSandVariant implements INamable {
+
+ SAND(0, "sand", "default", MaterialMapColor.d), RED_SAND(1, "red_sand", "red", MaterialMapColor.q);
+
+ private static final BlockSand.EnumSandVariant[] c = new BlockSand.EnumSandVariant[values().length];
+ private final int d;
+ private final String e;
+ private final MaterialMapColor f;
+ private final String g;
+
+ private EnumSandVariant(int i, String s, String s1, MaterialMapColor materialmapcolor) {
+ this.d = i;
+ this.e = s;
+ this.f = materialmapcolor;
+ this.g = s1;
+ }
+
+ public int a() {
+ return this.d;
+ }
+
+ public String toString() {
+ return this.e;
+ }
+
+ public MaterialMapColor c() {
+ return this.f;
+ }
+
+ public static BlockSand.EnumSandVariant a(int i) {
+ if (i < 0 || i >= BlockSand.EnumSandVariant.c.length) {
+ i = 0;
+ }
+
+ return BlockSand.EnumSandVariant.c[i];
+ }
+
+ public String getName() {
+ return this.e;
+ }
+
+ public String d() {
+ return this.g;
+ }
+
+ static {
+ BlockSand.EnumSandVariant[] ablocksand_enumsandvariant = values();
+ int i = ablocksand_enumsandvariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockSand.EnumSandVariant blocksand_enumsandvariant = ablocksand_enumsandvariant[j];
+
+ BlockSand.EnumSandVariant.c[blocksand_enumsandvariant.a()] = blocksand_enumsandvariant;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSandStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSandStone.java
new file mode 100644
index 0000000..c68ca87
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSandStone.java
@@ -0,0 +1,84 @@
+package net.minecraft.server;
+
+public class BlockSandStone extends Block {
+
+ public static final BlockStateEnum TYPE = BlockStateEnum.of("type", BlockSandStone.EnumSandstoneVariant.class);
+
+ public BlockSandStone() {
+ super(Material.STONE);
+ this.j(this.blockStateList.getBlockData().set(BlockSandStone.TYPE, BlockSandStone.EnumSandstoneVariant.DEFAULT));
+ this.a(CreativeModeTab.b);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockSandStone.EnumSandstoneVariant) iblockdata.get(BlockSandStone.TYPE)).a();
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.d;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockSandStone.TYPE, BlockSandStone.EnumSandstoneVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockSandStone.EnumSandstoneVariant) iblockdata.get(BlockSandStone.TYPE)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockSandStone.TYPE});
+ }
+
+ public static enum EnumSandstoneVariant implements INamable {
+
+ DEFAULT(0, "sandstone", "default"), CHISELED(1, "chiseled_sandstone", "chiseled"), SMOOTH(2, "smooth_sandstone", "smooth");
+
+ private static final BlockSandStone.EnumSandstoneVariant[] d = new BlockSandStone.EnumSandstoneVariant[values().length];
+ private final int e;
+ private final String f;
+ private final String g;
+
+ private EnumSandstoneVariant(int i, String s, String s1) {
+ this.e = i;
+ this.f = s;
+ this.g = s1;
+ }
+
+ public int a() {
+ return this.e;
+ }
+
+ public String toString() {
+ return this.f;
+ }
+
+ public static BlockSandStone.EnumSandstoneVariant a(int i) {
+ if (i < 0 || i >= BlockSandStone.EnumSandstoneVariant.d.length) {
+ i = 0;
+ }
+
+ return BlockSandStone.EnumSandstoneVariant.d[i];
+ }
+
+ public String getName() {
+ return this.f;
+ }
+
+ public String c() {
+ return this.g;
+ }
+
+ static {
+ BlockSandStone.EnumSandstoneVariant[] ablocksandstone_enumsandstonevariant = values();
+ int i = ablocksandstone_enumsandstonevariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockSandStone.EnumSandstoneVariant blocksandstone_enumsandstonevariant = ablocksandstone_enumsandstonevariant[j];
+
+ BlockSandStone.EnumSandstoneVariant.d[blocksandstone_enumsandstonevariant.a()] = blocksandstone_enumsandstonevariant;
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSapling.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSeaLantern.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSeaLantern.java
new file mode 100644
index 0000000..9e7b525
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSeaLantern.java
@@ -0,0 +1,31 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockSeaLantern extends Block {
+
+ public BlockSeaLantern(Material material) {
+ super(material);
+ this.a(CreativeModeTab.b);
+ }
+
+ public int a(Random random) {
+ return 2 + random.nextInt(2);
+ }
+
+ public int getDropCount(int i, Random random) {
+ return MathHelper.clamp(this.a(random) + random.nextInt(i + 1), 1, 5);
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.PRISMARINE_CRYSTALS;
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return MaterialMapColor.p;
+ }
+
+ protected boolean I() {
+ return true;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSign.java
new file mode 100644
index 0000000..61cad56
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSign.java
@@ -0,0 +1,56 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockSign extends BlockContainer {
+
+ protected BlockSign() {
+ super(Material.WOOD);
+ float f = 0.25F;
+ float f1 = 1.0F;
+
+ this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f);
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return null;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public boolean b(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return true;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean g() {
+ return true;
+ }
+
+ public TileEntity a(World world, int i) {
+ return new TileEntitySign();
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.SIGN;
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (world.isClientSide) {
+ return true;
+ } else {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ return tileentity instanceof TileEntitySign ? ((TileEntitySign) tileentity).b(entityhuman) : false;
+ }
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return !this.e(world, blockposition) && super.canPlace(world, blockposition);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSkull.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlime.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlime.java
new file mode 100644
index 0000000..331bafa
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlime.java
@@ -0,0 +1,39 @@
+package net.minecraft.server;
+
+public class BlockSlime extends BlockHalfTransparent {
+
+ public BlockSlime() {
+ super(Material.CLAY, false, MaterialMapColor.c);
+ this.a(CreativeModeTab.c);
+ this.frictionFactor = 0.8F;
+ }
+
+ public void fallOn(World world, BlockPosition blockposition, Entity entity, float f) {
+ if (entity.isSneaking()) {
+ super.fallOn(world, blockposition, entity, f);
+ } else {
+ entity.e(f, 0.0F);
+ }
+
+ }
+
+ public void a(World world, Entity entity) {
+ if (entity.isSneaking()) {
+ super.a(world, entity);
+ } else if (entity.motY < 0.0D) {
+ entity.motY = -entity.motY;
+ }
+
+ }
+
+ public void a(World world, BlockPosition blockposition, Entity entity) {
+ if (Math.abs(entity.motY) < 0.1D && !entity.isSneaking()) {
+ double d0 = 0.4D + Math.abs(entity.motY) * 0.2D;
+
+ entity.motX *= d0;
+ entity.motZ *= d0;
+ }
+
+ super.a(world, blockposition, entity);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlowSand.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlowSand.java
new file mode 100644
index 0000000..8186574
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSlowSand.java
@@ -0,0 +1,20 @@
+package net.minecraft.server;
+
+public class BlockSlowSand extends Block {
+
+ public BlockSlowSand() {
+ super(Material.SAND, MaterialMapColor.B);
+ this.a(CreativeModeTab.b);
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ float f = 0.125F;
+
+ return new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) ((float) (blockposition.getY() + 1) - f), (double) (blockposition.getZ() + 1));
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, Entity entity) {
+ entity.motX *= 0.4D;
+ entity.motZ *= 0.4D;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSmoothBrick.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSmoothBrick.java
new file mode 100644
index 0000000..01fdd9d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSmoothBrick.java
@@ -0,0 +1,84 @@
+package net.minecraft.server;
+
+public class BlockSmoothBrick extends Block {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockSmoothBrick.EnumStonebrickType.class);
+ public static final int b = BlockSmoothBrick.EnumStonebrickType.DEFAULT.a();
+ public static final int N = BlockSmoothBrick.EnumStonebrickType.MOSSY.a();
+ public static final int O = BlockSmoothBrick.EnumStonebrickType.CRACKED.a();
+ public static final int P = BlockSmoothBrick.EnumStonebrickType.CHISELED.a();
+
+ public BlockSmoothBrick() {
+ super(Material.STONE);
+ this.j(this.blockStateList.getBlockData().set(BlockSmoothBrick.VARIANT, BlockSmoothBrick.EnumStonebrickType.DEFAULT));
+ this.a(CreativeModeTab.b);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockSmoothBrick.EnumStonebrickType) iblockdata.get(BlockSmoothBrick.VARIANT)).a();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockSmoothBrick.VARIANT, BlockSmoothBrick.EnumStonebrickType.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockSmoothBrick.EnumStonebrickType) iblockdata.get(BlockSmoothBrick.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockSmoothBrick.VARIANT});
+ }
+
+ public static enum EnumStonebrickType implements INamable {
+
+ DEFAULT(0, "stonebrick", "default"), MOSSY(1, "mossy_stonebrick", "mossy"), CRACKED(2, "cracked_stonebrick", "cracked"), CHISELED(3, "chiseled_stonebrick", "chiseled");
+
+ private static final BlockSmoothBrick.EnumStonebrickType[] e = new BlockSmoothBrick.EnumStonebrickType[values().length];
+ private final int f;
+ private final String g;
+ private final String h;
+
+ private EnumStonebrickType(int i, String s, String s1) {
+ this.f = i;
+ this.g = s;
+ this.h = s1;
+ }
+
+ public int a() {
+ return this.f;
+ }
+
+ public String toString() {
+ return this.g;
+ }
+
+ public static BlockSmoothBrick.EnumStonebrickType a(int i) {
+ if (i < 0 || i >= BlockSmoothBrick.EnumStonebrickType.e.length) {
+ i = 0;
+ }
+
+ return BlockSmoothBrick.EnumStonebrickType.e[i];
+ }
+
+ public String getName() {
+ return this.g;
+ }
+
+ public String c() {
+ return this.h;
+ }
+
+ static {
+ BlockSmoothBrick.EnumStonebrickType[] ablocksmoothbrick_enumstonebricktype = values();
+ int i = ablocksmoothbrick_enumstonebricktype.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockSmoothBrick.EnumStonebrickType blocksmoothbrick_enumstonebricktype = ablocksmoothbrick_enumstonebricktype[j];
+
+ BlockSmoothBrick.EnumStonebrickType.e[blocksmoothbrick_enumstonebricktype.a()] = blocksmoothbrick_enumstonebricktype;
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSnow.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSnowBlock.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockSoil.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockSponge.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSponge.java
new file mode 100644
index 0000000..de7714e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockSponge.java
@@ -0,0 +1,100 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public class BlockSponge extends Block {
+
+ public static final BlockStateBoolean WET = BlockStateBoolean.of("wet");
+
+ protected BlockSponge() {
+ super(Material.SPONGE);
+ this.j(this.blockStateList.getBlockData().set(BlockSponge.WET, Boolean.valueOf(false)));
+ this.a(CreativeModeTab.b);
+ }
+
+ public String getName() {
+ return LocaleI18n.get(this.a() + ".dry.name");
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((Boolean) iblockdata.get(BlockSponge.WET)).booleanValue() ? 1 : 0;
+ }
+
+ public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.e(world, blockposition, iblockdata);
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ this.e(world, blockposition, iblockdata);
+ super.doPhysics(world, blockposition, iblockdata, block);
+ }
+
+ protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!((Boolean) iblockdata.get(BlockSponge.WET)).booleanValue() && this.e(world, blockposition)) {
+ world.setTypeAndData(blockposition, iblockdata.set(BlockSponge.WET, Boolean.valueOf(true)), 2);
+ world.triggerEffect(2001, blockposition, Block.getId(Blocks.WATER));
+ }
+
+ }
+
+ private boolean e(World world, BlockPosition blockposition) {
+ LinkedList linkedlist = Lists.newLinkedList();
+ ArrayList arraylist = Lists.newArrayList();
+
+ linkedlist.add(new Tuple(blockposition, Integer.valueOf(0)));
+ int i = 0;
+
+ BlockPosition blockposition1;
+
+ while (!linkedlist.isEmpty()) {
+ Tuple tuple = (Tuple) linkedlist.poll();
+
+ blockposition1 = (BlockPosition) tuple.a();
+ int j = ((Integer) tuple.b()).intValue();
+ EnumDirection[] aenumdirection = EnumDirection.values();
+ int k = aenumdirection.length;
+
+ for (int l = 0; l < k; ++l) {
+ EnumDirection enumdirection = aenumdirection[l];
+ BlockPosition blockposition2 = blockposition1.shift(enumdirection);
+
+ if (world.getType(blockposition2).getBlock().getMaterial() == Material.WATER) {
+ world.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 2);
+ arraylist.add(blockposition2);
+ ++i;
+ if (j < 6) {
+ linkedlist.add(new Tuple(blockposition2, Integer.valueOf(j + 1)));
+ }
+ }
+ }
+
+ if (i > 64) {
+ break;
+ }
+ }
+
+ Iterator iterator = arraylist.iterator();
+
+ while (iterator.hasNext()) {
+ blockposition1 = (BlockPosition) iterator.next();
+ world.applyPhysics(blockposition1, Blocks.AIR);
+ }
+
+ return i > 0;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockSponge.WET, Boolean.valueOf((i & 1) == 1));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((Boolean) iblockdata.get(BlockSponge.WET)).booleanValue() ? 1 : 0;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockSponge.WET});
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlass.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlass.java
new file mode 100644
index 0000000..c60ff35
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlass.java
@@ -0,0 +1,60 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockStainedGlass extends BlockHalfTransparent {
+
+ public static final BlockStateEnum COLOR = BlockStateEnum.of("color", EnumColor.class);
+
+ public BlockStainedGlass(Material material) {
+ super(material, false);
+ this.j(this.blockStateList.getBlockData().set(BlockStainedGlass.COLOR, EnumColor.WHITE));
+ this.a(CreativeModeTab.b);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockStainedGlass.COLOR)).getColorIndex();
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockStainedGlass.COLOR)).e();
+ }
+
+ public int a(Random random) {
+ return 0;
+ }
+
+ protected boolean I() {
+ return true;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockStainedGlass.COLOR, EnumColor.fromColorIndex(i));
+ }
+
+ public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!world.isClientSide) {
+ BlockBeacon.f(world, blockposition);
+ }
+
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!world.isClientSide) {
+ BlockBeacon.f(world, blockposition);
+ }
+
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockStainedGlass.COLOR)).getColorIndex();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockStainedGlass.COLOR});
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlassPane.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlassPane.java
new file mode 100644
index 0000000..1d64e6e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStainedGlassPane.java
@@ -0,0 +1,46 @@
+package net.minecraft.server;
+
+public class BlockStainedGlassPane extends BlockThin {
+
+ public static final BlockStateEnum COLOR = BlockStateEnum.of("color", EnumColor.class);
+
+ public BlockStainedGlassPane() {
+ super(Material.SHATTERABLE, false);
+ this.j(this.blockStateList.getBlockData().set(BlockStainedGlassPane.NORTH, Boolean.valueOf(false)).set(BlockStainedGlassPane.EAST, Boolean.valueOf(false)).set(BlockStainedGlassPane.SOUTH, Boolean.valueOf(false)).set(BlockStainedGlassPane.WEST, Boolean.valueOf(false)).set(BlockStainedGlassPane.COLOR, EnumColor.WHITE));
+ this.a(CreativeModeTab.c);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockStainedGlassPane.COLOR)).getColorIndex();
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockStainedGlassPane.COLOR)).e();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockStainedGlassPane.COLOR, EnumColor.fromColorIndex(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumColor) iblockdata.get(BlockStainedGlassPane.COLOR)).getColorIndex();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockStainedGlassPane.NORTH, BlockStainedGlassPane.EAST, BlockStainedGlassPane.WEST, BlockStainedGlassPane.SOUTH, BlockStainedGlassPane.COLOR});
+ }
+
+ public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!world.isClientSide) {
+ BlockBeacon.f(world, blockposition);
+ }
+
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!world.isClientSide) {
+ BlockBeacon.f(world, blockposition);
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStairs.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStairs.java
new file mode 100644
index 0000000..09ac41b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStairs.java
@@ -0,0 +1,595 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+public class BlockStairs extends Block {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+ public static final BlockStateEnum HALF = BlockStateEnum.of("half", BlockStairs.EnumHalf.class);
+ public static final BlockStateEnum SHAPE = BlockStateEnum.of("shape", BlockStairs.EnumStairShape.class);
+ private static final int[][] O = new int[][] { { 4, 5}, { 5, 7}, { 6, 7}, { 4, 6}, { 0, 1}, { 1, 3}, { 2, 3}, { 0, 2}};
+ private final Block P;
+ private final IBlockData Q;
+ private boolean R;
+ private int S;
+
+ protected BlockStairs(IBlockData iblockdata) {
+ super(iblockdata.getBlock().material);
+ this.j(this.blockStateList.getBlockData().set(BlockStairs.FACING, EnumDirection.NORTH).set(BlockStairs.HALF, BlockStairs.EnumHalf.BOTTOM).set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT));
+ this.P = iblockdata.getBlock();
+ this.Q = iblockdata;
+ this.c(this.P.strength);
+ this.b(this.P.durability / 3.0F);
+ this.a(this.P.stepSound);
+ this.e(255);
+ this.a(CreativeModeTab.b);
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ if (this.R) {
+ this.a(0.5F * (float) (this.S % 2), 0.5F * (float) (this.S / 4 % 2), 0.5F * (float) (this.S / 2 % 2), 0.5F + 0.5F * (float) (this.S % 2), 0.5F + 0.5F * (float) (this.S / 4 % 2), 0.5F + 0.5F * (float) (this.S / 2 % 2));
+ } else {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public void e(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ if (iblockaccess.getType(blockposition).get(BlockStairs.HALF) == BlockStairs.EnumHalf.TOP) {
+ this.a(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F);
+ } else {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
+ }
+
+ }
+
+ public static boolean c(Block block) {
+ return block instanceof BlockStairs;
+ }
+
+ public static boolean a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) {
+ IBlockData iblockdata1 = iblockaccess.getType(blockposition);
+ Block block = iblockdata1.getBlock();
+
+ return c(block) && iblockdata1.get(BlockStairs.HALF) == iblockdata.get(BlockStairs.HALF) && iblockdata1.get(BlockStairs.FACING) == iblockdata.get(BlockStairs.FACING);
+ }
+
+ public int f(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ IBlockData iblockdata = iblockaccess.getType(blockposition);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING);
+ BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF);
+ boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP;
+ IBlockData iblockdata1;
+ Block block;
+ EnumDirection enumdirection1;
+
+ if (enumdirection == EnumDirection.EAST) {
+ iblockdata1 = iblockaccess.getType(blockposition.east());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+
+ if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+ }
+ } else if (enumdirection == EnumDirection.WEST) {
+ iblockdata1 = iblockaccess.getType(blockposition.west());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+
+ if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+ }
+ } else if (enumdirection == EnumDirection.SOUTH) {
+ iblockdata1 = iblockaccess.getType(blockposition.south());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+
+ if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+ }
+ } else if (enumdirection == EnumDirection.NORTH) {
+ iblockdata1 = iblockaccess.getType(blockposition.north());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+
+ if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+ }
+ }
+
+ return 0;
+ }
+
+ public int g(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ IBlockData iblockdata = iblockaccess.getType(blockposition);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING);
+ BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF);
+ boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP;
+ IBlockData iblockdata1;
+ Block block;
+ EnumDirection enumdirection1;
+
+ if (enumdirection == EnumDirection.EAST) {
+ iblockdata1 = iblockaccess.getType(blockposition.west());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+
+ if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+ }
+ } else if (enumdirection == EnumDirection.WEST) {
+ iblockdata1 = iblockaccess.getType(blockposition.east());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+
+ if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+ }
+ } else if (enumdirection == EnumDirection.SOUTH) {
+ iblockdata1 = iblockaccess.getType(blockposition.north());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+
+ if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+ }
+ } else if (enumdirection == EnumDirection.NORTH) {
+ iblockdata1 = iblockaccess.getType(blockposition.south());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ return flag ? 1 : 2;
+ }
+
+ if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ return flag ? 2 : 1;
+ }
+ }
+ }
+
+ return 0;
+ }
+
+ public boolean h(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ IBlockData iblockdata = iblockaccess.getType(blockposition);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING);
+ BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF);
+ boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP;
+ float f = 0.5F;
+ float f1 = 1.0F;
+
+ if (flag) {
+ f = 0.0F;
+ f1 = 0.5F;
+ }
+
+ float f2 = 0.0F;
+ float f3 = 1.0F;
+ float f4 = 0.0F;
+ float f5 = 0.5F;
+ boolean flag1 = true;
+ IBlockData iblockdata1;
+ Block block;
+ EnumDirection enumdirection1;
+
+ if (enumdirection == EnumDirection.EAST) {
+ f2 = 0.5F;
+ f5 = 1.0F;
+ iblockdata1 = iblockaccess.getType(blockposition.east());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ f5 = 0.5F;
+ flag1 = false;
+ } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ f4 = 0.5F;
+ flag1 = false;
+ }
+ }
+ } else if (enumdirection == EnumDirection.WEST) {
+ f3 = 0.5F;
+ f5 = 1.0F;
+ iblockdata1 = iblockaccess.getType(blockposition.west());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ f5 = 0.5F;
+ flag1 = false;
+ } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ f4 = 0.5F;
+ flag1 = false;
+ }
+ }
+ } else if (enumdirection == EnumDirection.SOUTH) {
+ f4 = 0.5F;
+ f5 = 1.0F;
+ iblockdata1 = iblockaccess.getType(blockposition.south());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ f3 = 0.5F;
+ flag1 = false;
+ } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ f2 = 0.5F;
+ flag1 = false;
+ }
+ }
+ } else if (enumdirection == EnumDirection.NORTH) {
+ iblockdata1 = iblockaccess.getType(blockposition.north());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ f3 = 0.5F;
+ flag1 = false;
+ } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ f2 = 0.5F;
+ flag1 = false;
+ }
+ }
+ }
+
+ this.a(f2, f, f4, f3, f1, f5);
+ return flag1;
+ }
+
+ public boolean i(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ IBlockData iblockdata = iblockaccess.getType(blockposition);
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockStairs.FACING);
+ BlockStairs.EnumHalf blockstairs_enumhalf = (BlockStairs.EnumHalf) iblockdata.get(BlockStairs.HALF);
+ boolean flag = blockstairs_enumhalf == BlockStairs.EnumHalf.TOP;
+ float f = 0.5F;
+ float f1 = 1.0F;
+
+ if (flag) {
+ f = 0.0F;
+ f1 = 0.5F;
+ }
+
+ float f2 = 0.0F;
+ float f3 = 0.5F;
+ float f4 = 0.5F;
+ float f5 = 1.0F;
+ boolean flag1 = false;
+ IBlockData iblockdata1;
+ Block block;
+ EnumDirection enumdirection1;
+
+ if (enumdirection == EnumDirection.EAST) {
+ iblockdata1 = iblockaccess.getType(blockposition.west());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ f4 = 0.0F;
+ f5 = 0.5F;
+ flag1 = true;
+ } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ f4 = 0.5F;
+ f5 = 1.0F;
+ flag1 = true;
+ }
+ }
+ } else if (enumdirection == EnumDirection.WEST) {
+ iblockdata1 = iblockaccess.getType(blockposition.east());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ f2 = 0.5F;
+ f3 = 1.0F;
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.NORTH && !a(iblockaccess, blockposition.north(), iblockdata)) {
+ f4 = 0.0F;
+ f5 = 0.5F;
+ flag1 = true;
+ } else if (enumdirection1 == EnumDirection.SOUTH && !a(iblockaccess, blockposition.south(), iblockdata)) {
+ f4 = 0.5F;
+ f5 = 1.0F;
+ flag1 = true;
+ }
+ }
+ } else if (enumdirection == EnumDirection.SOUTH) {
+ iblockdata1 = iblockaccess.getType(blockposition.north());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ f4 = 0.0F;
+ f5 = 0.5F;
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ flag1 = true;
+ } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ f2 = 0.5F;
+ f3 = 1.0F;
+ flag1 = true;
+ }
+ }
+ } else if (enumdirection == EnumDirection.NORTH) {
+ iblockdata1 = iblockaccess.getType(blockposition.south());
+ block = iblockdata1.getBlock();
+ if (c(block) && blockstairs_enumhalf == iblockdata1.get(BlockStairs.HALF)) {
+ enumdirection1 = (EnumDirection) iblockdata1.get(BlockStairs.FACING);
+ if (enumdirection1 == EnumDirection.WEST && !a(iblockaccess, blockposition.west(), iblockdata)) {
+ flag1 = true;
+ } else if (enumdirection1 == EnumDirection.EAST && !a(iblockaccess, blockposition.east(), iblockdata)) {
+ f2 = 0.5F;
+ f3 = 1.0F;
+ flag1 = true;
+ }
+ }
+ }
+
+ if (flag1) {
+ this.a(f2, f, f4, f3, f1, f5);
+ }
+
+ return flag1;
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ this.e(world, blockposition);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ boolean flag = this.h(world, blockposition);
+
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ if (flag && this.i(world, blockposition)) {
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ public void attack(World world, BlockPosition blockposition, EntityHuman entityhuman) {
+ this.P.attack(world, blockposition, entityhuman);
+ }
+
+ public void postBreak(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.P.postBreak(world, blockposition, iblockdata);
+ }
+
+ public float a(Entity entity) {
+ return this.P.a(entity);
+ }
+
+ public int a(World world) {
+ return this.P.a(world);
+ }
+
+ public Vec3D a(World world, BlockPosition blockposition, Entity entity, Vec3D vec3d) {
+ return this.P.a(world, blockposition, entity, vec3d);
+ }
+
+ public boolean A() {
+ return this.P.A();
+ }
+
+ public boolean a(IBlockData iblockdata, boolean flag) {
+ return this.P.a(iblockdata, flag);
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return this.P.canPlace(world, blockposition);
+ }
+
+ public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.doPhysics(world, blockposition, this.Q, Blocks.AIR);
+ this.P.onPlace(world, blockposition, this.Q);
+ }
+
+ public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.P.remove(world, blockposition, this.Q);
+ }
+
+ public void a(World world, BlockPosition blockposition, Entity entity) {
+ this.P.a(world, blockposition, entity);
+ }
+
+ public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) {
+ this.P.b(world, blockposition, iblockdata, random);
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ return this.P.interact(world, blockposition, this.Q, entityhuman, EnumDirection.DOWN, 0.0F, 0.0F, 0.0F);
+ }
+
+ public void wasExploded(World world, BlockPosition blockposition, Explosion explosion) {
+ this.P.wasExploded(world, blockposition, explosion);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return this.P.g(this.Q);
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ IBlockData iblockdata = super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving);
+
+ iblockdata = iblockdata.set(BlockStairs.FACING, entityliving.getDirection()).set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT);
+ return enumdirection != EnumDirection.DOWN && (enumdirection == EnumDirection.UP || (double) f1 <= 0.5D) ? iblockdata.set(BlockStairs.HALF, BlockStairs.EnumHalf.BOTTOM) : iblockdata.set(BlockStairs.HALF, BlockStairs.EnumHalf.TOP);
+ }
+
+ public MovingObjectPosition a(World world, BlockPosition blockposition, Vec3D vec3d, Vec3D vec3d1) {
+ MovingObjectPosition[] amovingobjectposition = new MovingObjectPosition[8];
+ IBlockData iblockdata = world.getType(blockposition);
+ int i = ((EnumDirection) iblockdata.get(BlockStairs.FACING)).b();
+ boolean flag = iblockdata.get(BlockStairs.HALF) == BlockStairs.EnumHalf.TOP;
+ int[] aint = BlockStairs.O[i + (flag ? 4 : 0)];
+
+ this.R = true;
+
+ for (int j = 0; j < 8; ++j) {
+ this.S = j;
+ if (Arrays.binarySearch(aint, j) < 0) {
+ amovingobjectposition[j] = super.a(world, blockposition, vec3d, vec3d1);
+ }
+ }
+
+ int[] aint1 = aint;
+ int k = aint.length;
+
+ for (int l = 0; l < k; ++l) {
+ int i1 = aint1[l];
+
+ amovingobjectposition[i1] = null;
+ }
+
+ MovingObjectPosition movingobjectposition = null;
+ double d0 = 0.0D;
+ MovingObjectPosition[] amovingobjectposition1 = amovingobjectposition;
+ int j1 = amovingobjectposition.length;
+
+ for (int k1 = 0; k1 < j1; ++k1) {
+ MovingObjectPosition movingobjectposition1 = amovingobjectposition1[k1];
+
+ if (movingobjectposition1 != null) {
+ double d1 = movingobjectposition1.pos.distanceSquared(vec3d1);
+
+ if (d1 > d0) {
+ movingobjectposition = movingobjectposition1;
+ d0 = d1;
+ }
+ }
+ }
+
+ return movingobjectposition;
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ IBlockData iblockdata = this.getBlockData().set(BlockStairs.HALF, (i & 4) > 0 ? BlockStairs.EnumHalf.TOP : BlockStairs.EnumHalf.BOTTOM);
+
+ iblockdata = iblockdata.set(BlockStairs.FACING, EnumDirection.fromType1(5 - (i & 3)));
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ int i = 0;
+
+ if (iblockdata.get(BlockStairs.HALF) == BlockStairs.EnumHalf.TOP) {
+ i |= 4;
+ }
+
+ i |= 5 - ((EnumDirection) iblockdata.get(BlockStairs.FACING)).a();
+ return i;
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ if (this.h(iblockaccess, blockposition)) {
+ switch (this.g(iblockaccess, blockposition)) {
+ case 0:
+ iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT);
+ break;
+
+ case 1:
+ iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.INNER_RIGHT);
+ break;
+
+ case 2:
+ iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.INNER_LEFT);
+ }
+ } else {
+ switch (this.f(iblockaccess, blockposition)) {
+ case 0:
+ iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.STRAIGHT);
+ break;
+
+ case 1:
+ iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.OUTER_RIGHT);
+ break;
+
+ case 2:
+ iblockdata = iblockdata.set(BlockStairs.SHAPE, BlockStairs.EnumStairShape.OUTER_LEFT);
+ }
+ }
+
+ return iblockdata;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockStairs.FACING, BlockStairs.HALF, BlockStairs.SHAPE});
+ }
+
+ public static enum EnumStairShape implements INamable {
+
+ STRAIGHT("straight"), INNER_LEFT("inner_left"), INNER_RIGHT("inner_right"), OUTER_LEFT("outer_left"), OUTER_RIGHT("outer_right");
+
+ private final String f;
+
+ private EnumStairShape(String s) {
+ this.f = s;
+ }
+
+ public String toString() {
+ return this.f;
+ }
+
+ public String getName() {
+ return this.f;
+ }
+ }
+
+ public static enum EnumHalf implements INamable {
+
+ TOP("top"), BOTTOM("bottom");
+
+ private final String c;
+
+ private EnumHalf(String s) {
+ this.c = s;
+ }
+
+ public String toString() {
+ return this.c;
+ }
+
+ public String getName() {
+ return this.c;
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockState.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockState.java
similarity index 88%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockState.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockState.java
index 049019d..634ce1e 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockState.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockState.java
@@ -1,6 +1,6 @@
package net.minecraft.server;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
// TacoSpigot start
@@ -41,7 +41,7 @@ public abstract class BlockState> implements IBlockState
}
public String toString() {
- return Objects.toStringHelper(this).add("name", this.b).add("clazz", this.a).add("values", this.c()).toString();
+ return MoreObjects.toStringHelper(this).add("name", this.b).add("clazz", this.a).add("values", this.c()).toString();
}
public boolean equals(Object object) {
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateBoolean.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateDirection.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateDirection.java
new file mode 100644
index 0000000..46339a2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateDirection.java
@@ -0,0 +1,26 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
+import java.util.Collection;
+
+public class BlockStateDirection extends BlockStateEnum {
+
+ protected BlockStateDirection(String s, Collection collection) {
+ super(s, EnumDirection.class, collection);
+ }
+
+ public static BlockStateDirection of(String s) {
+ return of(s, Predicates.alwaysTrue());
+ }
+
+ public static BlockStateDirection of(String s, Predicate predicate) {
+ return a(s, Collections2.filter(Lists.newArrayList(EnumDirection.values()), predicate));
+ }
+
+ public static BlockStateDirection a(String s, Collection collection) {
+ return new BlockStateDirection(s, collection);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateEnum.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateInteger.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java
similarity index 97%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java
index aae2034..031d41b 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStateList.java
@@ -2,7 +2,7 @@ package net.minecraft.server;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -110,7 +110,7 @@ public class BlockStateList {
}
public String toString() {
- return Objects.toStringHelper(this).add("block", Block.REGISTRY.c(this.c)).add("properties", Iterables.transform(this.d, BlockStateList.b)).toString();
+ return MoreObjects.toStringHelper(this).add("block", Block.REGISTRY.c(this.c)).add("properties", Iterables.transform(this.d, BlockStateList.b)).toString();
}
static class BlockData extends BlockDataAbstract {
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStatePredicate.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStatePredicate.java
new file mode 100644
index 0000000..4c97a4c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStatePredicate.java
@@ -0,0 +1,56 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Maps;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public class BlockStatePredicate implements Predicate {
+
+ private final BlockStateList a;
+ private final Map b = Maps.newHashMap();
+
+ private BlockStatePredicate(BlockStateList blockstatelist) {
+ this.a = blockstatelist;
+ }
+
+ public static BlockStatePredicate a(Block block) {
+ return new BlockStatePredicate(block.P());
+ }
+
+ public boolean a(IBlockData iblockdata) {
+ if (iblockdata != null && iblockdata.getBlock().equals(this.a.getBlock())) {
+ Iterator iterator = this.b.entrySet().iterator();
+
+ Entry entry;
+ Comparable comparable;
+
+ do {
+ if (!iterator.hasNext()) {
+ return true;
+ }
+
+ entry = (Entry) iterator.next();
+ comparable = iblockdata.get((IBlockState) entry.getKey());
+ } while (((Predicate) entry.getValue()).apply(comparable));
+
+ return false;
+ } else {
+ return false;
+ }
+ }
+
+ public > BlockStatePredicate a(IBlockState iblockstate, Predicate extends V> predicate) {
+ if (!this.a.d().contains(iblockstate)) {
+ throw new IllegalArgumentException(this.a + " cannot support property " + iblockstate);
+ } else {
+ this.b.put(iblockstate, predicate);
+ return this;
+ }
+ }
+
+ public boolean apply(IBlockData object) {
+ return this.a(object);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStationary.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockStem.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStep.java
new file mode 100644
index 0000000..e69bbe0
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStep.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockStep extends BlockDoubleStepAbstract {
+
+ public BlockStep() {}
+
+ public boolean l() {
+ return false;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStepAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStepAbstract.java
new file mode 100644
index 0000000..668f932
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStepAbstract.java
@@ -0,0 +1,104 @@
+package net.minecraft.server;
+
+import java.util.List;
+import java.util.Random;
+
+public abstract class BlockStepAbstract extends Block {
+
+ public static final BlockStateEnum HALF = BlockStateEnum.of("half", BlockStepAbstract.EnumSlabHalf.class);
+
+ public BlockStepAbstract(Material material) {
+ super(material);
+ if (this.l()) {
+ this.r = true;
+ } else {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
+ }
+
+ this.e(255);
+ }
+
+ protected boolean I() {
+ return false;
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ if (this.l()) {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ } else {
+ IBlockData iblockdata = iblockaccess.getType(blockposition);
+
+ if (iblockdata.getBlock() == this) {
+ if (iblockdata.get(BlockStepAbstract.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) {
+ this.a(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F);
+ } else {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
+ }
+ }
+
+ }
+ }
+
+ public void j() {
+ if (this.l()) {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ } else {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
+ }
+
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ this.updateShape(world, blockposition);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ public boolean c() {
+ return this.l();
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ IBlockData iblockdata = super.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityliving).set(BlockStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM);
+
+ return this.l() ? iblockdata : (enumdirection != EnumDirection.DOWN && (enumdirection == EnumDirection.UP || (double) f1 <= 0.5D) ? iblockdata : iblockdata.set(BlockStepAbstract.HALF, BlockStepAbstract.EnumSlabHalf.TOP));
+ }
+
+ public int a(Random random) {
+ return this.l() ? 2 : 1;
+ }
+
+ public boolean d() {
+ return this.l();
+ }
+
+ public abstract String b(int i);
+
+ public int getDropData(World world, BlockPosition blockposition) {
+ return super.getDropData(world, blockposition) & 7;
+ }
+
+ public abstract boolean l();
+
+ public abstract IBlockState> n();
+
+ public abstract Object a(ItemStack itemstack);
+
+ public static enum EnumSlabHalf implements INamable {
+
+ TOP("top"), BOTTOM("bottom");
+
+ private final String c;
+
+ private EnumSlabHalf(String s) {
+ this.c = s;
+ }
+
+ public String toString() {
+ return this.c;
+ }
+
+ public String getName() {
+ return this.c;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStone.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStone.java
new file mode 100644
index 0000000..596470f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStone.java
@@ -0,0 +1,104 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockStone extends Block {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockStone.EnumStoneVariant.class);
+
+ public BlockStone() {
+ super(Material.STONE);
+ this.j(this.blockStateList.getBlockData().set(BlockStone.VARIANT, BlockStone.EnumStoneVariant.STONE));
+ this.a(CreativeModeTab.b);
+ }
+
+ public String getName() {
+ return LocaleI18n.get(this.a() + "." + BlockStone.EnumStoneVariant.STONE.d() + ".name");
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((BlockStone.EnumStoneVariant) iblockdata.get(BlockStone.VARIANT)).c();
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return iblockdata.get(BlockStone.VARIANT) == BlockStone.EnumStoneVariant.STONE ? Item.getItemOf(Blocks.COBBLESTONE) : Item.getItemOf(Blocks.STONE);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockStone.EnumStoneVariant) iblockdata.get(BlockStone.VARIANT)).a();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockStone.VARIANT, BlockStone.EnumStoneVariant.a(i));
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockStone.EnumStoneVariant) iblockdata.get(BlockStone.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockStone.VARIANT});
+ }
+
+ public static enum EnumStoneVariant implements INamable {
+
+ STONE(0, MaterialMapColor.m, "stone"), GRANITE(1, MaterialMapColor.l, "granite"), GRANITE_SMOOTH(2, MaterialMapColor.l, "smooth_granite", "graniteSmooth"), DIORITE(3, MaterialMapColor.p, "diorite"), DIORITE_SMOOTH(4, MaterialMapColor.p, "smooth_diorite", "dioriteSmooth"), ANDESITE(5, MaterialMapColor.m, "andesite"), ANDESITE_SMOOTH(6, MaterialMapColor.m, "smooth_andesite", "andesiteSmooth");
+
+ private static final BlockStone.EnumStoneVariant[] h = new BlockStone.EnumStoneVariant[values().length];
+ private final int i;
+ private final String j;
+ private final String k;
+ private final MaterialMapColor l;
+
+ private EnumStoneVariant(int i, MaterialMapColor materialmapcolor, String s) {
+ this(i, materialmapcolor, s, s);
+ }
+
+ private EnumStoneVariant(int i, MaterialMapColor materialmapcolor, String s, String s1) {
+ this.i = i;
+ this.j = s;
+ this.k = s1;
+ this.l = materialmapcolor;
+ }
+
+ public int a() {
+ return this.i;
+ }
+
+ public MaterialMapColor c() {
+ return this.l;
+ }
+
+ public String toString() {
+ return this.j;
+ }
+
+ public static BlockStone.EnumStoneVariant a(int i) {
+ if (i < 0 || i >= BlockStone.EnumStoneVariant.h.length) {
+ i = 0;
+ }
+
+ return BlockStone.EnumStoneVariant.h[i];
+ }
+
+ public String getName() {
+ return this.j;
+ }
+
+ public String d() {
+ return this.k;
+ }
+
+ static {
+ BlockStone.EnumStoneVariant[] ablockstone_enumstonevariant = values();
+ int i = ablockstone_enumstonevariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockStone.EnumStoneVariant blockstone_enumstonevariant = ablockstone_enumstonevariant[j];
+
+ BlockStone.EnumStoneVariant.h[blockstone_enumstonevariant.a()] = blockstone_enumstonevariant;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneButton.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneButton.java
new file mode 100644
index 0000000..d07bb7c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneButton.java
@@ -0,0 +1,8 @@
+package net.minecraft.server;
+
+public class BlockStoneButton extends BlockButtonAbstract {
+
+ protected BlockStoneButton() {
+ super(false);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneStep2.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneStep2.java
new file mode 100644
index 0000000..e1e4081
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockStoneStep2.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockStoneStep2 extends BlockDoubleStoneStepAbstract {
+
+ public BlockStoneStep2() {}
+
+ public boolean l() {
+ return false;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTNT.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockTallPlant.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTallPlant.java
new file mode 100644
index 0000000..3fd33e5
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTallPlant.java
@@ -0,0 +1,267 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockTallPlant extends BlockPlant implements IBlockFragilePlantElement {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockTallPlant.EnumTallFlowerVariants.class);
+ public static final BlockStateEnum HALF = BlockStateEnum.of("half", BlockTallPlant.EnumTallPlantHalf.class);
+ public static final BlockStateEnum N = BlockDirectional.FACING;
+
+ public BlockTallPlant() {
+ super(Material.REPLACEABLE_PLANT);
+ this.j(this.blockStateList.getBlockData().set(BlockTallPlant.VARIANT, BlockTallPlant.EnumTallFlowerVariants.SUNFLOWER).set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.LOWER).set(BlockTallPlant.N, EnumDirection.NORTH));
+ this.c(0.0F);
+ this.a(BlockTallPlant.h);
+ this.c("doublePlant");
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ public BlockTallPlant.EnumTallFlowerVariants e(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ IBlockData iblockdata = iblockaccess.getType(blockposition);
+
+ if (iblockdata.getBlock() == this) {
+ iblockdata = this.updateState(iblockdata, iblockaccess, blockposition);
+ return (BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT);
+ } else {
+ return BlockTallPlant.EnumTallFlowerVariants.FERN;
+ }
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ return super.canPlace(world, blockposition) && world.isEmpty(blockposition.up());
+ }
+
+ public boolean a(World world, BlockPosition blockposition) {
+ IBlockData iblockdata = world.getType(blockposition);
+
+ if (iblockdata.getBlock() != this) {
+ return true;
+ } else {
+ BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) this.updateState(iblockdata, world, blockposition).get(BlockTallPlant.VARIANT);
+
+ return blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.FERN || blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.GRASS;
+ }
+ }
+
+ protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!this.f(world, blockposition, iblockdata)) {
+ boolean flag = iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER;
+ BlockPosition blockposition1 = flag ? blockposition : blockposition.up();
+ BlockPosition blockposition2 = flag ? blockposition.down() : blockposition;
+ Object object = flag ? this : world.getType(blockposition1).getBlock();
+ Object object1 = flag ? world.getType(blockposition2).getBlock() : this;
+
+ if (object == this) {
+ world.setTypeAndData(blockposition1, Blocks.AIR.getBlockData(), 2);
+ }
+
+ if (object1 == this) {
+ world.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3);
+ if (!flag) {
+ this.b(world, blockposition2, iblockdata, 0);
+ }
+ }
+
+ }
+ }
+
+ public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) {
+ return world.getType(blockposition.down()).getBlock() == this;
+ } else {
+ IBlockData iblockdata1 = world.getType(blockposition.up());
+
+ return iblockdata1.getBlock() == this && super.f(world, blockposition, iblockdata1);
+ }
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) {
+ return null;
+ } else {
+ BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT);
+
+ return blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.FERN ? null : (blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.GRASS ? (random.nextInt(8) == 0 ? Items.WHEAT_SEEDS : null) : Item.getItemOf(this));
+ }
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return iblockdata.get(BlockTallPlant.HALF) != BlockTallPlant.EnumTallPlantHalf.UPPER && iblockdata.get(BlockTallPlant.VARIANT) != BlockTallPlant.EnumTallFlowerVariants.GRASS ? ((BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT)).a() : 0;
+ }
+
+ public void a(World world, BlockPosition blockposition, BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants, int i) {
+ world.setTypeAndData(blockposition, this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.LOWER).set(BlockTallPlant.VARIANT, blocktallplant_enumtallflowervariants), i);
+ world.setTypeAndData(blockposition.up(), this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.UPPER), i);
+ }
+
+ public void postPlace(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving, ItemStack itemstack) {
+ world.setTypeAndData(blockposition.up(), this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.UPPER), 2);
+ }
+
+ public void a(World world, EntityHuman entityhuman, BlockPosition blockposition, IBlockData iblockdata, TileEntity tileentity) {
+ if (world.isClientSide || entityhuman.bZ() == null || entityhuman.bZ().getItem() != Items.SHEARS || iblockdata.get(BlockTallPlant.HALF) != BlockTallPlant.EnumTallPlantHalf.LOWER || !this.b(world, blockposition, iblockdata, entityhuman)) {
+ super.a(world, entityhuman, blockposition, iblockdata, tileentity);
+ }
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) {
+ if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) {
+ if (world.getType(blockposition.down()).getBlock() == this) {
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ IBlockData iblockdata1 = world.getType(blockposition.down());
+ BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) iblockdata1.get(BlockTallPlant.VARIANT);
+
+ if (blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.FERN && blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.GRASS) {
+ world.setAir(blockposition.down(), true);
+ } else if (!world.isClientSide) {
+ if (entityhuman.bZ() != null && entityhuman.bZ().getItem() == Items.SHEARS) {
+ this.b(world, blockposition, iblockdata1, entityhuman);
+ world.setAir(blockposition.down());
+ } else {
+ world.setAir(blockposition.down(), true);
+ }
+ } else {
+ world.setAir(blockposition.down());
+ }
+ } else {
+ world.setAir(blockposition.down());
+ }
+ }
+ } else if (entityhuman.abilities.canInstantlyBuild && world.getType(blockposition.up()).getBlock() == this) {
+ world.setTypeAndData(blockposition.up(), Blocks.AIR.getBlockData(), 2);
+ }
+
+ super.a(world, blockposition, iblockdata, entityhuman);
+ }
+
+ private boolean b(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) {
+ BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = (BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT);
+
+ if (blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.FERN && blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.GRASS) {
+ return false;
+ } else {
+ entityhuman.b(StatisticList.MINE_BLOCK_COUNT[Block.getId(this)]);
+ int i = (blocktallplant_enumtallflowervariants == BlockTallPlant.EnumTallFlowerVariants.GRASS ? BlockLongGrass.EnumTallGrassType.GRASS : BlockLongGrass.EnumTallGrassType.FERN).a();
+
+ a(world, blockposition, new ItemStack(Blocks.TALLGRASS, 2, i));
+ return true;
+ }
+ }
+
+ public int getDropData(World world, BlockPosition blockposition) {
+ return this.e(world, blockposition).a();
+ }
+
+ public boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, boolean flag) {
+ BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = this.e(world, blockposition);
+
+ return blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.GRASS && blocktallplant_enumtallflowervariants != BlockTallPlant.EnumTallFlowerVariants.FERN;
+ }
+
+ public boolean a(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
+ return true;
+ }
+
+ public void b(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
+ a(world, blockposition, new ItemStack(this, 1, this.e(world, blockposition).a()));
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return (i & 8) > 0 ? this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.UPPER) : this.getBlockData().set(BlockTallPlant.HALF, BlockTallPlant.EnumTallPlantHalf.LOWER).set(BlockTallPlant.VARIANT, BlockTallPlant.EnumTallFlowerVariants.a(i & 7));
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ if (iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER) {
+ IBlockData iblockdata1 = iblockaccess.getType(blockposition.down());
+
+ if (iblockdata1.getBlock() == this) {
+ iblockdata = iblockdata.set(BlockTallPlant.VARIANT, iblockdata1.get(BlockTallPlant.VARIANT));
+ }
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return iblockdata.get(BlockTallPlant.HALF) == BlockTallPlant.EnumTallPlantHalf.UPPER ? 8 | ((EnumDirection) iblockdata.get(BlockTallPlant.N)).b() : ((BlockTallPlant.EnumTallFlowerVariants) iblockdata.get(BlockTallPlant.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockTallPlant.HALF, BlockTallPlant.VARIANT, BlockTallPlant.N});
+ }
+
+ public static enum EnumTallPlantHalf implements INamable {
+
+ UPPER, LOWER;
+
+ private EnumTallPlantHalf() {}
+
+ public String toString() {
+ return this.getName();
+ }
+
+ public String getName() {
+ return this == BlockTallPlant.EnumTallPlantHalf.UPPER ? "upper" : "lower";
+ }
+ }
+
+ public static enum EnumTallFlowerVariants implements INamable {
+
+ SUNFLOWER(0, "sunflower"), SYRINGA(1, "syringa"), GRASS(2, "double_grass", "grass"), FERN(3, "double_fern", "fern"), ROSE(4, "double_rose", "rose"), PAEONIA(5, "paeonia");
+
+ private static final BlockTallPlant.EnumTallFlowerVariants[] g = new BlockTallPlant.EnumTallFlowerVariants[values().length];
+ private final int h;
+ private final String i;
+ private final String j;
+
+ private EnumTallFlowerVariants(int i, String s) {
+ this(i, s, s);
+ }
+
+ private EnumTallFlowerVariants(int i, String s, String s1) {
+ this.h = i;
+ this.i = s;
+ this.j = s1;
+ }
+
+ public int a() {
+ return this.h;
+ }
+
+ public String toString() {
+ return this.i;
+ }
+
+ public static BlockTallPlant.EnumTallFlowerVariants a(int i) {
+ if (i < 0 || i >= BlockTallPlant.EnumTallFlowerVariants.g.length) {
+ i = 0;
+ }
+
+ return BlockTallPlant.EnumTallFlowerVariants.g[i];
+ }
+
+ public String getName() {
+ return this.i;
+ }
+
+ public String c() {
+ return this.j;
+ }
+
+ static {
+ BlockTallPlant.EnumTallFlowerVariants[] ablocktallplant_enumtallflowervariants = values();
+ int i = ablocktallplant_enumtallflowervariants.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockTallPlant.EnumTallFlowerVariants blocktallplant_enumtallflowervariants = ablocktallplant_enumtallflowervariants[j];
+
+ BlockTallPlant.EnumTallFlowerVariants.g[blocktallplant_enumtallflowervariants.a()] = blocktallplant_enumtallflowervariants;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockThin.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockThin.java
new file mode 100644
index 0000000..5a89a77
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockThin.java
@@ -0,0 +1,125 @@
+package net.minecraft.server;
+
+import java.util.List;
+import java.util.Random;
+
+public class BlockThin extends Block {
+
+ public static final BlockStateBoolean NORTH = BlockStateBoolean.of("north");
+ public static final BlockStateBoolean EAST = BlockStateBoolean.of("east");
+ public static final BlockStateBoolean SOUTH = BlockStateBoolean.of("south");
+ public static final BlockStateBoolean WEST = BlockStateBoolean.of("west");
+ private final boolean a;
+
+ protected BlockThin(Material material, boolean flag) {
+ super(material);
+ this.j(this.blockStateList.getBlockData().set(BlockThin.NORTH, Boolean.valueOf(false)).set(BlockThin.EAST, Boolean.valueOf(false)).set(BlockThin.SOUTH, Boolean.valueOf(false)).set(BlockThin.WEST, Boolean.valueOf(false)));
+ this.a = flag;
+ this.a(CreativeModeTab.c);
+ }
+
+ public IBlockData updateState(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ return iblockdata.set(BlockThin.NORTH, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.north()).getBlock()))).set(BlockThin.SOUTH, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.south()).getBlock()))).set(BlockThin.WEST, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.west()).getBlock()))).set(BlockThin.EAST, Boolean.valueOf(this.c(iblockaccess.getType(blockposition.east()).getBlock())));
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return !this.a ? null : super.getDropType(iblockdata, random, i);
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ boolean flag = this.c(world.getType(blockposition.north()).getBlock());
+ boolean flag1 = this.c(world.getType(blockposition.south()).getBlock());
+ boolean flag2 = this.c(world.getType(blockposition.west()).getBlock());
+ boolean flag3 = this.c(world.getType(blockposition.east()).getBlock());
+
+ if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1)) {
+ if (flag2) {
+ this.a(0.0F, 0.0F, 0.4375F, 0.5F, 1.0F, 0.5625F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ } else if (flag3) {
+ this.a(0.5F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+ } else {
+ this.a(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ if ((!flag || !flag1) && (flag2 || flag3 || flag || flag1)) {
+ if (flag) {
+ this.a(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 0.5F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ } else if (flag1) {
+ this.a(0.4375F, 0.0F, 0.5F, 0.5625F, 1.0F, 1.0F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+ } else {
+ this.a(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 1.0F);
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ }
+
+ public void j() {
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ float f = 0.4375F;
+ float f1 = 0.5625F;
+ float f2 = 0.4375F;
+ float f3 = 0.5625F;
+ boolean flag = this.c(iblockaccess.getType(blockposition.north()).getBlock());
+ boolean flag1 = this.c(iblockaccess.getType(blockposition.south()).getBlock());
+ boolean flag2 = this.c(iblockaccess.getType(blockposition.west()).getBlock());
+ boolean flag3 = this.c(iblockaccess.getType(blockposition.east()).getBlock());
+
+ if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1)) {
+ if (flag2) {
+ f = 0.0F;
+ } else if (flag3) {
+ f1 = 1.0F;
+ }
+ } else {
+ f = 0.0F;
+ f1 = 1.0F;
+ }
+
+ if ((!flag || !flag1) && (flag2 || flag3 || flag || flag1)) {
+ if (flag) {
+ f2 = 0.0F;
+ } else if (flag1) {
+ f3 = 1.0F;
+ }
+ } else {
+ f2 = 0.0F;
+ f3 = 1.0F;
+ }
+
+ this.a(f, 0.0F, f2, f1, 1.0F, f3);
+ }
+
+ public final boolean c(Block block) {
+ return block.o() || block == this || block == Blocks.GLASS || block == Blocks.STAINED_GLASS || block == Blocks.STAINED_GLASS_PANE || block instanceof BlockThin;
+ }
+
+ protected boolean I() {
+ return true;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return 0;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockThin.NORTH, BlockThin.EAST, BlockThin.WEST, BlockThin.SOUTH});
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockTorch.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTorch.java
new file mode 100644
index 0000000..db8a918
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTorch.java
@@ -0,0 +1,261 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.Iterator;
+
+public class BlockTorch extends Block {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", new Predicate() {
+ public boolean a(EnumDirection enumdirection) {
+ return enumdirection != EnumDirection.DOWN;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((EnumDirection) object);
+ }
+ });
+
+ protected BlockTorch() {
+ super(Material.ORIENTABLE);
+ this.j(this.blockStateList.getBlockData().set(BlockTorch.FACING, EnumDirection.UP));
+ this.a(true);
+ this.a(CreativeModeTab.c);
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return null;
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ private boolean e(World world, BlockPosition blockposition) {
+ if (World.a((IBlockAccess) world, blockposition)) {
+ return true;
+ } else {
+ Block block = world.getType(blockposition).getBlock();
+
+ return block instanceof BlockFence || block == Blocks.GLASS || block == Blocks.COBBLESTONE_WALL || block == Blocks.STAINED_GLASS;
+ }
+ }
+
+ public boolean canPlace(World world, BlockPosition blockposition) {
+ Iterator iterator = BlockTorch.FACING.c().iterator();
+
+ EnumDirection enumdirection;
+
+ do {
+ if (!iterator.hasNext()) {
+ return false;
+ }
+
+ enumdirection = (EnumDirection) iterator.next();
+ } while (!this.a(world, blockposition, enumdirection));
+
+ return true;
+ }
+
+ private boolean a(World world, BlockPosition blockposition, EnumDirection enumdirection) {
+ BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite());
+ boolean flag = enumdirection.k().c();
+
+ return flag && world.d(blockposition1, true) || enumdirection.equals(EnumDirection.UP) && this.e(world, blockposition1);
+ }
+
+ public IBlockData getPlacedState(World world, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2, int i, EntityLiving entityliving) {
+ if (this.a(world, blockposition, enumdirection)) {
+ return this.getBlockData().set(BlockTorch.FACING, enumdirection);
+ } else {
+ Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator();
+
+ EnumDirection enumdirection1;
+
+ do {
+ if (!iterator.hasNext()) {
+ return this.getBlockData();
+ }
+
+ enumdirection1 = (EnumDirection) iterator.next();
+ } while (!world.d(blockposition.shift(enumdirection1.opposite()), true));
+
+ return this.getBlockData().set(BlockTorch.FACING, enumdirection1);
+ }
+ }
+
+ public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ this.f(world, blockposition, iblockdata);
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ this.e(world, blockposition, iblockdata);
+ }
+
+ protected boolean e(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (!this.f(world, blockposition, iblockdata)) {
+ return true;
+ } else {
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockTorch.FACING);
+ EnumDirection.EnumAxis enumdirection_enumaxis = enumdirection.k();
+ EnumDirection enumdirection1 = enumdirection.opposite();
+ boolean flag = false;
+
+ if (enumdirection_enumaxis.c() && !world.d(blockposition.shift(enumdirection1), true)) {
+ flag = true;
+ } else if (enumdirection_enumaxis.b() && !this.e(world, blockposition.shift(enumdirection1))) {
+ flag = true;
+ }
+
+ if (flag) {
+ this.b(world, blockposition, iblockdata, 0);
+ world.setAir(blockposition);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+
+ protected boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (iblockdata.getBlock() == this && this.a(world, blockposition, (EnumDirection) iblockdata.get(BlockTorch.FACING))) {
+ return true;
+ } else {
+ if (world.getType(blockposition).getBlock() == this) {
+ this.b(world, blockposition, iblockdata, 0);
+ world.setAir(blockposition);
+ }
+
+ return false;
+ }
+ }
+
+ public MovingObjectPosition a(World world, BlockPosition blockposition, Vec3D vec3d, Vec3D vec3d1) {
+ EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockTorch.FACING);
+ float f = 0.15F;
+
+ if (enumdirection == EnumDirection.EAST) {
+ this.a(0.0F, 0.2F, 0.5F - f, f * 2.0F, 0.8F, 0.5F + f);
+ } else if (enumdirection == EnumDirection.WEST) {
+ this.a(1.0F - f * 2.0F, 0.2F, 0.5F - f, 1.0F, 0.8F, 0.5F + f);
+ } else if (enumdirection == EnumDirection.SOUTH) {
+ this.a(0.5F - f, 0.2F, 0.0F, 0.5F + f, 0.8F, f * 2.0F);
+ } else if (enumdirection == EnumDirection.NORTH) {
+ this.a(0.5F - f, 0.2F, 1.0F - f * 2.0F, 0.5F + f, 0.8F, 1.0F);
+ } else {
+ f = 0.1F;
+ this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f);
+ }
+
+ return super.a(world, blockposition, vec3d, vec3d1);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ IBlockData iblockdata = this.getBlockData();
+
+ switch (i) {
+ case 1:
+ iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.EAST);
+ break;
+
+ case 2:
+ iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.WEST);
+ break;
+
+ case 3:
+ iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.SOUTH);
+ break;
+
+ case 4:
+ iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.NORTH);
+ break;
+
+ case 5:
+ default:
+ iblockdata = iblockdata.set(BlockTorch.FACING, EnumDirection.UP);
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i;
+
+ switch (BlockTorch.SyntheticClass_1.a[((EnumDirection) iblockdata.get(BlockTorch.FACING)).ordinal()]) {
+ case 1:
+ i = b0 | 1;
+ break;
+
+ case 2:
+ i = b0 | 2;
+ break;
+
+ case 3:
+ i = b0 | 3;
+ break;
+
+ case 4:
+ i = b0 | 4;
+ break;
+
+ case 5:
+ case 6:
+ default:
+ i = b0 | 5;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockTorch.FACING});
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[EnumDirection.values().length];
+
+ static {
+ try {
+ BlockTorch.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockTorch.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockTorch.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ BlockTorch.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ try {
+ BlockTorch.SyntheticClass_1.a[EnumDirection.DOWN.ordinal()] = 5;
+ } catch (NoSuchFieldError nosuchfielderror4) {
+ ;
+ }
+
+ try {
+ BlockTorch.SyntheticClass_1.a[EnumDirection.UP.ordinal()] = 6;
+ } catch (NoSuchFieldError nosuchfielderror5) {
+ ;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockTransparent.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTransparent.java
new file mode 100644
index 0000000..eb8339f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTransparent.java
@@ -0,0 +1,15 @@
+package net.minecraft.server;
+
+public class BlockTransparent extends Block {
+
+ protected boolean R;
+
+ protected BlockTransparent(Material material, boolean flag) {
+ super(material);
+ this.R = flag;
+ }
+
+ public boolean c() {
+ return false;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTrapdoor.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwire.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java
similarity index 98%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java
index 5129862..ad6f39a 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockTripwireHook.java
@@ -1,7 +1,7 @@
package net.minecraft.server;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-import com.google.common.base.Predicate;
import java.util.Iterator;
import java.util.Random;
@@ -113,7 +113,7 @@ public class BlockTripwireHook extends Block {
flag5 = false;
} else {
if (k == i) {
- iblockdata2 = Objects.firstNonNull(iblockdata1, iblockdata2);
+ iblockdata2 = MoreObjects.firstNonNull(iblockdata1, iblockdata2);
}
boolean flag7 = !(Boolean) iblockdata2.get(BlockTripwire.DISARMED);
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/BlockVine.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWallSign.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWallSign.java
new file mode 100644
index 0000000..4fcc357
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWallSign.java
@@ -0,0 +1,101 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+
+public class BlockWallSign extends BlockSign {
+
+ public static final BlockStateDirection FACING = BlockStateDirection.of("facing", (Predicate) EnumDirection.EnumDirectionLimit.HORIZONTAL);
+
+ public BlockWallSign() {
+ this.j(this.blockStateList.getBlockData().set(BlockWallSign.FACING, EnumDirection.NORTH));
+ }
+
+ public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
+ EnumDirection enumdirection = (EnumDirection) iblockaccess.getType(blockposition).get(BlockWallSign.FACING);
+ float f = 0.28125F;
+ float f1 = 0.78125F;
+ float f2 = 0.0F;
+ float f3 = 1.0F;
+ float f4 = 0.125F;
+
+ this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
+ switch (BlockWallSign.SyntheticClass_1.a[enumdirection.ordinal()]) {
+ case 1:
+ this.a(f2, f, 1.0F - f4, f3, f1, 1.0F);
+ break;
+
+ case 2:
+ this.a(f2, f, 0.0F, f3, f1, f4);
+ break;
+
+ case 3:
+ this.a(1.0F - f4, f, f2, 1.0F, f1, f3);
+ break;
+
+ case 4:
+ this.a(0.0F, f, f2, f4, f1, f3);
+ }
+
+ }
+
+ public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
+ EnumDirection enumdirection = (EnumDirection) iblockdata.get(BlockWallSign.FACING);
+
+ if (!world.getType(blockposition.shift(enumdirection.opposite())).getBlock().getMaterial().isBuildable()) {
+ this.b(world, blockposition, iblockdata, 0);
+ world.setAir(blockposition);
+ }
+
+ super.doPhysics(world, blockposition, iblockdata, block);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ EnumDirection enumdirection = EnumDirection.fromType1(i);
+
+ if (enumdirection.k() == EnumDirection.EnumAxis.Y) {
+ enumdirection = EnumDirection.NORTH;
+ }
+
+ return this.getBlockData().set(BlockWallSign.FACING, enumdirection);
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((EnumDirection) iblockdata.get(BlockWallSign.FACING)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockWallSign.FACING});
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a = new int[EnumDirection.values().length];
+
+ static {
+ try {
+ BlockWallSign.SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ BlockWallSign.SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ try {
+ BlockWallSign.SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ BlockWallSign.SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWaterLily.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWaterLily.java
new file mode 100644
index 0000000..be856db
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWaterLily.java
@@ -0,0 +1,43 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class BlockWaterLily extends BlockPlant {
+
+ protected BlockWaterLily() {
+ float f = 0.5F;
+ float f1 = 0.015625F;
+
+ this.a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f);
+ this.a(CreativeModeTab.c);
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
+ if (entity == null || !(entity instanceof EntityBoat)) {
+ super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
+ }
+
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return new AxisAlignedBB((double) blockposition.getX() + this.minX, (double) blockposition.getY() + this.minY, (double) blockposition.getZ() + this.minZ, (double) blockposition.getX() + this.maxX, (double) blockposition.getY() + this.maxY, (double) blockposition.getZ() + this.maxZ);
+ }
+
+ protected boolean c(Block block) {
+ return block == Blocks.WATER;
+ }
+
+ public boolean f(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ if (blockposition.getY() >= 0 && blockposition.getY() < 256) {
+ IBlockData iblockdata1 = world.getType(blockposition.down());
+
+ return iblockdata1.getBlock().getMaterial() == Material.WATER && ((Integer) iblockdata1.get(BlockFluids.LEVEL)).intValue() == 0;
+ } else {
+ return false;
+ }
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWeb.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWeb.java
new file mode 100644
index 0000000..244e633
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWeb.java
@@ -0,0 +1,35 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class BlockWeb extends Block {
+
+ public BlockWeb() {
+ super(Material.WEB);
+ this.a(CreativeModeTab.c);
+ }
+
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, Entity entity) {
+ entity.aA();
+ }
+
+ public boolean c() {
+ return false;
+ }
+
+ public AxisAlignedBB a(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return null;
+ }
+
+ public boolean d() {
+ return false;
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Items.STRING;
+ }
+
+ protected boolean I() {
+ return true;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWood.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWood.java
new file mode 100644
index 0000000..4d87f32
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWood.java
@@ -0,0 +1,94 @@
+package net.minecraft.server;
+
+public class BlockWood extends Block {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockWood.EnumLogVariant.class);
+
+ public BlockWood() {
+ super(Material.WOOD);
+ this.j(this.blockStateList.getBlockData().set(BlockWood.VARIANT, BlockWood.EnumLogVariant.OAK));
+ this.a(CreativeModeTab.b);
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWood.VARIANT)).a();
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ return this.getBlockData().set(BlockWood.VARIANT, BlockWood.EnumLogVariant.a(i));
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWood.VARIANT)).c();
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWood.VARIANT)).a();
+ }
+
+ protected BlockStateList getStateList() {
+ return new BlockStateList(this, new IBlockState[] { BlockWood.VARIANT});
+ }
+
+ public static enum EnumLogVariant implements INamable {
+
+ OAK(0, "oak", MaterialMapColor.o), SPRUCE(1, "spruce", MaterialMapColor.J), BIRCH(2, "birch", MaterialMapColor.d), JUNGLE(3, "jungle", MaterialMapColor.l), ACACIA(4, "acacia", MaterialMapColor.q), DARK_OAK(5, "dark_oak", "big_oak", MaterialMapColor.B);
+
+ private static final BlockWood.EnumLogVariant[] g = new BlockWood.EnumLogVariant[values().length];
+ private final int h;
+ private final String i;
+ private final String j;
+ private final MaterialMapColor k;
+
+ private EnumLogVariant(int i, String s, MaterialMapColor materialmapcolor) {
+ this(i, s, s, materialmapcolor);
+ }
+
+ private EnumLogVariant(int i, String s, String s1, MaterialMapColor materialmapcolor) {
+ this.h = i;
+ this.i = s;
+ this.j = s1;
+ this.k = materialmapcolor;
+ }
+
+ public int a() {
+ return this.h;
+ }
+
+ public MaterialMapColor c() {
+ return this.k;
+ }
+
+ public String toString() {
+ return this.i;
+ }
+
+ public static BlockWood.EnumLogVariant a(int i) {
+ if (i < 0 || i >= BlockWood.EnumLogVariant.g.length) {
+ i = 0;
+ }
+
+ return BlockWood.EnumLogVariant.g[i];
+ }
+
+ public String getName() {
+ return this.i;
+ }
+
+ public String d() {
+ return this.j;
+ }
+
+ static {
+ BlockWood.EnumLogVariant[] ablockwood_enumlogvariant = values();
+ int i = ablockwood_enumlogvariant.length;
+
+ for (int j = 0; j < i; ++j) {
+ BlockWood.EnumLogVariant blockwood_enumlogvariant = ablockwood_enumlogvariant[j];
+
+ BlockWood.EnumLogVariant.g[blockwood_enumlogvariant.a()] = blockwood_enumlogvariant;
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodButton.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodButton.java
new file mode 100644
index 0000000..e62cc86
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodButton.java
@@ -0,0 +1,8 @@
+package net.minecraft.server;
+
+public class BlockWoodButton extends BlockButtonAbstract {
+
+ protected BlockWoodButton() {
+ super(true);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodStep.java
new file mode 100644
index 0000000..9b4ad90
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodStep.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockWoodStep extends BlockWoodenStep {
+
+ public BlockWoodStep() {}
+
+ public boolean l() {
+ return false;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodenStep.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodenStep.java
new file mode 100644
index 0000000..d90f3be
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWoodenStep.java
@@ -0,0 +1,69 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public abstract class BlockWoodenStep extends BlockStepAbstract {
+
+ public static final BlockStateEnum VARIANT = BlockStateEnum.of("variant", BlockWood.EnumLogVariant.class);
+
+ public BlockWoodenStep() {
+ super(Material.WOOD);
+ IBlockData iblockdata = this.blockStateList.getBlockData();
+
+ if (!this.l()) {
+ iblockdata = iblockdata.set(BlockWoodenStep.HALF, BlockStepAbstract.EnumSlabHalf.BOTTOM);
+ }
+
+ this.j(iblockdata.set(BlockWoodenStep.VARIANT, BlockWood.EnumLogVariant.OAK));
+ this.a(CreativeModeTab.b);
+ }
+
+ public MaterialMapColor g(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWoodenStep.VARIANT)).c();
+ }
+
+ public Item getDropType(IBlockData iblockdata, Random random, int i) {
+ return Item.getItemOf(Blocks.WOODEN_SLAB);
+ }
+
+ public String b(int i) {
+ return super.a() + "." + BlockWood.EnumLogVariant.a(i).d();
+ }
+
+ public IBlockState> n() {
+ return BlockWoodenStep.VARIANT;
+ }
+
+ public Object a(ItemStack itemstack) {
+ return BlockWood.EnumLogVariant.a(itemstack.getData() & 7);
+ }
+
+ public IBlockData fromLegacyData(int i) {
+ IBlockData iblockdata = this.getBlockData().set(BlockWoodenStep.VARIANT, BlockWood.EnumLogVariant.a(i & 7));
+
+ if (!this.l()) {
+ iblockdata = iblockdata.set(BlockWoodenStep.HALF, (i & 8) == 0 ? BlockStepAbstract.EnumSlabHalf.BOTTOM : BlockStepAbstract.EnumSlabHalf.TOP);
+ }
+
+ return iblockdata;
+ }
+
+ public int toLegacyData(IBlockData iblockdata) {
+ byte b0 = 0;
+ int i = b0 | ((BlockWood.EnumLogVariant) iblockdata.get(BlockWoodenStep.VARIANT)).a();
+
+ if (!this.l() && iblockdata.get(BlockWoodenStep.HALF) == BlockStepAbstract.EnumSlabHalf.TOP) {
+ i |= 8;
+ }
+
+ return i;
+ }
+
+ protected BlockStateList getStateList() {
+ return this.l() ? new BlockStateList(this, new IBlockState[] { BlockWoodenStep.VARIANT}) : new BlockStateList(this, new IBlockState[] { BlockWoodenStep.HALF, BlockWoodenStep.VARIANT});
+ }
+
+ public int getDropData(IBlockData iblockdata) {
+ return ((BlockWood.EnumLogVariant) iblockdata.get(BlockWoodenStep.VARIANT)).a();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockWorkbench.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWorkbench.java
new file mode 100644
index 0000000..dc3ed8a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockWorkbench.java
@@ -0,0 +1,50 @@
+package net.minecraft.server;
+
+public class BlockWorkbench extends Block {
+
+ protected BlockWorkbench() {
+ super(Material.WOOD);
+ this.a(CreativeModeTab.c);
+ }
+
+ public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (world.isClientSide) {
+ return true;
+ } else {
+ entityhuman.openTileEntity(new BlockWorkbench.TileEntityContainerWorkbench(world, blockposition));
+ entityhuman.b(StatisticList.Z);
+ return true;
+ }
+ }
+
+ public static class TileEntityContainerWorkbench implements ITileEntityContainer {
+
+ private final World a;
+ private final BlockPosition b;
+
+ public TileEntityContainerWorkbench(World world, BlockPosition blockposition) {
+ this.a = world;
+ this.b = blockposition;
+ }
+
+ public String getName() {
+ return null;
+ }
+
+ public boolean hasCustomName() {
+ return false;
+ }
+
+ public IChatBaseComponent getScoreboardDisplayName() {
+ return new ChatMessage(Blocks.CRAFTING_TABLE.a() + ".name", new Object[0]);
+ }
+
+ public Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman) {
+ return new ContainerWorkbench(playerinventory, this.a, this.b);
+ }
+
+ public String getContainerName() {
+ return "minecraft:crafting_table";
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/BlockYellowFlowers.java b/eSpigot-Server/src/main/java/net/minecraft/server/BlockYellowFlowers.java
new file mode 100644
index 0000000..50c4009
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/BlockYellowFlowers.java
@@ -0,0 +1,10 @@
+package net.minecraft.server;
+
+public class BlockYellowFlowers extends BlockFlowers {
+
+ public BlockYellowFlowers() {}
+
+ public BlockFlowers.EnumFlowerType l() {
+ return BlockFlowers.EnumFlowerType.YELLOW;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Blocks.java b/eSpigot-Server/src/main/java/net/minecraft/server/Blocks.java
new file mode 100644
index 0000000..58d86bb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/Blocks.java
@@ -0,0 +1,412 @@
+package net.minecraft.server;
+
+public class Blocks {
+
+ public static final Block AIR;
+ public static final Block STONE;
+ public static final BlockGrass GRASS;
+ public static final Block DIRT;
+ public static final Block COBBLESTONE;
+ public static final Block PLANKS;
+ public static final Block SAPLING;
+ public static final Block BEDROCK;
+ public static final BlockFlowing FLOWING_WATER;
+ public static final BlockStationary WATER;
+ public static final BlockFlowing FLOWING_LAVA;
+ public static final BlockStationary LAVA;
+ public static final BlockSand SAND;
+ public static final Block GRAVEL;
+ public static final Block GOLD_ORE;
+ public static final Block IRON_ORE;
+ public static final Block COAL_ORE;
+ public static final Block LOG;
+ public static final Block LOG2;
+ public static final BlockLeaves LEAVES;
+ public static final BlockLeaves LEAVES2;
+ public static final Block SPONGE;
+ public static final Block GLASS;
+ public static final Block LAPIS_ORE;
+ public static final Block LAPIS_BLOCK;
+ public static final Block DISPENSER;
+ public static final Block SANDSTONE;
+ public static final Block NOTEBLOCK;
+ public static final Block BED;
+ public static final Block GOLDEN_RAIL;
+ public static final Block DETECTOR_RAIL;
+ public static final BlockPiston STICKY_PISTON;
+ public static final Block WEB;
+ public static final BlockLongGrass TALLGRASS;
+ public static final BlockDeadBush DEADBUSH;
+ public static final BlockPiston PISTON;
+ public static final BlockPistonExtension PISTON_HEAD;
+ public static final Block WOOL;
+ public static final BlockPistonMoving PISTON_EXTENSION;
+ public static final BlockFlowers YELLOW_FLOWER;
+ public static final BlockFlowers RED_FLOWER;
+ public static final BlockPlant BROWN_MUSHROOM;
+ public static final BlockPlant RED_MUSHROOM;
+ public static final Block GOLD_BLOCK;
+ public static final Block IRON_BLOCK;
+ public static final BlockStepAbstract DOUBLE_STONE_SLAB;
+ public static final BlockStepAbstract STONE_SLAB;
+ public static final Block BRICK_BLOCK;
+ public static final Block TNT;
+ public static final Block BOOKSHELF;
+ public static final Block MOSSY_COBBLESTONE;
+ public static final Block OBSIDIAN;
+ public static final Block TORCH;
+ public static final BlockFire FIRE;
+ public static final Block MOB_SPAWNER;
+ public static final Block OAK_STAIRS;
+ public static final BlockChest CHEST;
+ public static final BlockRedstoneWire REDSTONE_WIRE;
+ public static final Block DIAMOND_ORE;
+ public static final Block DIAMOND_BLOCK;
+ public static final Block CRAFTING_TABLE;
+ public static final Block WHEAT;
+ public static final Block FARMLAND;
+ public static final Block FURNACE;
+ public static final Block LIT_FURNACE;
+ public static final Block STANDING_SIGN;
+ public static final Block WOODEN_DOOR;
+ public static final Block SPRUCE_DOOR;
+ public static final Block BIRCH_DOOR;
+ public static final Block JUNGLE_DOOR;
+ public static final Block ACACIA_DOOR;
+ public static final Block DARK_OAK_DOOR;
+ public static final Block LADDER;
+ public static final Block RAIL;
+ public static final Block STONE_STAIRS;
+ public static final Block WALL_SIGN;
+ public static final Block LEVER;
+ public static final Block STONE_PRESSURE_PLATE;
+ public static final Block IRON_DOOR;
+ public static final Block WOODEN_PRESSURE_PLATE;
+ public static final Block REDSTONE_ORE;
+ public static final Block LIT_REDSTONE_ORE;
+ public static final Block UNLIT_REDSTONE_TORCH;
+ public static final Block REDSTONE_TORCH;
+ public static final Block STONE_BUTTON;
+ public static final Block SNOW_LAYER;
+ public static final Block ICE;
+ public static final Block SNOW;
+ public static final BlockCactus CACTUS;
+ public static final Block CLAY;
+ public static final BlockReed REEDS;
+ public static final Block JUKEBOX;
+ public static final Block FENCE;
+ public static final Block SPRUCE_FENCE;
+ public static final Block BIRCH_FENCE;
+ public static final Block JUNGLE_FENCE;
+ public static final Block DARK_OAK_FENCE;
+ public static final Block ACACIA_FENCE;
+ public static final Block PUMPKIN;
+ public static final Block NETHERRACK;
+ public static final Block SOUL_SAND;
+ public static final Block GLOWSTONE;
+ public static final BlockPortal PORTAL;
+ public static final Block LIT_PUMPKIN;
+ public static final Block CAKE;
+ public static final BlockRepeater UNPOWERED_REPEATER;
+ public static final BlockRepeater POWERED_REPEATER;
+ public static final Block TRAPDOOR;
+ public static final Block MONSTER_EGG;
+ public static final Block STONEBRICK;
+ public static final Block BROWN_MUSHROOM_BLOCK;
+ public static final Block RED_MUSHROOM_BLOCK;
+ public static final Block IRON_BARS;
+ public static final Block GLASS_PANE;
+ public static final Block MELON_BLOCK;
+ public static final Block PUMPKIN_STEM;
+ public static final Block MELON_STEM;
+ public static final Block VINE;
+ public static final Block FENCE_GATE;
+ public static final Block SPRUCE_FENCE_GATE;
+ public static final Block BIRCH_FENCE_GATE;
+ public static final Block JUNGLE_FENCE_GATE;
+ public static final Block DARK_OAK_FENCE_GATE;
+ public static final Block ACACIA_FENCE_GATE;
+ public static final Block BRICK_STAIRS;
+ public static final Block STONE_BRICK_STAIRS;
+ public static final BlockMycel MYCELIUM;
+ public static final Block WATERLILY;
+ public static final Block NETHER_BRICK;
+ public static final Block NETHER_BRICK_FENCE;
+ public static final Block NETHER_BRICK_STAIRS;
+ public static final Block NETHER_WART;
+ public static final Block ENCHANTING_TABLE;
+ public static final Block BREWING_STAND;
+ public static final BlockCauldron cauldron;
+ public static final Block END_PORTAL;
+ public static final Block END_PORTAL_FRAME;
+ public static final Block END_STONE;
+ public static final Block DRAGON_EGG;
+ public static final Block REDSTONE_LAMP;
+ public static final Block LIT_REDSTONE_LAMP;
+ public static final BlockStepAbstract DOUBLE_WOODEN_SLAB;
+ public static final BlockStepAbstract WOODEN_SLAB;
+ public static final Block COCOA;
+ public static final Block SANDSTONE_STAIRS;
+ public static final Block EMERALD_ORE;
+ public static final Block ENDER_CHEST;
+ public static final BlockTripwireHook TRIPWIRE_HOOK;
+ public static final Block TRIPWIRE;
+ public static final Block EMERALD_BLOCK;
+ public static final Block SPRUCE_STAIRS;
+ public static final Block BIRCH_STAIRS;
+ public static final Block JUNGLE_STAIRS;
+ public static final Block COMMAND_BLOCK;
+ public static final BlockBeacon BEACON;
+ public static final Block COBBLESTONE_WALL;
+ public static final Block FLOWER_POT;
+ public static final Block CARROTS;
+ public static final Block POTATOES;
+ public static final Block WOODEN_BUTTON;
+ public static final BlockSkull SKULL;
+ public static final Block ANVIL;
+ public static final Block TRAPPED_CHEST;
+ public static final Block LIGHT_WEIGHTED_PRESSURE_PLATE;
+ public static final Block HEAVY_WEIGHTED_PRESSURE_PLATE;
+ public static final BlockRedstoneComparator UNPOWERED_COMPARATOR;
+ public static final BlockRedstoneComparator POWERED_COMPARATOR;
+ public static final BlockDaylightDetector DAYLIGHT_DETECTOR;
+ public static final BlockDaylightDetector DAYLIGHT_DETECTOR_INVERTED;
+ public static final Block REDSTONE_BLOCK;
+ public static final Block QUARTZ_ORE;
+ public static final BlockHopper HOPPER;
+ public static final Block QUARTZ_BLOCK;
+ public static final Block QUARTZ_STAIRS;
+ public static final Block ACTIVATOR_RAIL;
+ public static final Block DROPPER;
+ public static final Block STAINED_HARDENED_CLAY;
+ public static final Block BARRIER;
+ public static final Block IRON_TRAPDOOR;
+ public static final Block HAY_BLOCK;
+ public static final Block CARPET;
+ public static final Block HARDENED_CLAY;
+ public static final Block COAL_BLOCK;
+ public static final Block PACKED_ICE;
+ public static final Block ACACIA_STAIRS;
+ public static final Block DARK_OAK_STAIRS;
+ public static final Block SLIME;
+ public static final BlockTallPlant DOUBLE_PLANT;
+ public static final BlockStainedGlass STAINED_GLASS;
+ public static final BlockStainedGlassPane STAINED_GLASS_PANE;
+ public static final Block PRISMARINE;
+ public static final Block SEA_LANTERN;
+ public static final Block STANDING_BANNER;
+ public static final Block WALL_BANNER;
+ public static final Block RED_SANDSTONE;
+ public static final Block RED_SANDSTONE_STAIRS;
+ public static final BlockStepAbstract DOUBLE_STONE_SLAB2;
+ public static final BlockStepAbstract STONE_SLAB2;
+
+ private static Block get(String s) {
+ return (Block) Block.REGISTRY.get(new MinecraftKey(s));
+ }
+
+ static {
+ if (!DispenserRegistry.a()) {
+ throw new RuntimeException("Accessed Blocks before Bootstrap!");
+ } else {
+ AIR = get("air");
+ STONE = get("stone");
+ GRASS = (BlockGrass) get("grass");
+ DIRT = get("dirt");
+ COBBLESTONE = get("cobblestone");
+ PLANKS = get("planks");
+ SAPLING = get("sapling");
+ BEDROCK = get("bedrock");
+ FLOWING_WATER = (BlockFlowing) get("flowing_water");
+ WATER = (BlockStationary) get("water");
+ FLOWING_LAVA = (BlockFlowing) get("flowing_lava");
+ LAVA = (BlockStationary) get("lava");
+ SAND = (BlockSand) get("sand");
+ GRAVEL = get("gravel");
+ GOLD_ORE = get("gold_ore");
+ IRON_ORE = get("iron_ore");
+ COAL_ORE = get("coal_ore");
+ LOG = get("log");
+ LOG2 = get("log2");
+ LEAVES = (BlockLeaves) get("leaves");
+ LEAVES2 = (BlockLeaves) get("leaves2");
+ SPONGE = get("sponge");
+ GLASS = get("glass");
+ LAPIS_ORE = get("lapis_ore");
+ LAPIS_BLOCK = get("lapis_block");
+ DISPENSER = get("dispenser");
+ SANDSTONE = get("sandstone");
+ NOTEBLOCK = get("noteblock");
+ BED = get("bed");
+ GOLDEN_RAIL = get("golden_rail");
+ DETECTOR_RAIL = get("detector_rail");
+ STICKY_PISTON = (BlockPiston) get("sticky_piston");
+ WEB = get("web");
+ TALLGRASS = (BlockLongGrass) get("tallgrass");
+ DEADBUSH = (BlockDeadBush) get("deadbush");
+ PISTON = (BlockPiston) get("piston");
+ PISTON_HEAD = (BlockPistonExtension) get("piston_head");
+ WOOL = get("wool");
+ PISTON_EXTENSION = (BlockPistonMoving) get("piston_extension");
+ YELLOW_FLOWER = (BlockFlowers) get("yellow_flower");
+ RED_FLOWER = (BlockFlowers) get("red_flower");
+ BROWN_MUSHROOM = (BlockPlant) get("brown_mushroom");
+ RED_MUSHROOM = (BlockPlant) get("red_mushroom");
+ GOLD_BLOCK = get("gold_block");
+ IRON_BLOCK = get("iron_block");
+ DOUBLE_STONE_SLAB = (BlockStepAbstract) get("double_stone_slab");
+ STONE_SLAB = (BlockStepAbstract) get("stone_slab");
+ BRICK_BLOCK = get("brick_block");
+ TNT = get("tnt");
+ BOOKSHELF = get("bookshelf");
+ MOSSY_COBBLESTONE = get("mossy_cobblestone");
+ OBSIDIAN = get("obsidian");
+ TORCH = get("torch");
+ FIRE = (BlockFire) get("fire");
+ MOB_SPAWNER = get("mob_spawner");
+ OAK_STAIRS = get("oak_stairs");
+ CHEST = (BlockChest) get("chest");
+ REDSTONE_WIRE = (BlockRedstoneWire) get("redstone_wire");
+ DIAMOND_ORE = get("diamond_ore");
+ DIAMOND_BLOCK = get("diamond_block");
+ CRAFTING_TABLE = get("crafting_table");
+ WHEAT = get("wheat");
+ FARMLAND = get("farmland");
+ FURNACE = get("furnace");
+ LIT_FURNACE = get("lit_furnace");
+ STANDING_SIGN = get("standing_sign");
+ WOODEN_DOOR = get("wooden_door");
+ SPRUCE_DOOR = get("spruce_door");
+ BIRCH_DOOR = get("birch_door");
+ JUNGLE_DOOR = get("jungle_door");
+ ACACIA_DOOR = get("acacia_door");
+ DARK_OAK_DOOR = get("dark_oak_door");
+ LADDER = get("ladder");
+ RAIL = get("rail");
+ STONE_STAIRS = get("stone_stairs");
+ WALL_SIGN = get("wall_sign");
+ LEVER = get("lever");
+ STONE_PRESSURE_PLATE = get("stone_pressure_plate");
+ IRON_DOOR = get("iron_door");
+ WOODEN_PRESSURE_PLATE = get("wooden_pressure_plate");
+ REDSTONE_ORE = get("redstone_ore");
+ LIT_REDSTONE_ORE = get("lit_redstone_ore");
+ UNLIT_REDSTONE_TORCH = get("unlit_redstone_torch");
+ REDSTONE_TORCH = get("redstone_torch");
+ STONE_BUTTON = get("stone_button");
+ SNOW_LAYER = get("snow_layer");
+ ICE = get("ice");
+ SNOW = get("snow");
+ CACTUS = (BlockCactus) get("cactus");
+ CLAY = get("clay");
+ REEDS = (BlockReed) get("reeds");
+ JUKEBOX = get("jukebox");
+ FENCE = get("fence");
+ SPRUCE_FENCE = get("spruce_fence");
+ BIRCH_FENCE = get("birch_fence");
+ JUNGLE_FENCE = get("jungle_fence");
+ DARK_OAK_FENCE = get("dark_oak_fence");
+ ACACIA_FENCE = get("acacia_fence");
+ PUMPKIN = get("pumpkin");
+ NETHERRACK = get("netherrack");
+ SOUL_SAND = get("soul_sand");
+ GLOWSTONE = get("glowstone");
+ PORTAL = (BlockPortal) get("portal");
+ LIT_PUMPKIN = get("lit_pumpkin");
+ CAKE = get("cake");
+ UNPOWERED_REPEATER = (BlockRepeater) get("unpowered_repeater");
+ POWERED_REPEATER = (BlockRepeater) get("powered_repeater");
+ TRAPDOOR = get("trapdoor");
+ MONSTER_EGG = get("monster_egg");
+ STONEBRICK = get("stonebrick");
+ BROWN_MUSHROOM_BLOCK = get("brown_mushroom_block");
+ RED_MUSHROOM_BLOCK = get("red_mushroom_block");
+ IRON_BARS = get("iron_bars");
+ GLASS_PANE = get("glass_pane");
+ MELON_BLOCK = get("melon_block");
+ PUMPKIN_STEM = get("pumpkin_stem");
+ MELON_STEM = get("melon_stem");
+ VINE = get("vine");
+ FENCE_GATE = get("fence_gate");
+ SPRUCE_FENCE_GATE = get("spruce_fence_gate");
+ BIRCH_FENCE_GATE = get("birch_fence_gate");
+ JUNGLE_FENCE_GATE = get("jungle_fence_gate");
+ DARK_OAK_FENCE_GATE = get("dark_oak_fence_gate");
+ ACACIA_FENCE_GATE = get("acacia_fence_gate");
+ BRICK_STAIRS = get("brick_stairs");
+ STONE_BRICK_STAIRS = get("stone_brick_stairs");
+ MYCELIUM = (BlockMycel) get("mycelium");
+ WATERLILY = get("waterlily");
+ NETHER_BRICK = get("nether_brick");
+ NETHER_BRICK_FENCE = get("nether_brick_fence");
+ NETHER_BRICK_STAIRS = get("nether_brick_stairs");
+ NETHER_WART = get("nether_wart");
+ ENCHANTING_TABLE = get("enchanting_table");
+ BREWING_STAND = get("brewing_stand");
+ cauldron = (BlockCauldron) get("cauldron");
+ END_PORTAL = get("end_portal");
+ END_PORTAL_FRAME = get("end_portal_frame");
+ END_STONE = get("end_stone");
+ DRAGON_EGG = get("dragon_egg");
+ REDSTONE_LAMP = get("redstone_lamp");
+ LIT_REDSTONE_LAMP = get("lit_redstone_lamp");
+ DOUBLE_WOODEN_SLAB = (BlockStepAbstract) get("double_wooden_slab");
+ WOODEN_SLAB = (BlockStepAbstract) get("wooden_slab");
+ COCOA = get("cocoa");
+ SANDSTONE_STAIRS = get("sandstone_stairs");
+ EMERALD_ORE = get("emerald_ore");
+ ENDER_CHEST = get("ender_chest");
+ TRIPWIRE_HOOK = (BlockTripwireHook) get("tripwire_hook");
+ TRIPWIRE = get("tripwire");
+ EMERALD_BLOCK = get("emerald_block");
+ SPRUCE_STAIRS = get("spruce_stairs");
+ BIRCH_STAIRS = get("birch_stairs");
+ JUNGLE_STAIRS = get("jungle_stairs");
+ COMMAND_BLOCK = get("command_block");
+ BEACON = (BlockBeacon) get("beacon");
+ COBBLESTONE_WALL = get("cobblestone_wall");
+ FLOWER_POT = get("flower_pot");
+ CARROTS = get("carrots");
+ POTATOES = get("potatoes");
+ WOODEN_BUTTON = get("wooden_button");
+ SKULL = (BlockSkull) get("skull");
+ ANVIL = get("anvil");
+ TRAPPED_CHEST = get("trapped_chest");
+ LIGHT_WEIGHTED_PRESSURE_PLATE = get("light_weighted_pressure_plate");
+ HEAVY_WEIGHTED_PRESSURE_PLATE = get("heavy_weighted_pressure_plate");
+ UNPOWERED_COMPARATOR = (BlockRedstoneComparator) get("unpowered_comparator");
+ POWERED_COMPARATOR = (BlockRedstoneComparator) get("powered_comparator");
+ DAYLIGHT_DETECTOR = (BlockDaylightDetector) get("daylight_detector");
+ DAYLIGHT_DETECTOR_INVERTED = (BlockDaylightDetector) get("daylight_detector_inverted");
+ REDSTONE_BLOCK = get("redstone_block");
+ QUARTZ_ORE = get("quartz_ore");
+ HOPPER = (BlockHopper) get("hopper");
+ QUARTZ_BLOCK = get("quartz_block");
+ QUARTZ_STAIRS = get("quartz_stairs");
+ ACTIVATOR_RAIL = get("activator_rail");
+ DROPPER = get("dropper");
+ STAINED_HARDENED_CLAY = get("stained_hardened_clay");
+ BARRIER = get("barrier");
+ IRON_TRAPDOOR = get("iron_trapdoor");
+ HAY_BLOCK = get("hay_block");
+ CARPET = get("carpet");
+ HARDENED_CLAY = get("hardened_clay");
+ COAL_BLOCK = get("coal_block");
+ PACKED_ICE = get("packed_ice");
+ ACACIA_STAIRS = get("acacia_stairs");
+ DARK_OAK_STAIRS = get("dark_oak_stairs");
+ SLIME = get("slime");
+ DOUBLE_PLANT = (BlockTallPlant) get("double_plant");
+ STAINED_GLASS = (BlockStainedGlass) get("stained_glass");
+ STAINED_GLASS_PANE = (BlockStainedGlassPane) get("stained_glass_pane");
+ PRISMARINE = get("prismarine");
+ SEA_LANTERN = get("sea_lantern");
+ STANDING_BANNER = get("standing_banner");
+ WALL_BANNER = get("wall_banner");
+ RED_SANDSTONE = get("red_sandstone");
+ RED_SANDSTONE_STAIRS = get("red_sandstone_stairs");
+ DOUBLE_STONE_SLAB2 = (BlockStepAbstract) get("double_stone_slab2");
+ STONE_SLAB2 = (BlockStepAbstract) get("stone_slab2");
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CancelledPacketHandleException.java b/eSpigot-Server/src/main/java/net/minecraft/server/CancelledPacketHandleException.java
new file mode 100644
index 0000000..63b7db3
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CancelledPacketHandleException.java
@@ -0,0 +1,15 @@
+package net.minecraft.server;
+
+public final class CancelledPacketHandleException extends RuntimeException {
+
+ public static final CancelledPacketHandleException INSTANCE = new CancelledPacketHandleException();
+
+ private CancelledPacketHandleException() {
+ this.setStackTrace(new StackTraceElement[0]);
+ }
+
+ public synchronized Throwable fillInStackTrace() {
+ this.setStackTrace(new StackTraceElement[0]);
+ return this;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChatBaseComponent.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatClickable.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatClickable.java
new file mode 100644
index 0000000..d319fa3
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatClickable.java
@@ -0,0 +1,96 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Maps;
+import java.util.Map;
+
+public class ChatClickable {
+
+ private final ChatClickable.EnumClickAction a;
+ private final String b;
+
+ public ChatClickable(ChatClickable.EnumClickAction chatclickable_enumclickaction, String s) {
+ this.a = chatclickable_enumclickaction;
+ this.b = s;
+ }
+
+ public ChatClickable.EnumClickAction a() {
+ return this.a;
+ }
+
+ public String b() {
+ return this.b;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (object != null && this.getClass() == object.getClass()) {
+ ChatClickable chatclickable = (ChatClickable) object;
+
+ if (this.a != chatclickable.a) {
+ return false;
+ } else {
+ if (this.b != null) {
+ if (!this.b.equals(chatclickable.b)) {
+ return false;
+ }
+ } else if (chatclickable.b != null) {
+ return false;
+ }
+
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ public String toString() {
+ return "ClickEvent{action=" + this.a + ", value=\'" + this.b + '\'' + '}';
+ }
+
+ public int hashCode() {
+ int i = this.a.hashCode();
+
+ i = 31 * i + (this.b != null ? this.b.hashCode() : 0);
+ return i;
+ }
+
+ public static enum EnumClickAction {
+
+ OPEN_URL("open_url", true), OPEN_FILE("open_file", false), RUN_COMMAND("run_command", true), TWITCH_USER_INFO("twitch_user_info", false), SUGGEST_COMMAND("suggest_command", true), CHANGE_PAGE("change_page", true);
+
+ private static final Map g = Maps.newHashMap();
+ private final boolean h;
+ private final String i;
+
+ private EnumClickAction(String s, boolean flag) {
+ this.i = s;
+ this.h = flag;
+ }
+
+ public boolean a() {
+ return this.h;
+ }
+
+ public String b() {
+ return this.i;
+ }
+
+ public static ChatClickable.EnumClickAction a(String s) {
+ return (ChatClickable.EnumClickAction) ChatClickable.EnumClickAction.g.get(s);
+ }
+
+ static {
+ ChatClickable.EnumClickAction[] achatclickable_enumclickaction = values();
+ int i = achatclickable_enumclickaction.length;
+
+ for (int j = 0; j < i; ++j) {
+ ChatClickable.EnumClickAction chatclickable_enumclickaction = achatclickable_enumclickaction[j];
+
+ ChatClickable.EnumClickAction.g.put(chatclickable_enumclickaction.b(), chatclickable_enumclickaction);
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentScore.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentScore.java
new file mode 100644
index 0000000..26f903d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentScore.java
@@ -0,0 +1,82 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+
+public class ChatComponentScore extends ChatBaseComponent {
+
+ private final String b;
+ private final String c;
+ private String d = "";
+
+ public ChatComponentScore(String s, String s1) {
+ this.b = s;
+ this.c = s1;
+ }
+
+ public String g() {
+ return this.b;
+ }
+
+ public String h() {
+ return this.c;
+ }
+
+ public void b(String s) {
+ this.d = s;
+ }
+
+ public String getText() {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+
+ if (minecraftserver != null && minecraftserver.O() && UtilColor.b(this.d)) {
+ Scoreboard scoreboard = minecraftserver.getWorldServer(0).getScoreboard();
+ ScoreboardObjective scoreboardobjective = scoreboard.getObjective(this.c);
+
+ if (scoreboard.b(this.b, scoreboardobjective)) {
+ ScoreboardScore scoreboardscore = scoreboard.getPlayerScoreForObjective(this.b, scoreboardobjective);
+
+ this.b(String.format("%d", new Object[] { Integer.valueOf(scoreboardscore.getScore())}));
+ } else {
+ this.d = "";
+ }
+ }
+
+ return this.d;
+ }
+
+ public ChatComponentScore i() {
+ ChatComponentScore chatcomponentscore = new ChatComponentScore(this.b, this.c);
+
+ chatcomponentscore.b(this.d);
+ chatcomponentscore.setChatModifier(this.getChatModifier().clone());
+ Iterator iterator = this.a().iterator();
+
+ while (iterator.hasNext()) {
+ IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next();
+
+ chatcomponentscore.addSibling(ichatbasecomponent.f());
+ }
+
+ return chatcomponentscore;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (!(object instanceof ChatComponentScore)) {
+ return false;
+ } else {
+ ChatComponentScore chatcomponentscore = (ChatComponentScore) object;
+
+ return this.b.equals(chatcomponentscore.b) && this.c.equals(chatcomponentscore.c) && super.equals(object);
+ }
+ }
+
+ public String toString() {
+ return "ScoreComponent{name=\'" + this.b + '\'' + "objective=\'" + this.c + '\'' + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}';
+ }
+
+ public IChatBaseComponent f() {
+ return this.i();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentSelector.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentSelector.java
new file mode 100644
index 0000000..2acccbe
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentSelector.java
@@ -0,0 +1,55 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+
+public class ChatComponentSelector extends ChatBaseComponent {
+
+ private final String b;
+
+ public ChatComponentSelector(String s) {
+ this.b = s;
+ }
+
+ public String g() {
+ return this.b;
+ }
+
+ public String getText() {
+ return this.b;
+ }
+
+ public ChatComponentSelector h() {
+ ChatComponentSelector chatcomponentselector = new ChatComponentSelector(this.b);
+
+ chatcomponentselector.setChatModifier(this.getChatModifier().clone());
+ Iterator iterator = this.a().iterator();
+
+ while (iterator.hasNext()) {
+ IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next();
+
+ chatcomponentselector.addSibling(ichatbasecomponent.f());
+ }
+
+ return chatcomponentselector;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (!(object instanceof ChatComponentSelector)) {
+ return false;
+ } else {
+ ChatComponentSelector chatcomponentselector = (ChatComponentSelector) object;
+
+ return this.b.equals(chatcomponentselector.b) && super.equals(object);
+ }
+ }
+
+ public String toString() {
+ return "SelectorComponent{pattern=\'" + this.b + '\'' + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}';
+ }
+
+ public IChatBaseComponent f() {
+ return this.h();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentText.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentText.java
new file mode 100644
index 0000000..42cb342
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentText.java
@@ -0,0 +1,55 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+
+public class ChatComponentText extends ChatBaseComponent {
+
+ private final String b;
+
+ public ChatComponentText(String s) {
+ this.b = s;
+ }
+
+ public String g() {
+ return this.b;
+ }
+
+ public String getText() {
+ return this.b;
+ }
+
+ public ChatComponentText h() {
+ ChatComponentText chatcomponenttext = new ChatComponentText(this.b);
+
+ chatcomponenttext.setChatModifier(this.getChatModifier().clone());
+ Iterator iterator = this.a().iterator();
+
+ while (iterator.hasNext()) {
+ IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next();
+
+ chatcomponenttext.addSibling(ichatbasecomponent.f());
+ }
+
+ return chatcomponenttext;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (!(object instanceof ChatComponentText)) {
+ return false;
+ } else {
+ ChatComponentText chatcomponenttext = (ChatComponentText) object;
+
+ return this.b.equals(chatcomponenttext.g()) && super.equals(object);
+ }
+ }
+
+ public String toString() {
+ return "TextComponent{text=\'" + this.b + '\'' + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}';
+ }
+
+ public IChatBaseComponent f() {
+ return this.h();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentUtils.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentUtils.java
new file mode 100644
index 0000000..941a604
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatComponentUtils.java
@@ -0,0 +1,70 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+import java.util.List;
+
+public class ChatComponentUtils {
+
+ public static IChatBaseComponent filterForDisplay(ICommandListener icommandlistener, IChatBaseComponent ichatbasecomponent, Entity entity) throws CommandException {
+ Object object = null;
+
+ if (ichatbasecomponent instanceof ChatComponentScore) {
+ ChatComponentScore chatcomponentscore = (ChatComponentScore) ichatbasecomponent;
+ String s = chatcomponentscore.g();
+
+ if (PlayerSelector.isPattern(s)) {
+ List list = PlayerSelector.getPlayers(icommandlistener, s, Entity.class);
+
+ if (list.size() != 1) {
+ throw new ExceptionEntityNotFound();
+ }
+
+ s = ((Entity) list.get(0)).getName();
+ }
+
+ object = entity != null && s.equals("*") ? new ChatComponentScore(entity.getName(), chatcomponentscore.h()) : new ChatComponentScore(s, chatcomponentscore.h());
+ ((ChatComponentScore) object).b(chatcomponentscore.getText());
+ } else if (ichatbasecomponent instanceof ChatComponentSelector) {
+ String s1 = ((ChatComponentSelector) ichatbasecomponent).g();
+
+ object = PlayerSelector.getPlayerNames(icommandlistener, s1);
+ if (object == null) {
+ object = new ChatComponentText("");
+ }
+ } else if (ichatbasecomponent instanceof ChatComponentText) {
+ object = new ChatComponentText(((ChatComponentText) ichatbasecomponent).g());
+ } else {
+ if (!(ichatbasecomponent instanceof ChatMessage)) {
+ return ichatbasecomponent;
+ }
+
+ Object[] aobject = ((ChatMessage) ichatbasecomponent).j();
+
+ for (int i = 0; i < aobject.length; ++i) {
+ Object object1 = aobject[i];
+
+ if (object1 instanceof IChatBaseComponent) {
+ aobject[i] = filterForDisplay(icommandlistener, (IChatBaseComponent) object1, entity);
+ }
+ }
+
+ object = new ChatMessage(((ChatMessage) ichatbasecomponent).i(), aobject);
+ }
+
+ ChatModifier chatmodifier = ichatbasecomponent.getChatModifier();
+
+ if (chatmodifier != null) {
+ ((IChatBaseComponent) object).setChatModifier(chatmodifier.clone());
+ }
+
+ Iterator iterator = ichatbasecomponent.a().iterator();
+
+ while (iterator.hasNext()) {
+ IChatBaseComponent ichatbasecomponent1 = (IChatBaseComponent) iterator.next();
+
+ ((IChatBaseComponent) object).addSibling(filterForDisplay(icommandlistener, ichatbasecomponent1, entity));
+ }
+
+ return (IChatBaseComponent) object;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatDeserializer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatDeserializer.java
new file mode 100644
index 0000000..4d679ea
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatDeserializer.java
@@ -0,0 +1,131 @@
+package net.minecraft.server;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSyntaxException;
+import org.apache.commons.lang3.StringUtils;
+
+public class ChatDeserializer {
+
+ public static boolean d(JsonObject jsonobject, String s) {
+ return !g(jsonobject, s) ? false : jsonobject.get(s).isJsonArray();
+ }
+
+ public static boolean g(JsonObject jsonobject, String s) {
+ return jsonobject == null ? false : jsonobject.get(s) != null;
+ }
+
+ public static String a(JsonElement jsonelement, String s) {
+ if (jsonelement.isJsonPrimitive()) {
+ return jsonelement.getAsString();
+ } else {
+ throw new JsonSyntaxException("Expected " + s + " to be a string, was " + d(jsonelement));
+ }
+ }
+
+ public static String h(JsonObject jsonobject, String s) {
+ if (jsonobject.has(s)) {
+ return a(jsonobject.get(s), s);
+ } else {
+ throw new JsonSyntaxException("Missing " + s + ", expected to find a string");
+ }
+ }
+
+ public static boolean b(JsonElement jsonelement, String s) {
+ if (jsonelement.isJsonPrimitive()) {
+ return jsonelement.getAsBoolean();
+ } else {
+ throw new JsonSyntaxException("Expected " + s + " to be a Boolean, was " + d(jsonelement));
+ }
+ }
+
+ public static boolean a(JsonObject jsonobject, String s, boolean flag) {
+ return jsonobject.has(s) ? b(jsonobject.get(s), s) : flag;
+ }
+
+ public static float d(JsonElement jsonelement, String s) {
+ if (jsonelement.isJsonPrimitive() && jsonelement.getAsJsonPrimitive().isNumber()) {
+ return jsonelement.getAsFloat();
+ } else {
+ throw new JsonSyntaxException("Expected " + s + " to be a Float, was " + d(jsonelement));
+ }
+ }
+
+ public static float a(JsonObject jsonobject, String s, float f) {
+ return jsonobject.has(s) ? d(jsonobject.get(s), s) : f;
+ }
+
+ public static int f(JsonElement jsonelement, String s) {
+ if (jsonelement.isJsonPrimitive() && jsonelement.getAsJsonPrimitive().isNumber()) {
+ return jsonelement.getAsInt();
+ } else {
+ throw new JsonSyntaxException("Expected " + s + " to be a Int, was " + d(jsonelement));
+ }
+ }
+
+ public static int m(JsonObject jsonobject, String s) {
+ if (jsonobject.has(s)) {
+ return f(jsonobject.get(s), s);
+ } else {
+ throw new JsonSyntaxException("Missing " + s + ", expected to find a Int");
+ }
+ }
+
+ public static int a(JsonObject jsonobject, String s, int i) {
+ return jsonobject.has(s) ? f(jsonobject.get(s), s) : i;
+ }
+
+ public static JsonObject l(JsonElement jsonelement, String s) {
+ if (jsonelement.isJsonObject()) {
+ return jsonelement.getAsJsonObject();
+ } else {
+ throw new JsonSyntaxException("Expected " + s + " to be a JsonObject, was " + d(jsonelement));
+ }
+ }
+
+ public static JsonArray m(JsonElement jsonelement, String s) {
+ if (jsonelement.isJsonArray()) {
+ return jsonelement.getAsJsonArray();
+ } else {
+ throw new JsonSyntaxException("Expected " + s + " to be a JsonArray, was " + d(jsonelement));
+ }
+ }
+
+ public static JsonArray t(JsonObject jsonobject, String s) {
+ if (jsonobject.has(s)) {
+ return m(jsonobject.get(s), s);
+ } else {
+ throw new JsonSyntaxException("Missing " + s + ", expected to find a JsonArray");
+ }
+ }
+
+ public static String d(JsonElement jsonelement) {
+ String s = StringUtils.abbreviateMiddle(String.valueOf(jsonelement), "...", 10);
+
+ if (jsonelement == null) {
+ return "null (missing)";
+ } else if (jsonelement.isJsonNull()) {
+ return "null (json)";
+ } else if (jsonelement.isJsonArray()) {
+ return "an array (" + s + ")";
+ } else if (jsonelement.isJsonObject()) {
+ return "an object (" + s + ")";
+ } else {
+ if (jsonelement.isJsonPrimitive()) {
+ JsonPrimitive jsonprimitive = jsonelement.getAsJsonPrimitive();
+
+ if (jsonprimitive.isNumber()) {
+ return "a number (" + s + ")";
+ }
+
+ if (jsonprimitive.isBoolean()) {
+ return "a boolean (" + s + ")";
+ }
+ }
+
+ return s;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatHoverable.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatHoverable.java
new file mode 100644
index 0000000..6c13f31
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatHoverable.java
@@ -0,0 +1,96 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Maps;
+import java.util.Map;
+
+public class ChatHoverable {
+
+ private final ChatHoverable.EnumHoverAction a;
+ private final IChatBaseComponent b;
+
+ public ChatHoverable(ChatHoverable.EnumHoverAction chathoverable_enumhoveraction, IChatBaseComponent ichatbasecomponent) {
+ this.a = chathoverable_enumhoveraction;
+ this.b = ichatbasecomponent;
+ }
+
+ public ChatHoverable.EnumHoverAction a() {
+ return this.a;
+ }
+
+ public IChatBaseComponent b() {
+ return this.b;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (object != null && this.getClass() == object.getClass()) {
+ ChatHoverable chathoverable = (ChatHoverable) object;
+
+ if (this.a != chathoverable.a) {
+ return false;
+ } else {
+ if (this.b != null) {
+ if (!this.b.equals(chathoverable.b)) {
+ return false;
+ }
+ } else if (chathoverable.b != null) {
+ return false;
+ }
+
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ public String toString() {
+ return "HoverEvent{action=" + this.a + ", value=\'" + this.b + '\'' + '}';
+ }
+
+ public int hashCode() {
+ int i = this.a.hashCode();
+
+ i = 31 * i + (this.b != null ? this.b.hashCode() : 0);
+ return i;
+ }
+
+ public static enum EnumHoverAction {
+
+ SHOW_TEXT("show_text", true), SHOW_ACHIEVEMENT("show_achievement", true), SHOW_ITEM("show_item", true), SHOW_ENTITY("show_entity", true);
+
+ private static final Map e = Maps.newHashMap();
+ private final boolean f;
+ private final String g;
+
+ private EnumHoverAction(String s, boolean flag) {
+ this.g = s;
+ this.f = flag;
+ }
+
+ public boolean a() {
+ return this.f;
+ }
+
+ public String b() {
+ return this.g;
+ }
+
+ public static ChatHoverable.EnumHoverAction a(String s) {
+ return (ChatHoverable.EnumHoverAction) ChatHoverable.EnumHoverAction.e.get(s);
+ }
+
+ static {
+ ChatHoverable.EnumHoverAction[] achathoverable_enumhoveraction = values();
+ int i = achathoverable_enumhoveraction.length;
+
+ for (int j = 0; j < i; ++j) {
+ ChatHoverable.EnumHoverAction chathoverable_enumhoveraction = achathoverable_enumhoveraction[j];
+
+ ChatHoverable.EnumHoverAction.e.put(chathoverable_enumhoveraction.b(), chathoverable_enumhoveraction);
+ }
+
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessage.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessage.java
new file mode 100644
index 0000000..6b6936f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessage.java
@@ -0,0 +1,242 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+import java.util.Arrays;
+import java.util.IllegalFormatException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ChatMessage extends ChatBaseComponent {
+
+ private final String d;
+ private final Object[] e;
+ private final Object f = new Object();
+ private long g = -1L;
+ List b = Lists.newArrayList();
+ public static final Pattern c = Pattern.compile("%(?:(\\d+)\\$)?([A-Za-z%]|$)");
+
+ public ChatMessage(String s, Object... aobject) {
+ this.d = s;
+ this.e = aobject;
+ Object[] aobject1 = aobject;
+ int i = aobject.length;
+
+ for (int j = 0; j < i; ++j) {
+ Object object = aobject1[j];
+
+ if (object instanceof IChatBaseComponent) {
+ ((IChatBaseComponent) object).getChatModifier().setChatModifier(this.getChatModifier());
+ }
+ }
+
+ }
+
+ synchronized void g() {
+ Object object = this.f;
+
+ synchronized (this.f) {
+ long i = LocaleI18n.a();
+
+ if (i == this.g) {
+ return;
+ }
+
+ this.g = i;
+ this.b.clear();
+ }
+
+ try {
+ this.b(LocaleI18n.get(this.d));
+ } catch (ChatMessageException chatmessageexception) {
+ this.b.clear();
+
+ try {
+ this.b(LocaleI18n.b(this.d));
+ } catch (ChatMessageException chatmessageexception1) {
+ throw chatmessageexception;
+ }
+ }
+
+ }
+
+ protected void b(String s) {
+ boolean flag = false;
+ Matcher matcher = ChatMessage.c.matcher(s);
+ int i = 0;
+ int j = 0;
+
+ try {
+ int k;
+
+ for (; matcher.find(j); j = k) {
+ int l = matcher.start();
+
+ k = matcher.end();
+ if (l > j) {
+ ChatComponentText chatcomponenttext = new ChatComponentText(String.format(s.substring(j, l), new Object[0]));
+
+ chatcomponenttext.getChatModifier().setChatModifier(this.getChatModifier());
+ this.b.add(chatcomponenttext);
+ }
+
+ String s1 = matcher.group(2);
+ String s2 = s.substring(l, k);
+
+ if ("%".equals(s1) && "%%".equals(s2)) {
+ ChatComponentText chatcomponenttext1 = new ChatComponentText("%");
+
+ chatcomponenttext1.getChatModifier().setChatModifier(this.getChatModifier());
+ this.b.add(chatcomponenttext1);
+ } else {
+ if (!"s".equals(s1)) {
+ throw new ChatMessageException(this, "Unsupported format: \'" + s2 + "\'");
+ }
+
+ String s3 = matcher.group(1);
+ int i1 = s3 != null ? Integer.parseInt(s3) - 1 : i++;
+
+ if (i1 < this.e.length) {
+ this.b.add(this.a(i1));
+ }
+ }
+ }
+
+ if (j < s.length()) {
+ ChatComponentText chatcomponenttext2 = new ChatComponentText(String.format(s.substring(j), new Object[0]));
+
+ chatcomponenttext2.getChatModifier().setChatModifier(this.getChatModifier());
+ this.b.add(chatcomponenttext2);
+ }
+
+ } catch (IllegalFormatException illegalformatexception) {
+ throw new ChatMessageException(this, illegalformatexception);
+ }
+ }
+
+ private IChatBaseComponent a(int i) {
+ if (i >= this.e.length) {
+ throw new ChatMessageException(this, i);
+ } else {
+ Object object = this.e[i];
+ Object object1;
+
+ if (object instanceof IChatBaseComponent) {
+ object1 = (IChatBaseComponent) object;
+ } else {
+ object1 = new ChatComponentText(object == null ? "null" : object.toString());
+ ((IChatBaseComponent) object1).getChatModifier().setChatModifier(this.getChatModifier());
+ }
+
+ return (IChatBaseComponent) object1;
+ }
+ }
+
+ public IChatBaseComponent setChatModifier(ChatModifier chatmodifier) {
+ super.setChatModifier(chatmodifier);
+ Object[] aobject = this.e;
+ int i = aobject.length;
+
+ for (int j = 0; j < i; ++j) {
+ Object object = aobject[j];
+
+ if (object instanceof IChatBaseComponent) {
+ ((IChatBaseComponent) object).getChatModifier().setChatModifier(this.getChatModifier());
+ }
+ }
+
+ if (this.g > -1L) {
+ Iterator iterator = this.b.iterator();
+
+ while (iterator.hasNext()) {
+ IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next();
+
+ ichatbasecomponent.getChatModifier().setChatModifier(chatmodifier);
+ }
+ }
+
+ return this;
+ }
+
+ public Iterator iterator() {
+ this.g();
+ return Iterators.concat(a((Iterable) this.b), a((Iterable) this.a));
+ }
+
+ public String getText() {
+ this.g();
+ StringBuilder stringbuilder = new StringBuilder();
+ Iterator iterator = this.b.iterator();
+
+ while (iterator.hasNext()) {
+ IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next();
+
+ stringbuilder.append(ichatbasecomponent.getText());
+ }
+
+ return stringbuilder.toString();
+ }
+
+ public ChatMessage h() {
+ Object[] aobject = new Object[this.e.length];
+
+ for (int i = 0; i < this.e.length; ++i) {
+ if (this.e[i] instanceof IChatBaseComponent) {
+ aobject[i] = ((IChatBaseComponent) this.e[i]).f();
+ } else {
+ aobject[i] = this.e[i];
+ }
+ }
+
+ ChatMessage chatmessage = new ChatMessage(this.d, aobject);
+
+ chatmessage.setChatModifier(this.getChatModifier().clone());
+ Iterator iterator = this.a().iterator();
+
+ while (iterator.hasNext()) {
+ IChatBaseComponent ichatbasecomponent = (IChatBaseComponent) iterator.next();
+
+ chatmessage.addSibling(ichatbasecomponent.f());
+ }
+
+ return chatmessage;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (!(object instanceof ChatMessage)) {
+ return false;
+ } else {
+ ChatMessage chatmessage = (ChatMessage) object;
+
+ return Arrays.equals(this.e, chatmessage.e) && this.d.equals(chatmessage.d) && super.equals(object);
+ }
+ }
+
+ public int hashCode() {
+ int i = super.hashCode();
+
+ i = 31 * i + this.d.hashCode();
+ i = 31 * i + Arrays.hashCode(this.e);
+ return i;
+ }
+
+ public String toString() {
+ return "TranslatableComponent{key=\'" + this.d + '\'' + ", args=" + Arrays.toString(this.e) + ", siblings=" + this.a + ", style=" + this.getChatModifier() + '}';
+ }
+
+ public String i() {
+ return this.d;
+ }
+
+ public Object[] j() {
+ return this.e;
+ }
+
+ public IChatBaseComponent f() {
+ return this.h();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessageException.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessageException.java
new file mode 100644
index 0000000..65a5225
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatMessageException.java
@@ -0,0 +1,16 @@
+package net.minecraft.server;
+
+public class ChatMessageException extends IllegalArgumentException {
+
+ public ChatMessageException(ChatMessage chatmessage, String s) {
+ super(String.format("Error parsing: %s: %s", new Object[] { chatmessage, s}));
+ }
+
+ public ChatMessageException(ChatMessage chatmessage, int i) {
+ super(String.format("Invalid index %d requested for %s", new Object[] { Integer.valueOf(i), chatmessage}));
+ }
+
+ public ChatMessageException(ChatMessage chatmessage, Throwable throwable) {
+ super(String.format("Error while parsing: %s", new Object[] { chatmessage}), throwable);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChatModifier.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChatTypeAdapterFactory.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChatTypeAdapterFactory.java
new file mode 100644
index 0000000..2f2dbcd
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChatTypeAdapterFactory.java
@@ -0,0 +1,60 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Maps;
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonToken;
+import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Locale;
+
+public class ChatTypeAdapterFactory implements TypeAdapterFactory {
+
+ public ChatTypeAdapterFactory() {}
+
+ public TypeAdapter create(Gson gson, TypeToken typetoken) {
+ Class super T> oclass = typetoken.getRawType();
+
+ if (!oclass.isEnum()) {
+ return null;
+ } else {
+ final HashMap hashmap = Maps.newHashMap();
+ Object[] aobject = oclass.getEnumConstants();
+ int i = aobject.length;
+
+ for (int j = 0; j < i; ++j) {
+ Object object = aobject[j];
+
+ hashmap.put(this.a(object), (T) object);
+ }
+
+ return new TypeAdapter() {
+ public void write(JsonWriter jsonwriter, T t0) throws IOException {
+ if (t0 == null) {
+ jsonwriter.nullValue();
+ } else {
+ jsonwriter.value(ChatTypeAdapterFactory.this.a(t0));
+ }
+
+ }
+
+ public T read(JsonReader jsonreader) throws IOException {
+ if (jsonreader.peek() == JsonToken.NULL) {
+ jsonreader.nextNull();
+ return null;
+ } else {
+ return hashmap.get(jsonreader.nextString());
+ }
+ }
+ };
+ }
+ }
+
+ private String a(Object object) {
+ return object instanceof Enum ? ((Enum) object).name().toLowerCase(Locale.US) : object.toString().toLowerCase(Locale.US);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChestLock.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChestLock.java
new file mode 100644
index 0000000..cfee9f0
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChestLock.java
@@ -0,0 +1,33 @@
+package net.minecraft.server;
+
+public class ChestLock {
+
+ public static final ChestLock a = new ChestLock("");
+ private final String b;
+
+ public ChestLock(String s) {
+ this.b = s;
+ }
+
+ public boolean a() {
+ return this.b == null || this.b.isEmpty();
+ }
+
+ public String b() {
+ return this.b;
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ nbttagcompound.setString("Lock", this.b);
+ }
+
+ public static ChestLock b(NBTTagCompound nbttagcompound) {
+ if (nbttagcompound.hasKeyOfType("Lock", 8)) {
+ String s = nbttagcompound.getString("Lock");
+
+ return new ChestLock(s);
+ } else {
+ return ChestLock.a;
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Chunk.java b/eSpigot-Server/src/main/java/net/minecraft/server/Chunk.java
similarity index 99%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Chunk.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/Chunk.java
index 7d12ba3..0f79fef 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/Chunk.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/Chunk.java
@@ -145,6 +145,8 @@ public class Chunk {
}
// CraftBukkit end
+ private final ChunkCoordIntPair chunkCoords; // PandaSpigot
+
public Chunk(World world, int i, int j) {
this.sections = new ChunkSection[16];
this.e = new byte[256];
@@ -171,6 +173,7 @@ public class Chunk {
if (!(this instanceof EmptyChunk)) {
this.bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this);
}
+ this.chunkCoords = new ChunkCoordIntPair(this.locX, this.locZ); // PandaSpigot
}
public org.bukkit.Chunk bukkitChunk;
@@ -1214,7 +1217,7 @@ public class Chunk {
}
public ChunkCoordIntPair j() {
- return new ChunkCoordIntPair(this.locX, this.locZ);
+ return this.chunkCoords; // PandaSpigot
}
public boolean c(int i, int j) {
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCache.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCache.java
new file mode 100644
index 0000000..45d385d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCache.java
@@ -0,0 +1,75 @@
+package net.minecraft.server;
+
+public class ChunkCache implements IBlockAccess {
+
+ protected int a;
+ protected int b;
+ protected Chunk[][] c;
+ protected boolean d;
+ protected World e;
+
+ public ChunkCache(World world, BlockPosition blockposition, BlockPosition blockposition1, int i) {
+ this.e = world;
+ this.a = blockposition.getX() - i >> 4;
+ this.b = blockposition.getZ() - i >> 4;
+ int j = blockposition1.getX() + i >> 4;
+ int k = blockposition1.getZ() + i >> 4;
+
+ this.c = new Chunk[j - this.a + 1][k - this.b + 1];
+ this.d = true;
+
+ int l;
+ int i1;
+
+ for (l = this.a; l <= j; ++l) {
+ for (i1 = this.b; i1 <= k; ++i1) {
+ this.c[l - this.a][i1 - this.b] = world.getChunkAt(l, i1);
+ }
+ }
+
+ for (l = blockposition.getX() >> 4; l <= blockposition1.getX() >> 4; ++l) {
+ for (i1 = blockposition.getZ() >> 4; i1 <= blockposition1.getZ() >> 4; ++i1) {
+ Chunk chunk = this.c[l - this.a][i1 - this.b];
+
+ if (chunk != null && !chunk.c(blockposition.getY(), blockposition1.getY())) {
+ this.d = false;
+ }
+ }
+ }
+
+ }
+
+ public TileEntity getTileEntity(BlockPosition blockposition) {
+ int i = (blockposition.getX() >> 4) - this.a;
+ int j = (blockposition.getZ() >> 4) - this.b;
+
+ return this.c[i][j].a(blockposition, Chunk.EnumTileEntityState.IMMEDIATE);
+ }
+
+ public IBlockData getType(BlockPosition blockposition) {
+ if (blockposition.getY() >= 0 && blockposition.getY() < 256) {
+ int i = (blockposition.getX() >> 4) - this.a;
+ int j = (blockposition.getZ() >> 4) - this.b;
+
+ if (i >= 0 && i < this.c.length && j >= 0 && j < this.c[i].length) {
+ Chunk chunk = this.c[i][j];
+
+ if (chunk != null) {
+ return chunk.getBlockData(blockposition);
+ }
+ }
+ }
+
+ return Blocks.AIR.getBlockData();
+ }
+
+ public boolean isEmpty(BlockPosition blockposition) {
+ return this.getType(blockposition).getBlock().getMaterial() == Material.AIR;
+ }
+
+ public int getBlockPower(BlockPosition blockposition, EnumDirection enumdirection) {
+ IBlockData iblockdata = this.getType(blockposition);
+
+ return iblockdata.getBlock().b((IBlockAccess) this, blockposition, iblockdata, enumdirection);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCoordIntPair.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCoordIntPair.java
new file mode 100644
index 0000000..652c079
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkCoordIntPair.java
@@ -0,0 +1,71 @@
+package net.minecraft.server;
+
+public class ChunkCoordIntPair {
+
+ public final int x;
+ public final int z;
+
+ public ChunkCoordIntPair(int i, int j) {
+ this.x = i;
+ this.z = j;
+ }
+
+ public static long a(int i, int j) {
+ return (long) i & 4294967295L | ((long) j & 4294967295L) << 32;
+ }
+
+ public int hashCode() {
+ int i = 1664525 * this.x + 1013904223;
+ int j = 1664525 * (this.z ^ -559038737) + 1013904223;
+
+ return i ^ j;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (!(object instanceof ChunkCoordIntPair)) {
+ return false;
+ } else {
+ ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) object;
+
+ return this.x == chunkcoordintpair.x && this.z == chunkcoordintpair.z;
+ }
+ }
+
+ public int a() {
+ return (this.x << 4) + 8;
+ }
+
+ public int b() {
+ return (this.z << 4) + 8;
+ }
+
+ public int c() {
+ return this.x << 4;
+ }
+
+ public int d() {
+ return this.z << 4;
+ }
+
+ public int e() {
+ return (this.x << 4) + 15;
+ }
+
+ public int f() {
+ return (this.z << 4) + 15;
+ }
+
+ public BlockPosition a(int i, int j, int k) {
+ return new BlockPosition((this.x << 4) + i, j, (this.z << 4) + k);
+ }
+
+ public BlockPosition a(int i) {
+ return new BlockPosition(this.a(), i, this.b());
+ }
+
+ public String toString() {
+ return "[" + this.x + ", " + this.z + "]";
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderDebug.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderDebug.java
new file mode 100644
index 0000000..c6230ab
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderDebug.java
@@ -0,0 +1,129 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.Iterator;
+import java.util.List;
+
+public class ChunkProviderDebug implements IChunkProvider {
+
+ private static final List a = Lists.newArrayList();
+ private static final int b;
+ private static final int c;
+ private final World d;
+
+ public ChunkProviderDebug(World world) {
+ this.d = world;
+ }
+
+ public Chunk getOrCreateChunk(int i, int j) {
+ ChunkSnapshot chunksnapshot = new ChunkSnapshot();
+
+ int k;
+
+ for (int l = 0; l < 16; ++l) {
+ for (int i1 = 0; i1 < 16; ++i1) {
+ int j1 = i * 16 + l;
+
+ k = j * 16 + i1;
+ chunksnapshot.a(l, 60, i1, Blocks.BARRIER.getBlockData());
+ IBlockData iblockdata = b(j1, k);
+
+ if (iblockdata != null) {
+ chunksnapshot.a(l, 70, i1, iblockdata);
+ }
+ }
+ }
+
+ Chunk chunk = new Chunk(this.d, chunksnapshot, i, j);
+
+ chunk.initLighting();
+ BiomeBase[] abiomebase = this.d.getWorldChunkManager().getBiomeBlock((BiomeBase[]) null, i * 16, j * 16, 16, 16);
+ byte[] abyte = chunk.getBiomeIndex();
+
+ for (k = 0; k < abyte.length; ++k) {
+ abyte[k] = (byte) abiomebase[k].id;
+ }
+
+ chunk.initLighting();
+ return chunk;
+ }
+
+ public static IBlockData b(int i, int j) {
+ IBlockData iblockdata = null;
+
+ if (i > 0 && j > 0 && i % 2 != 0 && j % 2 != 0) {
+ i /= 2;
+ j /= 2;
+ if (i <= ChunkProviderDebug.b && j <= ChunkProviderDebug.c) {
+ int k = MathHelper.a(i * ChunkProviderDebug.b + j);
+
+ if (k < ChunkProviderDebug.a.size()) {
+ iblockdata = (IBlockData) ChunkProviderDebug.a.get(k);
+ }
+ }
+ }
+
+ return iblockdata;
+ }
+
+ public boolean isChunkLoaded(int i, int j) {
+ return true;
+ }
+
+ public void getChunkAt(IChunkProvider ichunkprovider, int i, int j) {}
+
+ public boolean a(IChunkProvider ichunkprovider, Chunk chunk, int i, int j) {
+ return false;
+ }
+
+ public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) {
+ return true;
+ }
+
+ public void c() {}
+
+ public boolean unloadChunks() {
+ return false;
+ }
+
+ public boolean canSave() {
+ return true;
+ }
+
+ public String getName() {
+ return "DebugLevelSource";
+ }
+
+ public List getMobsFor(EnumCreatureType enumcreaturetype, BlockPosition blockposition) {
+ BiomeBase biomebase = this.d.getBiome(blockposition);
+
+ return biomebase.getMobs(enumcreaturetype);
+ }
+
+ public BlockPosition findNearestMapFeature(World world, String s, BlockPosition blockposition) {
+ return null;
+ }
+
+ public int getLoadedChunks() {
+ return 0;
+ }
+
+ public void recreateStructures(Chunk chunk, int i, int j) {}
+
+ public Chunk getChunkAt(BlockPosition blockposition) {
+ return this.getOrCreateChunk(blockposition.getX() >> 4, blockposition.getZ() >> 4);
+ }
+
+ static {
+ Iterator iterator = Block.REGISTRY.iterator();
+
+ while (iterator.hasNext()) {
+ Block block = (Block) iterator.next();
+
+ ChunkProviderDebug.a.addAll(block.P().a());
+ }
+
+ b = MathHelper.f(MathHelper.c((float) ChunkProviderDebug.a.size()));
+ c = MathHelper.f((float) ChunkProviderDebug.a.size() / (float) ChunkProviderDebug.b);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderFlat.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderHell.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderServer.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderTheEnd.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderTheEnd.java
new file mode 100644
index 0000000..4f2c865
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkProviderTheEnd.java
@@ -0,0 +1,272 @@
+package net.minecraft.server;
+
+import java.util.List;
+import java.util.Random;
+
+public class ChunkProviderTheEnd implements IChunkProvider {
+
+ private Random h;
+ private NoiseGeneratorOctaves i;
+ private NoiseGeneratorOctaves j;
+ private NoiseGeneratorOctaves k;
+ public NoiseGeneratorOctaves a;
+ public NoiseGeneratorOctaves b;
+ private World l;
+ private double[] m;
+ private BiomeBase[] n;
+ double[] c;
+ double[] d;
+ double[] e;
+ double[] f;
+ double[] g;
+
+ public ChunkProviderTheEnd(World world, long i) {
+ this.l = world;
+ this.h = new Random(i);
+ this.i = new NoiseGeneratorOctaves(this.h, 16);
+ this.j = new NoiseGeneratorOctaves(this.h, 16);
+ this.k = new NoiseGeneratorOctaves(this.h, 8);
+ this.a = new NoiseGeneratorOctaves(this.h, 10);
+ this.b = new NoiseGeneratorOctaves(this.h, 16);
+ }
+
+ public void a(int i, int j, ChunkSnapshot chunksnapshot) {
+ byte b0 = 2;
+ int k = b0 + 1;
+ byte b1 = 33;
+ int l = b0 + 1;
+
+ this.m = this.a(this.m, i * b0, 0, j * b0, k, b1, l);
+
+ for (int i1 = 0; i1 < b0; ++i1) {
+ for (int j1 = 0; j1 < b0; ++j1) {
+ for (int k1 = 0; k1 < 32; ++k1) {
+ double d0 = 0.25D;
+ double d1 = this.m[((i1 + 0) * l + j1 + 0) * b1 + k1 + 0];
+ double d2 = this.m[((i1 + 0) * l + j1 + 1) * b1 + k1 + 0];
+ double d3 = this.m[((i1 + 1) * l + j1 + 0) * b1 + k1 + 0];
+ double d4 = this.m[((i1 + 1) * l + j1 + 1) * b1 + k1 + 0];
+ double d5 = (this.m[((i1 + 0) * l + j1 + 0) * b1 + k1 + 1] - d1) * d0;
+ double d6 = (this.m[((i1 + 0) * l + j1 + 1) * b1 + k1 + 1] - d2) * d0;
+ double d7 = (this.m[((i1 + 1) * l + j1 + 0) * b1 + k1 + 1] - d3) * d0;
+ double d8 = (this.m[((i1 + 1) * l + j1 + 1) * b1 + k1 + 1] - d4) * d0;
+
+ for (int l1 = 0; l1 < 4; ++l1) {
+ double d9 = 0.125D;
+ double d10 = d1;
+ double d11 = d2;
+ double d12 = (d3 - d1) * d9;
+ double d13 = (d4 - d2) * d9;
+
+ for (int i2 = 0; i2 < 8; ++i2) {
+ double d14 = 0.125D;
+ double d15 = d10;
+ double d16 = (d11 - d10) * d14;
+
+ for (int j2 = 0; j2 < 8; ++j2) {
+ IBlockData iblockdata = null;
+
+ if (d15 > 0.0D) {
+ iblockdata = Blocks.END_STONE.getBlockData();
+ }
+
+ int k2 = i2 + i1 * 8;
+ int l2 = l1 + k1 * 4;
+ int i3 = j2 + j1 * 8;
+
+ chunksnapshot.a(k2, l2, i3, iblockdata);
+ d15 += d16;
+ }
+
+ d10 += d12;
+ d11 += d13;
+ }
+
+ d1 += d5;
+ d2 += d6;
+ d3 += d7;
+ d4 += d8;
+ }
+ }
+ }
+ }
+
+ }
+
+ public void a(ChunkSnapshot chunksnapshot) {
+ for (int i = 0; i < 16; ++i) {
+ for (int j = 0; j < 16; ++j) {
+ byte b0 = 1;
+ int k = -1;
+ IBlockData iblockdata = Blocks.END_STONE.getBlockData();
+ IBlockData iblockdata1 = Blocks.END_STONE.getBlockData();
+
+ for (int l = 127; l >= 0; --l) {
+ IBlockData iblockdata2 = chunksnapshot.a(i, l, j);
+
+ if (iblockdata2.getBlock().getMaterial() == Material.AIR) {
+ k = -1;
+ } else if (iblockdata2.getBlock() == Blocks.STONE) {
+ if (k == -1) {
+ if (b0 <= 0) {
+ iblockdata = Blocks.AIR.getBlockData();
+ iblockdata1 = Blocks.END_STONE.getBlockData();
+ }
+
+ k = b0;
+ if (l >= 0) {
+ chunksnapshot.a(i, l, j, iblockdata);
+ } else {
+ chunksnapshot.a(i, l, j, iblockdata1);
+ }
+ } else if (k > 0) {
+ --k;
+ chunksnapshot.a(i, l, j, iblockdata1);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ public Chunk getOrCreateChunk(int i, int j) {
+ this.h.setSeed((long) i * 341873128712L + (long) j * 132897987541L);
+ ChunkSnapshot chunksnapshot = new ChunkSnapshot();
+
+ this.n = this.l.getWorldChunkManager().getBiomeBlock(this.n, i * 16, j * 16, 16, 16);
+ this.a(i, j, chunksnapshot);
+ this.a(chunksnapshot);
+ Chunk chunk = new Chunk(this.l, chunksnapshot, i, j);
+ byte[] abyte = chunk.getBiomeIndex();
+
+ for (int k = 0; k < abyte.length; ++k) {
+ abyte[k] = (byte) this.n[k].id;
+ }
+
+ chunk.initLighting();
+ return chunk;
+ }
+
+ private double[] a(double[] adouble, int i, int j, int k, int l, int i1, int j1) {
+ if (adouble == null) {
+ adouble = new double[l * i1 * j1];
+ }
+
+ double d0 = 684.412D;
+ double d1 = 684.412D;
+
+ this.f = this.a.a(this.f, i, k, l, j1, 1.121D, 1.121D, 0.5D);
+ this.g = this.b.a(this.g, i, k, l, j1, 200.0D, 200.0D, 0.5D);
+ d0 *= 2.0D;
+ this.c = this.k.a(this.c, i, j, k, l, i1, j1, d0 / 80.0D, d1 / 160.0D, d0 / 80.0D);
+ this.d = this.i.a(this.d, i, j, k, l, i1, j1, d0, d1, d0);
+ this.e = this.j.a(this.e, i, j, k, l, i1, j1, d0, d1, d0);
+ int k1 = 0;
+
+ for (int l1 = 0; l1 < l; ++l1) {
+ for (int i2 = 0; i2 < j1; ++i2) {
+ float f = (float) (l1 + i) / 1.0F;
+ float f1 = (float) (i2 + k) / 1.0F;
+ float f2 = 100.0F - MathHelper.c(f * f + f1 * f1) * 8.0F;
+
+ if (f2 > 80.0F) {
+ f2 = 80.0F;
+ }
+
+ if (f2 < -100.0F) {
+ f2 = -100.0F;
+ }
+
+ for (int j2 = 0; j2 < i1; ++j2) {
+ double d2 = 0.0D;
+ double d3 = this.d[k1] / 512.0D;
+ double d4 = this.e[k1] / 512.0D;
+ double d5 = (this.c[k1] / 10.0D + 1.0D) / 2.0D;
+
+ if (d5 < 0.0D) {
+ d2 = d3;
+ } else if (d5 > 1.0D) {
+ d2 = d4;
+ } else {
+ d2 = d3 + (d4 - d3) * d5;
+ }
+
+ d2 -= 8.0D;
+ d2 += (double) f2;
+ byte b0 = 2;
+ double d6;
+
+ if (j2 > i1 / 2 - b0) {
+ d6 = (double) ((float) (j2 - (i1 / 2 - b0)) / 64.0F);
+ d6 = MathHelper.a(d6, 0.0D, 1.0D);
+ d2 = d2 * (1.0D - d6) + -3000.0D * d6;
+ }
+
+ b0 = 8;
+ if (j2 < b0) {
+ d6 = (double) ((float) (b0 - j2) / ((float) b0 - 1.0F));
+ d2 = d2 * (1.0D - d6) + -30.0D * d6;
+ }
+
+ adouble[k1] = d2;
+ ++k1;
+ }
+ }
+ }
+
+ return adouble;
+ }
+
+ public boolean isChunkLoaded(int i, int j) {
+ return true;
+ }
+
+ public void getChunkAt(IChunkProvider ichunkprovider, int i, int j) {
+ BlockFalling.instaFall = true;
+ BlockPosition blockposition = new BlockPosition(i * 16, 0, j * 16);
+
+ this.l.getBiome(blockposition.a(16, 0, 16)).a(this.l, this.l.random, blockposition);
+ BlockFalling.instaFall = false;
+ }
+
+ public boolean a(IChunkProvider ichunkprovider, Chunk chunk, int i, int j) {
+ return false;
+ }
+
+ public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) {
+ return true;
+ }
+
+ public void c() {}
+
+ public boolean unloadChunks() {
+ return false;
+ }
+
+ public boolean canSave() {
+ return true;
+ }
+
+ public String getName() {
+ return "RandomLevelSource";
+ }
+
+ public List getMobsFor(EnumCreatureType enumcreaturetype, BlockPosition blockposition) {
+ return this.l.getBiome(blockposition).getMobs(enumcreaturetype);
+ }
+
+ public BlockPosition findNearestMapFeature(World world, String s, BlockPosition blockposition) {
+ return null;
+ }
+
+ public int getLoadedChunks() {
+ return 0;
+ }
+
+ public void recreateStructures(Chunk chunk, int i, int j) {}
+
+ public Chunk getChunkAt(BlockPosition blockposition) {
+ return this.getOrCreateChunk(blockposition.getX() >> 4, blockposition.getZ() >> 4);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkRegionLoader.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ChunkSection.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSnapshot.java b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSnapshot.java
new file mode 100644
index 0000000..4ce9e5d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ChunkSnapshot.java
@@ -0,0 +1,41 @@
+package net.minecraft.server;
+
+public class ChunkSnapshot {
+
+ private final short[] a = new short[65536];
+ private final IBlockData b;
+
+ public ChunkSnapshot() {
+ this.b = Blocks.AIR.getBlockData();
+ }
+
+ public IBlockData a(int i, int j, int k) {
+ int l = i << 12 | k << 8 | j;
+
+ return this.a(l);
+ }
+
+ public IBlockData a(int i) {
+ if (i >= 0 && i < this.a.length) {
+ IBlockData iblockdata = (IBlockData) Block.d.a(this.a[i]);
+
+ return iblockdata != null ? iblockdata : this.b;
+ } else {
+ throw new IndexOutOfBoundsException("The coordinate is out of range");
+ }
+ }
+
+ public void a(int i, int j, int k, IBlockData iblockdata) {
+ int l = i << 12 | k << 8 | j;
+
+ this.a(l, iblockdata);
+ }
+
+ public void a(int i, IBlockData iblockdata) {
+ if (i >= 0 && i < this.a.length) {
+ this.a[i] = (short) Block.d.b(iblockdata);
+ } else {
+ throw new IndexOutOfBoundsException("The coordinate is out of range");
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CombatEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/CombatEntry.java
new file mode 100644
index 0000000..a0a1d98
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CombatEntry.java
@@ -0,0 +1,44 @@
+package net.minecraft.server;
+
+public class CombatEntry {
+
+ private final DamageSource a;
+ private final int b;
+ private final float c;
+ private final float d;
+ private final String e;
+ private final float f;
+
+ public CombatEntry(DamageSource damagesource, int i, float f, float f1, String s, float f2) {
+ this.a = damagesource;
+ this.b = i;
+ this.c = f1;
+ this.d = f;
+ this.e = s;
+ this.f = f2;
+ }
+
+ public DamageSource a() {
+ return this.a;
+ }
+
+ public float c() {
+ return this.c;
+ }
+
+ public boolean f() {
+ return this.a.getEntity() instanceof EntityLiving;
+ }
+
+ public String g() {
+ return this.e;
+ }
+
+ public IChatBaseComponent h() {
+ return this.a().getEntity() == null ? null : this.a().getEntity().getScoreboardDisplayName();
+ }
+
+ public float i() {
+ return this.a == DamageSource.OUT_OF_WORLD ? Float.MAX_VALUE : this.f;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CombatTracker.java b/eSpigot-Server/src/main/java/net/minecraft/server/CombatTracker.java
new file mode 100644
index 0000000..711632e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CombatTracker.java
@@ -0,0 +1,195 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.Iterator;
+import java.util.List;
+
+public class CombatTracker {
+
+ private final List a = Lists.newArrayList();
+ private final EntityLiving b;
+ private int c;
+ private int d;
+ private int e;
+ private boolean f;
+ private boolean g;
+ private String h;
+
+ public CombatTracker(EntityLiving entityliving) {
+ this.b = entityliving;
+ }
+
+ public void a() {
+ this.j();
+ if (this.b.k_()) {
+ Block block = this.b.world.getType(new BlockPosition(this.b.locX, this.b.getBoundingBox().b, this.b.locZ)).getBlock();
+
+ if (block == Blocks.LADDER) {
+ this.h = "ladder";
+ } else if (block == Blocks.VINE) {
+ this.h = "vines";
+ }
+ } else if (this.b.V()) {
+ this.h = "water";
+ }
+
+ }
+
+ public void a(DamageSource damagesource, float f, float f1) {
+ this.g();
+ this.a();
+ CombatEntry combatentry = new CombatEntry(damagesource, this.b.ticksLived, f, f1, this.h, this.b.fallDistance);
+
+ this.a.add(combatentry);
+ this.c = this.b.ticksLived;
+ this.g = true;
+ if (combatentry.f() && !this.f && this.b.isAlive()) {
+ this.f = true;
+ this.d = this.b.ticksLived;
+ this.e = this.d;
+ this.b.enterCombat();
+ }
+
+ }
+
+ public IChatBaseComponent b() {
+ if (this.a.size() == 0) {
+ return new ChatMessage("death.attack.generic", new Object[] { this.b.getScoreboardDisplayName()});
+ } else {
+ CombatEntry combatentry = this.i();
+ CombatEntry combatentry1 = (CombatEntry) this.a.get(this.a.size() - 1);
+ IChatBaseComponent ichatbasecomponent = combatentry1.h();
+ Entity entity = combatentry1.a().getEntity();
+ Object object;
+
+ if (combatentry != null && combatentry1.a() == DamageSource.FALL) {
+ IChatBaseComponent ichatbasecomponent1 = combatentry.h();
+
+ if (combatentry.a() != DamageSource.FALL && combatentry.a() != DamageSource.OUT_OF_WORLD) {
+ if (ichatbasecomponent1 != null && (ichatbasecomponent == null || !ichatbasecomponent1.equals(ichatbasecomponent))) {
+ Entity entity1 = combatentry.a().getEntity();
+ ItemStack itemstack = entity1 instanceof EntityLiving ? ((EntityLiving) entity1).bA() : null;
+
+ if (itemstack != null && itemstack.hasName()) {
+ object = new ChatMessage("death.fell.assist.item", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent1, itemstack.C()});
+ } else {
+ object = new ChatMessage("death.fell.assist", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent1});
+ }
+ } else if (ichatbasecomponent != null) {
+ ItemStack itemstack1 = entity instanceof EntityLiving ? ((EntityLiving) entity).bA() : null;
+
+ if (itemstack1 != null && itemstack1.hasName()) {
+ object = new ChatMessage("death.fell.finish.item", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent, itemstack1.C()});
+ } else {
+ object = new ChatMessage("death.fell.finish", new Object[] { this.b.getScoreboardDisplayName(), ichatbasecomponent});
+ }
+ } else {
+ object = new ChatMessage("death.fell.killer", new Object[] { this.b.getScoreboardDisplayName()});
+ }
+ } else {
+ object = new ChatMessage("death.fell.accident." + this.a(combatentry), new Object[] { this.b.getScoreboardDisplayName()});
+ }
+ } else {
+ object = combatentry1.a().getLocalizedDeathMessage(this.b);
+ }
+
+ return (IChatBaseComponent) object;
+ }
+ }
+
+ public EntityLiving c() {
+ EntityLiving entityliving = null;
+ EntityHuman entityhuman = null;
+ float f = 0.0F;
+ float f1 = 0.0F;
+ Iterator iterator = this.a.iterator();
+
+ while (iterator.hasNext()) {
+ CombatEntry combatentry = (CombatEntry) iterator.next();
+
+ if (combatentry.a().getEntity() instanceof EntityHuman && (entityhuman == null || combatentry.c() > f1)) {
+ f1 = combatentry.c();
+ entityhuman = (EntityHuman) combatentry.a().getEntity();
+ }
+
+ if (combatentry.a().getEntity() instanceof EntityLiving && (entityliving == null || combatentry.c() > f)) {
+ f = combatentry.c();
+ entityliving = (EntityLiving) combatentry.a().getEntity();
+ }
+ }
+
+ if (entityhuman != null && f1 >= f / 3.0F) {
+ return entityhuman;
+ } else {
+ return entityliving;
+ }
+ }
+
+ private CombatEntry i() {
+ CombatEntry combatentry = null;
+ CombatEntry combatentry1 = null;
+ byte b0 = 0;
+ float f = 0.0F;
+
+ for (int i = 0; i < this.a.size(); ++i) {
+ CombatEntry combatentry2 = (CombatEntry) this.a.get(i);
+ CombatEntry combatentry3 = i > 0 ? (CombatEntry) this.a.get(i - 1) : null;
+
+ if ((combatentry2.a() == DamageSource.FALL || combatentry2.a() == DamageSource.OUT_OF_WORLD) && combatentry2.i() > 0.0F && (combatentry == null || combatentry2.i() > f)) {
+ if (i > 0) {
+ combatentry = combatentry3;
+ } else {
+ combatentry = combatentry2;
+ }
+
+ f = combatentry2.i();
+ }
+
+ if (combatentry2.g() != null && (combatentry1 == null || combatentry2.c() > (float) b0)) {
+ combatentry1 = combatentry2;
+ }
+ }
+
+ if (f > 5.0F && combatentry != null) {
+ return combatentry;
+ } else if (b0 > 5 && combatentry1 != null) {
+ return combatentry1;
+ } else {
+ return null;
+ }
+ }
+
+ private String a(CombatEntry combatentry) {
+ return combatentry.g() == null ? "generic" : combatentry.g();
+ }
+
+ public int f() {
+ return this.f ? this.b.ticksLived - this.d : this.e - this.d;
+ }
+
+ private void j() {
+ this.h = null;
+ }
+
+ public void g() {
+ int i = this.f ? 300 : 100;
+
+ if (this.g && (!this.b.isAlive() || this.b.ticksLived - this.c > i)) {
+ boolean flag = this.f;
+
+ this.g = false;
+ this.f = false;
+ this.e = this.b.ticksLived;
+ if (flag) {
+ this.b.exitCombat();
+ }
+
+ this.a.clear();
+ }
+
+ }
+
+ public EntityLiving h() {
+ return this.b;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAbstract.java
new file mode 100644
index 0000000..1121880
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAbstract.java
@@ -0,0 +1,552 @@
+package net.minecraft.server;
+
+import com.google.common.base.Functions;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.primitives.Doubles;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+
+public abstract class CommandAbstract implements ICommand {
+
+ private static ICommandDispatcher a;
+
+ public CommandAbstract() {}
+
+ public int a() {
+ return 4;
+ }
+
+ public List b() {
+ return Collections.emptyList();
+ }
+
+ public boolean canUse(ICommandListener icommandlistener) {
+ return icommandlistener.a(this.a(), this.getCommand());
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return null;
+ }
+
+ public static int a(String s) throws ExceptionInvalidNumber {
+ try {
+ return Integer.parseInt(s);
+ } catch (NumberFormatException numberformatexception) {
+ throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s});
+ }
+ }
+
+ public static int a(String s, int i) throws ExceptionInvalidNumber {
+ return a(s, i, Integer.MAX_VALUE);
+ }
+
+ public static int a(String s, int i, int j) throws ExceptionInvalidNumber {
+ int k = a(s);
+
+ if (k < i) {
+ throw new ExceptionInvalidNumber("commands.generic.num.tooSmall", new Object[] { Integer.valueOf(k), Integer.valueOf(i)});
+ } else if (k > j) {
+ throw new ExceptionInvalidNumber("commands.generic.num.tooBig", new Object[] { Integer.valueOf(k), Integer.valueOf(j)});
+ } else {
+ return k;
+ }
+ }
+
+ public static long b(String s) throws ExceptionInvalidNumber {
+ try {
+ return Long.parseLong(s);
+ } catch (NumberFormatException numberformatexception) {
+ throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s});
+ }
+ }
+
+ public static long a(String s, long i, long j) throws ExceptionInvalidNumber {
+ long k = b(s);
+
+ if (k < i) {
+ throw new ExceptionInvalidNumber("commands.generic.num.tooSmall", new Object[] { Long.valueOf(k), Long.valueOf(i)});
+ } else if (k > j) {
+ throw new ExceptionInvalidNumber("commands.generic.num.tooBig", new Object[] { Long.valueOf(k), Long.valueOf(j)});
+ } else {
+ return k;
+ }
+ }
+
+ public static BlockPosition a(ICommandListener icommandlistener, String[] astring, int i, boolean flag) throws ExceptionInvalidNumber {
+ BlockPosition blockposition = icommandlistener.getChunkCoordinates();
+
+ return new BlockPosition(b((double) blockposition.getX(), astring[i], -30000000, 30000000, flag), b((double) blockposition.getY(), astring[i + 1], 0, 256, false), b((double) blockposition.getZ(), astring[i + 2], -30000000, 30000000, flag));
+ }
+
+ public static double c(String s) throws ExceptionInvalidNumber {
+ try {
+ double d0 = Double.parseDouble(s);
+
+ if (!Doubles.isFinite(d0)) {
+ throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s});
+ } else {
+ return d0;
+ }
+ } catch (NumberFormatException numberformatexception) {
+ throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { s});
+ }
+ }
+
+ public static double a(String s, double d0) throws ExceptionInvalidNumber {
+ return a(s, d0, Double.MAX_VALUE);
+ }
+
+ public static double a(String s, double d0, double d1) throws ExceptionInvalidNumber {
+ double d2 = c(s);
+
+ if (d2 < d0) {
+ throw new ExceptionInvalidNumber("commands.generic.double.tooSmall", new Object[] { Double.valueOf(d2), Double.valueOf(d0)});
+ } else if (d2 > d1) {
+ throw new ExceptionInvalidNumber("commands.generic.double.tooBig", new Object[] { Double.valueOf(d2), Double.valueOf(d1)});
+ } else {
+ return d2;
+ }
+ }
+
+ public static boolean d(String s) throws CommandException {
+ if (!s.equals("true") && !s.equals("1")) {
+ if (!s.equals("false") && !s.equals("0")) {
+ throw new CommandException("commands.generic.boolean.invalid", new Object[] { s});
+ } else {
+ return false;
+ }
+ } else {
+ return true;
+ }
+ }
+
+ public static EntityPlayer b(ICommandListener icommandlistener) throws ExceptionPlayerNotFound {
+ if (icommandlistener instanceof EntityPlayer) {
+ return (EntityPlayer) icommandlistener;
+ } else {
+ throw new ExceptionPlayerNotFound("You must specify which player you wish to perform this action on.", new Object[0]);
+ }
+ }
+
+ public static EntityPlayer a(ICommandListener icommandlistener, String s) throws ExceptionPlayerNotFound {
+ EntityPlayer entityplayer = PlayerSelector.getPlayer(icommandlistener, s);
+
+ if (entityplayer == null) {
+ try {
+ entityplayer = MinecraftServer.getServer().getPlayerList().a(UUID.fromString(s));
+ } catch (IllegalArgumentException illegalargumentexception) {
+ ;
+ }
+ }
+
+ if (entityplayer == null) {
+ entityplayer = MinecraftServer.getServer().getPlayerList().getPlayer(s);
+ }
+
+ if (entityplayer == null) {
+ throw new ExceptionPlayerNotFound();
+ } else {
+ return entityplayer;
+ }
+ }
+
+ public static Entity b(ICommandListener icommandlistener, String s) throws ExceptionEntityNotFound {
+ return a(icommandlistener, s, Entity.class);
+ }
+
+ public static T a(ICommandListener icommandlistener, String s, Class extends T> oclass) throws ExceptionEntityNotFound {
+ Entity object = PlayerSelector.getEntity(icommandlistener, s, oclass);
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+
+ if (object == null) {
+ object = minecraftserver.getPlayerList().getPlayer(s);
+ }
+
+ if (object == null) {
+ try {
+ UUID uuid = UUID.fromString(s);
+
+ object = minecraftserver.a(uuid);
+ if (object == null) {
+ object = minecraftserver.getPlayerList().a(uuid);
+ }
+ } catch (IllegalArgumentException illegalargumentexception) {
+ throw new ExceptionEntityNotFound("commands.generic.entity.invalidUuid", new Object[0]);
+ }
+ }
+
+ if (object != null && oclass.isAssignableFrom(object.getClass())) {
+ return (T) object;
+ } else {
+ throw new ExceptionEntityNotFound();
+ }
+ }
+
+ public static List c(ICommandListener icommandlistener, String s) throws ExceptionEntityNotFound {
+ return (List) (PlayerSelector.isPattern(s) ? PlayerSelector.getPlayers(icommandlistener, s, Entity.class) : Lists.newArrayList(new Entity[] { b(icommandlistener, s)}));
+ }
+
+ public static String d(ICommandListener icommandlistener, String s) throws ExceptionPlayerNotFound {
+ try {
+ return a(icommandlistener, s).getName();
+ } catch (ExceptionPlayerNotFound exceptionplayernotfound) {
+ if (PlayerSelector.isPattern(s)) {
+ throw exceptionplayernotfound;
+ } else {
+ return s;
+ }
+ }
+ }
+
+ public static String e(ICommandListener icommandlistener, String s) throws ExceptionEntityNotFound {
+ try {
+ return a(icommandlistener, s).getName();
+ } catch (ExceptionPlayerNotFound exceptionplayernotfound) {
+ try {
+ return b(icommandlistener, s).getUniqueID().toString();
+ } catch (ExceptionEntityNotFound exceptionentitynotfound) {
+ if (PlayerSelector.isPattern(s)) {
+ throw exceptionentitynotfound;
+ } else {
+ return s;
+ }
+ }
+ }
+ }
+
+ public static IChatBaseComponent a(ICommandListener icommandlistener, String[] astring, int i) throws ExceptionPlayerNotFound {
+ return b(icommandlistener, astring, i, false);
+ }
+
+ public static IChatBaseComponent b(ICommandListener icommandlistener, String[] astring, int i, boolean flag) throws ExceptionPlayerNotFound {
+ ChatComponentText chatcomponenttext = new ChatComponentText("");
+
+ for (int j = i; j < astring.length; ++j) {
+ if (j > i) {
+ chatcomponenttext.a(" ");
+ }
+
+ Object object = new ChatComponentText(astring[j]);
+
+ if (flag) {
+ IChatBaseComponent ichatbasecomponent = PlayerSelector.getPlayerNames(icommandlistener, astring[j]);
+
+ if (ichatbasecomponent == null) {
+ if (PlayerSelector.isPattern(astring[j])) {
+ throw new ExceptionPlayerNotFound();
+ }
+ } else {
+ object = ichatbasecomponent;
+ }
+ }
+
+ chatcomponenttext.addSibling((IChatBaseComponent) object);
+ }
+
+ return chatcomponenttext;
+ }
+
+ public static String a(String[] astring, int i) {
+ StringBuilder stringbuilder = new StringBuilder();
+
+ for (int j = i; j < astring.length; ++j) {
+ if (j > i) {
+ stringbuilder.append(" ");
+ }
+
+ String s = astring[j];
+
+ stringbuilder.append(s);
+ }
+
+ return stringbuilder.toString();
+ }
+
+ public static CommandAbstract.CommandNumber a(double d0, String s, boolean flag) throws ExceptionInvalidNumber {
+ return a(d0, s, -30000000, 30000000, flag);
+ }
+
+ public static CommandAbstract.CommandNumber a(double d0, String s, int i, int j, boolean flag) throws ExceptionInvalidNumber {
+ boolean flag1 = s.startsWith("~");
+
+ if (flag1 && Double.isNaN(d0)) {
+ throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { Double.valueOf(d0)});
+ } else {
+ double d1 = 0.0D;
+
+ if (!flag1 || s.length() > 1) {
+ boolean flag2 = s.contains(".");
+
+ if (flag1) {
+ s = s.substring(1);
+ }
+
+ d1 += c(s);
+ if (!flag2 && !flag1 && flag) {
+ d1 += 0.5D;
+ }
+ }
+
+ if (i != 0 || j != 0) {
+ if (d1 < (double) i) {
+ throw new ExceptionInvalidNumber("commands.generic.double.tooSmall", new Object[] { Double.valueOf(d1), Integer.valueOf(i)});
+ }
+
+ if (d1 > (double) j) {
+ throw new ExceptionInvalidNumber("commands.generic.double.tooBig", new Object[] { Double.valueOf(d1), Integer.valueOf(j)});
+ }
+ }
+
+ return new CommandAbstract.CommandNumber(d1 + (flag1 ? d0 : 0.0D), d1, flag1);
+ }
+ }
+
+ public static double b(double d0, String s, boolean flag) throws ExceptionInvalidNumber {
+ return b(d0, s, -30000000, 30000000, flag);
+ }
+
+ public static double b(double d0, String s, int i, int j, boolean flag) throws ExceptionInvalidNumber {
+ boolean flag1 = s.startsWith("~");
+
+ if (flag1 && Double.isNaN(d0)) {
+ throw new ExceptionInvalidNumber("commands.generic.num.invalid", new Object[] { Double.valueOf(d0)});
+ } else {
+ double d1 = flag1 ? d0 : 0.0D;
+
+ if (!flag1 || s.length() > 1) {
+ boolean flag2 = s.contains(".");
+
+ if (flag1) {
+ s = s.substring(1);
+ }
+
+ d1 += c(s);
+ if (!flag2 && !flag1 && flag) {
+ d1 += 0.5D;
+ }
+ }
+
+ if (i != 0 || j != 0) {
+ if (d1 < (double) i) {
+ throw new ExceptionInvalidNumber("commands.generic.double.tooSmall", new Object[] { Double.valueOf(d1), Integer.valueOf(i)});
+ }
+
+ if (d1 > (double) j) {
+ throw new ExceptionInvalidNumber("commands.generic.double.tooBig", new Object[] { Double.valueOf(d1), Integer.valueOf(j)});
+ }
+ }
+
+ return d1;
+ }
+ }
+
+ public static Item f(ICommandListener icommandlistener, String s) throws ExceptionInvalidNumber {
+ MinecraftKey minecraftkey = new MinecraftKey(s);
+ Item item = (Item) Item.REGISTRY.get(minecraftkey);
+
+ if (item == null) {
+ throw new ExceptionInvalidNumber("commands.give.item.notFound", new Object[] { minecraftkey});
+ } else {
+ return item;
+ }
+ }
+
+ public static Block g(ICommandListener icommandlistener, String s) throws ExceptionInvalidNumber {
+ MinecraftKey minecraftkey = new MinecraftKey(s);
+
+ if (!Block.REGISTRY.d(minecraftkey)) {
+ throw new ExceptionInvalidNumber("commands.give.block.notFound", new Object[] { minecraftkey});
+ } else {
+ Block block = (Block) Block.REGISTRY.get(minecraftkey);
+
+ if (block == null) {
+ throw new ExceptionInvalidNumber("commands.give.block.notFound", new Object[] { minecraftkey});
+ } else {
+ return block;
+ }
+ }
+ }
+
+ public static String a(Object[] aobject) {
+ StringBuilder stringbuilder = new StringBuilder();
+
+ for (int i = 0; i < aobject.length; ++i) {
+ String s = aobject[i].toString();
+
+ if (i > 0) {
+ if (i == aobject.length - 1) {
+ stringbuilder.append(" and ");
+ } else {
+ stringbuilder.append(", ");
+ }
+ }
+
+ stringbuilder.append(s);
+ }
+
+ return stringbuilder.toString();
+ }
+
+ public static IChatBaseComponent a(List list) {
+ ChatComponentText chatcomponenttext = new ChatComponentText("");
+
+ for (int i = 0; i < list.size(); ++i) {
+ if (i > 0) {
+ if (i == list.size() - 1) {
+ chatcomponenttext.a(" and ");
+ } else if (i > 0) {
+ chatcomponenttext.a(", ");
+ }
+ }
+
+ chatcomponenttext.addSibling((IChatBaseComponent) list.get(i));
+ }
+
+ return chatcomponenttext;
+ }
+
+ public static String a(Collection collection) {
+ return a(collection.toArray(new String[collection.size()]));
+ }
+
+ public static List a(String[] astring, int i, BlockPosition blockposition) {
+ if (blockposition == null) {
+ return null;
+ } else {
+ int j = astring.length - 1;
+ String s;
+
+ if (j == i) {
+ s = Integer.toString(blockposition.getX());
+ } else if (j == i + 1) {
+ s = Integer.toString(blockposition.getY());
+ } else {
+ if (j != i + 2) {
+ return null;
+ }
+
+ s = Integer.toString(blockposition.getZ());
+ }
+
+ return Lists.newArrayList(new String[] { s});
+ }
+ }
+
+ public static List b(String[] astring, int i, BlockPosition blockposition) {
+ if (blockposition == null) {
+ return null;
+ } else {
+ int j = astring.length - 1;
+ String s;
+
+ if (j == i) {
+ s = Integer.toString(blockposition.getX());
+ } else {
+ if (j != i + 1) {
+ return null;
+ }
+
+ s = Integer.toString(blockposition.getZ());
+ }
+
+ return Lists.newArrayList(new String[] { s});
+ }
+ }
+
+ public static boolean a(String s, String s1) {
+ return s1.regionMatches(true, 0, s, 0, s.length());
+ }
+
+ public static List a(String[] astring, String... astring1) {
+ return a(astring, (Collection) Arrays.asList(astring1));
+ }
+
+ public static List a(String[] astring, Collection> collection) {
+ String s = astring[astring.length - 1];
+ ArrayList arraylist = Lists.newArrayList();
+
+ if (!collection.isEmpty()) {
+ Iterator iterator = Iterables.transform(collection, Functions.toStringFunction()).iterator();
+
+ while (iterator.hasNext()) {
+ String s1 = (String) iterator.next();
+
+ if (a(s, s1)) {
+ arraylist.add(s1);
+ }
+ }
+
+ if (arraylist.isEmpty()) {
+ iterator = collection.iterator();
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+
+ if (object instanceof MinecraftKey && a(s, ((MinecraftKey) object).a())) {
+ arraylist.add(String.valueOf(object));
+ }
+ }
+ }
+ }
+
+ return arraylist;
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return false;
+ }
+
+ public static void a(ICommandListener icommandlistener, ICommand icommand, String s, Object... aobject) {
+ a(icommandlistener, icommand, 0, s, aobject);
+ }
+
+ public static void a(ICommandListener icommandlistener, ICommand icommand, int i, String s, Object... aobject) {
+ if (CommandAbstract.a != null) {
+ CommandAbstract.a.a(icommandlistener, icommand, i, s, aobject);
+ }
+
+ }
+
+ public static void a(ICommandDispatcher icommanddispatcher) {
+ CommandAbstract.a = icommanddispatcher;
+ }
+
+ public int a(ICommand icommand) {
+ return this.getCommand().compareTo(icommand.getCommand());
+ }
+
+ public int compareTo(ICommand object) {
+ return this.a(object);
+ }
+
+ public static class CommandNumber {
+
+ private final double a;
+ private final double b;
+ private final boolean c;
+
+ protected CommandNumber(double d0, double d1, boolean flag) {
+ this.a = d0;
+ this.b = d1;
+ this.c = flag;
+ }
+
+ public double a() {
+ return this.a;
+ }
+
+ public double b() {
+ return this.b;
+ }
+
+ public boolean c() {
+ return this.c;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandAchievement.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAchievement.java
new file mode 100644
index 0000000..c668da5
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandAchievement.java
@@ -0,0 +1,169 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+public class CommandAchievement extends CommandAbstract {
+
+ public CommandAchievement() {}
+
+ public String getCommand() {
+ return "achievement";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.achievement.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.achievement.usage", new Object[0]);
+ } else {
+ final Statistic statistic = StatisticList.getStatistic(astring[1]);
+
+ if (statistic == null && !astring[1].equals("*")) {
+ throw new CommandException("commands.achievement.unknownAchievement", new Object[] { astring[1]});
+ } else {
+ final EntityPlayer entityplayer = astring.length >= 3 ? a(icommandlistener, astring[2]) : b(icommandlistener);
+ boolean flag = astring[0].equalsIgnoreCase("give");
+ boolean flag1 = astring[0].equalsIgnoreCase("take");
+
+ if (flag || flag1) {
+ if (statistic == null) {
+ Iterator iterator;
+ Achievement achievement;
+
+ if (flag) {
+ iterator = AchievementList.e.iterator();
+
+ while (iterator.hasNext()) {
+ achievement = (Achievement) iterator.next();
+ entityplayer.b((Statistic) achievement);
+ }
+
+ a(icommandlistener, this, "commands.achievement.give.success.all", new Object[] { entityplayer.getName()});
+ } else if (flag1) {
+ iterator = Lists.reverse(AchievementList.e).iterator();
+
+ while (iterator.hasNext()) {
+ achievement = (Achievement) iterator.next();
+ entityplayer.a((Statistic) achievement);
+ }
+
+ a(icommandlistener, this, "commands.achievement.take.success.all", new Object[] { entityplayer.getName()});
+ }
+
+ } else {
+ if (statistic instanceof Achievement) {
+ Achievement achievement1 = (Achievement) statistic;
+ ArrayList arraylist;
+
+ if (flag) {
+ if (entityplayer.getStatisticManager().hasAchievement(achievement1)) {
+ throw new CommandException("commands.achievement.alreadyHave", new Object[] { entityplayer.getName(), statistic.j()});
+ }
+
+ for (arraylist = Lists.newArrayList(); achievement1.c != null && !entityplayer.getStatisticManager().hasAchievement(achievement1.c); achievement1 = achievement1.c) {
+ arraylist.add(achievement1.c);
+ }
+
+ Iterator iterator1 = Lists.reverse(arraylist).iterator();
+
+ while (iterator1.hasNext()) {
+ Achievement achievement2 = (Achievement) iterator1.next();
+
+ entityplayer.b((Statistic) achievement2);
+ }
+ } else if (flag1) {
+ if (!entityplayer.getStatisticManager().hasAchievement(achievement1)) {
+ throw new CommandException("commands.achievement.dontHave", new Object[] { entityplayer.getName(), statistic.j()});
+ }
+
+ arraylist = Lists.newArrayList(Iterators.filter(AchievementList.e.iterator(), new Predicate() {
+ public boolean a(Achievement achievement) {
+ return entityplayer.getStatisticManager().hasAchievement(achievement) && achievement != statistic;
+ }
+
+ public boolean apply(Object object) {
+ return this.a((Achievement) object);
+ }
+ }));
+ ArrayList arraylist1 = Lists.newArrayList(arraylist);
+ Iterator iterator2 = arraylist.iterator();
+
+ Achievement achievement3;
+
+ while (iterator2.hasNext()) {
+ achievement3 = (Achievement) iterator2.next();
+ Achievement achievement4 = achievement3;
+
+ boolean flag2;
+
+ for (flag2 = false; achievement4 != null; achievement4 = achievement4.c) {
+ if (achievement4 == statistic) {
+ flag2 = true;
+ }
+ }
+
+ if (!flag2) {
+ for (achievement4 = achievement3; achievement4 != null; achievement4 = achievement4.c) {
+ arraylist1.remove(achievement3);
+ }
+ }
+ }
+
+ iterator2 = arraylist1.iterator();
+
+ while (iterator2.hasNext()) {
+ achievement3 = (Achievement) iterator2.next();
+ entityplayer.a((Statistic) achievement3);
+ }
+ }
+ }
+
+ if (flag) {
+ entityplayer.b(statistic);
+ a(icommandlistener, this, "commands.achievement.give.success.one", new Object[] { entityplayer.getName(), statistic.j()});
+ } else if (flag1) {
+ entityplayer.a(statistic);
+ a(icommandlistener, this, "commands.achievement.take.success.one", new Object[] { statistic.j(), entityplayer.getName()});
+ }
+
+ }
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ if (astring.length == 1) {
+ return a(astring, new String[] { "give", "take"});
+ } else if (astring.length != 2) {
+ return astring.length == 3 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ } else {
+ ArrayList arraylist = Lists.newArrayList();
+ Iterator iterator = StatisticList.stats.iterator();
+
+ while (iterator.hasNext()) {
+ Statistic statistic = (Statistic) iterator.next();
+
+ arraylist.add(statistic.name);
+ }
+
+ return a(astring, (Collection) arraylist);
+ }
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 2;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBan.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBan.java
new file mode 100644
index 0000000..83d1d9f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBan.java
@@ -0,0 +1,60 @@
+package net.minecraft.server;
+
+import com.mojang.authlib.GameProfile;
+import java.util.Date;
+import java.util.List;
+
+public class CommandBan extends CommandAbstract {
+
+ public CommandBan() {}
+
+ public String getCommand() {
+ return "ban";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.ban.usage";
+ }
+
+ public boolean canUse(ICommandListener icommandlistener) {
+ return MinecraftServer.getServer().getPlayerList().getProfileBans().isEnabled() && super.canUse(icommandlistener);
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length >= 1 && astring[0].length() > 0) {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+ GameProfile gameprofile = minecraftserver.getUserCache().getProfile(astring[0]);
+
+ if (gameprofile == null) {
+ throw new CommandException("commands.ban.failed", new Object[] { astring[0]});
+ } else {
+ String s = null;
+
+ if (astring.length >= 2) {
+ s = a(icommandlistener, astring, 1).c();
+ }
+
+ GameProfileBanEntry gameprofilebanentry = new GameProfileBanEntry(gameprofile, (Date) null, icommandlistener.getName(), (Date) null, s);
+
+ minecraftserver.getPlayerList().getProfileBans().add(gameprofilebanentry);
+ EntityPlayer entityplayer = minecraftserver.getPlayerList().getPlayer(astring[0]);
+
+ if (entityplayer != null) {
+ entityplayer.playerConnection.disconnect("You are banned from this server.");
+ }
+
+ a(icommandlistener, this, "commands.ban.success", new Object[] { astring[0]});
+ }
+ } else {
+ throw new ExceptionUsage("commands.ban.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length >= 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanIp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanIp.java
new file mode 100644
index 0000000..8042f01
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanIp.java
@@ -0,0 +1,79 @@
+package net.minecraft.server;
+
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class CommandBanIp extends CommandAbstract {
+
+ public static final Pattern a = Pattern.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
+
+ public CommandBanIp() {}
+
+ public String getCommand() {
+ return "ban-ip";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public boolean canUse(ICommandListener icommandlistener) {
+ return MinecraftServer.getServer().getPlayerList().getIPBans().isEnabled() && super.canUse(icommandlistener);
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.banip.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length >= 1 && astring[0].length() > 1) {
+ IChatBaseComponent ichatbasecomponent = astring.length >= 2 ? a(icommandlistener, astring, 1) : null;
+ Matcher matcher = CommandBanIp.a.matcher(astring[0]);
+
+ if (matcher.matches()) {
+ this.a(icommandlistener, astring[0], ichatbasecomponent == null ? null : ichatbasecomponent.c());
+ } else {
+ EntityPlayer entityplayer = MinecraftServer.getServer().getPlayerList().getPlayer(astring[0]);
+
+ if (entityplayer == null) {
+ throw new ExceptionPlayerNotFound("commands.banip.invalid", new Object[0]);
+ }
+
+ this.a(icommandlistener, entityplayer.w(), ichatbasecomponent == null ? null : ichatbasecomponent.c());
+ }
+
+ } else {
+ throw new ExceptionUsage("commands.banip.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ }
+
+ protected void a(ICommandListener icommandlistener, String s, String s1) {
+ IpBanEntry ipbanentry = new IpBanEntry(s, (Date) null, icommandlistener.getName(), (Date) null, s1);
+
+ MinecraftServer.getServer().getPlayerList().getIPBans().add(ipbanentry);
+ List list = MinecraftServer.getServer().getPlayerList().b(s);
+ String[] astring = new String[list.size()];
+ int i = 0;
+
+ EntityPlayer entityplayer;
+
+ for (Iterator iterator = list.iterator(); iterator.hasNext(); astring[i++] = entityplayer.getName()) {
+ entityplayer = (EntityPlayer) iterator.next();
+ entityplayer.playerConnection.disconnect("You have been IP banned.");
+ }
+
+ if (list.isEmpty()) {
+ a(icommandlistener, this, "commands.banip.success", new Object[] { s});
+ } else {
+ a(icommandlistener, this, "commands.banip.success.players", new Object[] { s, a((Object[]) astring)});
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanList.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanList.java
new file mode 100644
index 0000000..eacc3d4
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBanList.java
@@ -0,0 +1,39 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandBanList extends CommandAbstract {
+
+ public CommandBanList() {}
+
+ public String getCommand() {
+ return "banlist";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public boolean canUse(ICommandListener icommandlistener) {
+ return (MinecraftServer.getServer().getPlayerList().getIPBans().isEnabled() || MinecraftServer.getServer().getPlayerList().getProfileBans().isEnabled()) && super.canUse(icommandlistener);
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.banlist.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length >= 1 && astring[0].equalsIgnoreCase("ips")) {
+ icommandlistener.sendMessage(new ChatMessage("commands.banlist.ips", new Object[] { Integer.valueOf(MinecraftServer.getServer().getPlayerList().getIPBans().getEntries().length)}));
+ icommandlistener.sendMessage(new ChatComponentText(a((Object[]) MinecraftServer.getServer().getPlayerList().getIPBans().getEntries())));
+ } else {
+ icommandlistener.sendMessage(new ChatMessage("commands.banlist.players", new Object[] { Integer.valueOf(MinecraftServer.getServer().getPlayerList().getProfileBans().getEntries().length)}));
+ icommandlistener.sendMessage(new ChatComponentText(a((Object[]) MinecraftServer.getServer().getPlayerList().getProfileBans().getEntries())));
+ }
+
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "players", "ips"}) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockData.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockData.java
new file mode 100644
index 0000000..d4264b3
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockData.java
@@ -0,0 +1,71 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandBlockData extends CommandAbstract {
+
+ public CommandBlockData() {}
+
+ public String getCommand() {
+ return "blockdata";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.blockdata.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 4) {
+ throw new ExceptionUsage("commands.blockdata.usage", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0);
+ BlockPosition blockposition = a(icommandlistener, astring, 0, false);
+ World world = icommandlistener.getWorld();
+
+ if (!world.isLoaded(blockposition)) {
+ throw new CommandException("commands.blockdata.outOfWorld", new Object[0]);
+ } else {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity == null) {
+ throw new CommandException("commands.blockdata.notValid", new Object[0]);
+ } else {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+
+ tileentity.b(nbttagcompound);
+ NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttagcompound.clone();
+
+ NBTTagCompound nbttagcompound2;
+
+ try {
+ nbttagcompound2 = MojangsonParser.parse(a(icommandlistener, astring, 3).c());
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.blockdata.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+
+ nbttagcompound.a(nbttagcompound2);
+ nbttagcompound.setInt("x", blockposition.getX());
+ nbttagcompound.setInt("y", blockposition.getY());
+ nbttagcompound.setInt("z", blockposition.getZ());
+ if (nbttagcompound.equals(nbttagcompound1)) {
+ throw new CommandException("commands.blockdata.failed", new Object[] { nbttagcompound.toString()});
+ } else {
+ tileentity.a(nbttagcompound);
+ tileentity.update();
+ world.notify(blockposition);
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 1);
+ a(icommandlistener, this, "commands.blockdata.success", new Object[] { nbttagcompound.toString()});
+ }
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : null;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandClear.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClear.java
new file mode 100644
index 0000000..2bc317d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClear.java
@@ -0,0 +1,72 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.List;
+
+public class CommandClear extends CommandAbstract {
+
+ public CommandClear() {}
+
+ public String getCommand() {
+ return "clear";
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.clear.usage";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ EntityPlayer entityplayer = astring.length == 0 ? b(icommandlistener) : a(icommandlistener, astring[0]);
+ Item item = astring.length >= 2 ? f(icommandlistener, astring[1]) : null;
+ int i = astring.length >= 3 ? a(astring[2], -1) : -1;
+ int j = astring.length >= 4 ? a(astring[3], -1) : -1;
+ NBTTagCompound nbttagcompound = null;
+
+ if (astring.length >= 5) {
+ try {
+ nbttagcompound = MojangsonParser.parse(a(astring, 4));
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.clear.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ if (astring.length >= 2 && item == null) {
+ throw new CommandException("commands.clear.failure", new Object[] { entityplayer.getName()});
+ } else {
+ int k = entityplayer.inventory.a(item, i, j, nbttagcompound);
+
+ entityplayer.defaultContainer.b();
+ if (!entityplayer.abilities.canInstantlyBuild) {
+ entityplayer.broadcastCarriedItem();
+ }
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, k);
+ if (k == 0) {
+ throw new CommandException("commands.clear.failure", new Object[] { entityplayer.getName()});
+ } else {
+ if (j == 0) {
+ icommandlistener.sendMessage(new ChatMessage("commands.clear.testing", new Object[] { entityplayer.getName(), Integer.valueOf(k)}));
+ } else {
+ a(icommandlistener, this, "commands.clear.success", new Object[] { entityplayer.getName(), Integer.valueOf(k)});
+ }
+
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) Item.REGISTRY.keySet()) : null);
+ }
+
+ protected String[] d() {
+ return MinecraftServer.getServer().getPlayers();
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandClone.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClone.java
new file mode 100644
index 0000000..34012e8
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandClone.java
@@ -0,0 +1,225 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+public class CommandClone extends CommandAbstract {
+
+ public CommandClone() {}
+
+ public String getCommand() {
+ return "clone";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.clone.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 9) {
+ throw new ExceptionUsage("commands.clone.usage", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0);
+ BlockPosition blockposition = a(icommandlistener, astring, 0, false);
+ BlockPosition blockposition1 = a(icommandlistener, astring, 3, false);
+ BlockPosition blockposition2 = a(icommandlistener, astring, 6, false);
+ StructureBoundingBox structureboundingbox = new StructureBoundingBox(blockposition, blockposition1);
+ StructureBoundingBox structureboundingbox1 = new StructureBoundingBox(blockposition2, blockposition2.a(structureboundingbox.b()));
+ int i = structureboundingbox.c() * structureboundingbox.d() * structureboundingbox.e();
+
+ if (i > '\u8000') {
+ throw new CommandException("commands.clone.tooManyBlocks", new Object[] { Integer.valueOf(i), Integer.valueOf('\u8000')});
+ } else {
+ boolean flag = false;
+ Block block = null;
+ int j = -1;
+
+ if ((astring.length < 11 || !astring[10].equals("force") && !astring[10].equals("move")) && structureboundingbox.a(structureboundingbox1)) {
+ throw new CommandException("commands.clone.noOverlap", new Object[0]);
+ } else {
+ if (astring.length >= 11 && astring[10].equals("move")) {
+ flag = true;
+ }
+
+ if (structureboundingbox.b >= 0 && structureboundingbox.e < 256 && structureboundingbox1.b >= 0 && structureboundingbox1.e < 256) {
+ World world = icommandlistener.getWorld();
+
+ if (world.a(structureboundingbox) && world.a(structureboundingbox1)) {
+ boolean flag1 = false;
+
+ if (astring.length >= 10) {
+ if (astring[9].equals("masked")) {
+ flag1 = true;
+ } else if (astring[9].equals("filtered")) {
+ if (astring.length < 12) {
+ throw new ExceptionUsage("commands.clone.usage", new Object[0]);
+ }
+
+ block = g(icommandlistener, astring[11]);
+ if (astring.length >= 13) {
+ j = a(astring[12], 0, 15);
+ }
+ }
+ }
+
+ ArrayList arraylist = Lists.newArrayList();
+ ArrayList arraylist1 = Lists.newArrayList();
+ ArrayList arraylist2 = Lists.newArrayList();
+ LinkedList linkedlist = Lists.newLinkedList();
+ BlockPosition blockposition3 = new BlockPosition(structureboundingbox1.a - structureboundingbox.a, structureboundingbox1.b - structureboundingbox.b, structureboundingbox1.c - structureboundingbox.c);
+
+ for (int k = structureboundingbox.c; k <= structureboundingbox.f; ++k) {
+ for (int l = structureboundingbox.b; l <= structureboundingbox.e; ++l) {
+ for (int i1 = structureboundingbox.a; i1 <= structureboundingbox.d; ++i1) {
+ BlockPosition blockposition4 = new BlockPosition(i1, l, k);
+ BlockPosition blockposition5 = blockposition4.a(blockposition3);
+ IBlockData iblockdata = world.getType(blockposition4);
+
+ if ((!flag1 || iblockdata.getBlock() != Blocks.AIR) && (block == null || iblockdata.getBlock() == block && (j < 0 || iblockdata.getBlock().toLegacyData(iblockdata) == j))) {
+ TileEntity tileentity = world.getTileEntity(blockposition4);
+
+ if (tileentity != null) {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+
+ tileentity.b(nbttagcompound);
+ arraylist1.add(new CommandClone.CommandCloneStoredTileEntity(blockposition5, iblockdata, nbttagcompound));
+ linkedlist.addLast(blockposition4);
+ } else if (!iblockdata.getBlock().o() && !iblockdata.getBlock().d()) {
+ arraylist2.add(new CommandClone.CommandCloneStoredTileEntity(blockposition5, iblockdata, (NBTTagCompound) null));
+ linkedlist.addFirst(blockposition4);
+ } else {
+ arraylist.add(new CommandClone.CommandCloneStoredTileEntity(blockposition5, iblockdata, (NBTTagCompound) null));
+ linkedlist.addLast(blockposition4);
+ }
+ }
+ }
+ }
+ }
+
+ if (flag) {
+ Iterator iterator;
+ BlockPosition blockposition6;
+
+ for (iterator = linkedlist.iterator(); iterator.hasNext(); world.setTypeAndData(blockposition6, Blocks.BARRIER.getBlockData(), 2)) {
+ blockposition6 = (BlockPosition) iterator.next();
+ TileEntity tileentity1 = world.getTileEntity(blockposition6);
+
+ if (tileentity1 instanceof IInventory) {
+ ((IInventory) tileentity1).l();
+ }
+ }
+
+ iterator = linkedlist.iterator();
+
+ while (iterator.hasNext()) {
+ blockposition6 = (BlockPosition) iterator.next();
+ world.setTypeAndData(blockposition6, Blocks.AIR.getBlockData(), 3);
+ }
+ }
+
+ ArrayList arraylist3 = Lists.newArrayList();
+
+ arraylist3.addAll(arraylist);
+ arraylist3.addAll(arraylist1);
+ arraylist3.addAll(arraylist2);
+ List list = Lists.reverse(arraylist3);
+
+ Iterator iterator1;
+ CommandClone.CommandCloneStoredTileEntity commandclone_commandclonestoredtileentity;
+ TileEntity tileentity2;
+
+ for (iterator1 = list.iterator(); iterator1.hasNext(); world.setTypeAndData(commandclone_commandclonestoredtileentity.a, Blocks.BARRIER.getBlockData(), 2)) {
+ commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next();
+ tileentity2 = world.getTileEntity(commandclone_commandclonestoredtileentity.a);
+ if (tileentity2 instanceof IInventory) {
+ ((IInventory) tileentity2).l();
+ }
+ }
+
+ i = 0;
+ iterator1 = arraylist3.iterator();
+
+ while (iterator1.hasNext()) {
+ commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next();
+ if (world.setTypeAndData(commandclone_commandclonestoredtileentity.a, commandclone_commandclonestoredtileentity.b, 2)) {
+ ++i;
+ }
+ }
+
+ for (iterator1 = arraylist1.iterator(); iterator1.hasNext(); world.setTypeAndData(commandclone_commandclonestoredtileentity.a, commandclone_commandclonestoredtileentity.b, 2)) {
+ commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next();
+ tileentity2 = world.getTileEntity(commandclone_commandclonestoredtileentity.a);
+ if (commandclone_commandclonestoredtileentity.c != null && tileentity2 != null) {
+ commandclone_commandclonestoredtileentity.c.setInt("x", commandclone_commandclonestoredtileentity.a.getX());
+ commandclone_commandclonestoredtileentity.c.setInt("y", commandclone_commandclonestoredtileentity.a.getY());
+ commandclone_commandclonestoredtileentity.c.setInt("z", commandclone_commandclonestoredtileentity.a.getZ());
+ tileentity2.a(commandclone_commandclonestoredtileentity.c);
+ tileentity2.update();
+ }
+ }
+
+ iterator1 = list.iterator();
+
+ while (iterator1.hasNext()) {
+ commandclone_commandclonestoredtileentity = (CommandClone.CommandCloneStoredTileEntity) iterator1.next();
+ world.update(commandclone_commandclonestoredtileentity.a, commandclone_commandclonestoredtileentity.b.getBlock());
+ }
+
+ List list1 = world.a(structureboundingbox, false);
+
+ if (list1 != null) {
+ Iterator iterator2 = list1.iterator();
+
+ while (iterator2.hasNext()) {
+ NextTickListEntry nextticklistentry = (NextTickListEntry) iterator2.next();
+
+ if (structureboundingbox.b((BaseBlockPosition) nextticklistentry.a)) {
+ BlockPosition blockposition7 = nextticklistentry.a.a(blockposition3);
+
+ world.b(blockposition7, nextticklistentry.a(), (int) (nextticklistentry.b - world.getWorldData().getTime()), nextticklistentry.c);
+ }
+ }
+ }
+
+ if (i <= 0) {
+ throw new CommandException("commands.clone.failed", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, i);
+ a(icommandlistener, this, "commands.clone.success", new Object[] { Integer.valueOf(i)});
+ }
+ } else {
+ throw new CommandException("commands.clone.outOfWorld", new Object[0]);
+ }
+ } else {
+ throw new CommandException("commands.clone.outOfWorld", new Object[0]);
+ }
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length > 3 && astring.length <= 6 ? a(astring, 3, blockposition) : (astring.length > 6 && astring.length <= 9 ? a(astring, 6, blockposition) : (astring.length == 10 ? a(astring, new String[] { "replace", "masked", "filtered"}) : (astring.length == 11 ? a(astring, new String[] { "normal", "force", "move"}) : (astring.length == 12 && "filtered".equals(astring[9]) ? a(astring, (Collection) Block.REGISTRY.keySet()) : null)))));
+ }
+
+ static class CommandCloneStoredTileEntity {
+
+ public final BlockPosition a;
+ public final IBlockData b;
+ public final NBTTagCompound c;
+
+ public CommandCloneStoredTileEntity(BlockPosition blockposition, IBlockData iblockdata, NBTTagCompound nbttagcompound) {
+ this.a = blockposition;
+ this.b = iblockdata;
+ this.c = nbttagcompound;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandDebug.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDebug.java
new file mode 100644
index 0000000..916298c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDebug.java
@@ -0,0 +1,141 @@
+package net.minecraft.server;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class CommandDebug extends CommandAbstract {
+
+ private static final Logger a = LogManager.getLogger();
+ private long b;
+ private int c;
+
+ public CommandDebug() {}
+
+ public String getCommand() {
+ return "debug";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.debug.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 1) {
+ throw new ExceptionUsage("commands.debug.usage", new Object[0]);
+ } else {
+ if (astring[0].equals("start")) {
+ if (astring.length != 1) {
+ throw new ExceptionUsage("commands.debug.usage", new Object[0]);
+ }
+
+ a(icommandlistener, this, "commands.debug.start", new Object[0]);
+ MinecraftServer.getServer().au();
+ this.b = MinecraftServer.az();
+ this.c = MinecraftServer.getServer().at();
+ } else {
+ if (!astring[0].equals("stop")) {
+ throw new ExceptionUsage("commands.debug.usage", new Object[0]);
+ }
+
+ if (astring.length != 1) {
+ throw new ExceptionUsage("commands.debug.usage", new Object[0]);
+ }
+
+ if (!MinecraftServer.getServer().methodProfiler.a) {
+ throw new CommandException("commands.debug.notStarted", new Object[0]);
+ }
+
+ long i = MinecraftServer.az();
+ int j = MinecraftServer.getServer().at();
+ long k = i - this.b;
+ int l = j - this.c;
+
+ this.a(k, l);
+ MinecraftServer.getServer().methodProfiler.a = false;
+ a(icommandlistener, this, "commands.debug.stop", new Object[] { Float.valueOf((float) k / 1000.0F), Integer.valueOf(l)});
+ }
+
+ }
+ }
+
+ private void a(long i, int j) {
+ File file = new File(MinecraftServer.getServer().d("debug"), "profile-results-" + (new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss")).format(new Date()) + ".txt");
+
+ file.getParentFile().mkdirs();
+
+ try {
+ FileWriter filewriter = new FileWriter(file);
+
+ filewriter.write(this.b(i, j));
+ filewriter.close();
+ } catch (Throwable throwable) {
+ CommandDebug.a.error("Could not save profiler results to " + file, throwable);
+ }
+
+ }
+
+ private String b(long i, int j) {
+ StringBuilder stringbuilder = new StringBuilder();
+
+ stringbuilder.append("---- Minecraft Profiler Results ----\n");
+ stringbuilder.append("// ");
+ stringbuilder.append(d());
+ stringbuilder.append("\n\n");
+ stringbuilder.append("Time span: ").append(i).append(" ms\n");
+ stringbuilder.append("Tick span: ").append(j).append(" ticks\n");
+ stringbuilder.append("// This is approximately ").append(String.format("%.2f", new Object[] { Float.valueOf((float) j / ((float) i / 1000.0F))})).append(" ticks per second. It should be ").append(20).append(" ticks per second\n\n");
+ stringbuilder.append("--- BEGIN PROFILE DUMP ---\n\n");
+ this.a(0, "root", stringbuilder);
+ stringbuilder.append("--- END PROFILE DUMP ---\n\n");
+ return stringbuilder.toString();
+ }
+
+ private void a(int i, String s, StringBuilder stringbuilder) {
+ List list = MinecraftServer.getServer().methodProfiler.b(s);
+
+ if (list != null && list.size() >= 3) {
+ for (int j = 1; j < list.size(); ++j) {
+ MethodProfiler.ProfilerInfo methodprofiler_profilerinfo = (MethodProfiler.ProfilerInfo) list.get(j);
+
+ stringbuilder.append(String.format("[%02d] ", new Object[] { Integer.valueOf(i)}));
+
+ for (int k = 0; k < i; ++k) {
+ stringbuilder.append(" ");
+ }
+
+ stringbuilder.append(methodprofiler_profilerinfo.c).append(" - ").append(String.format("%.2f", new Object[] { Double.valueOf(methodprofiler_profilerinfo.a)})).append("%/").append(String.format("%.2f", new Object[] { Double.valueOf(methodprofiler_profilerinfo.b)})).append("%\n");
+ if (!methodprofiler_profilerinfo.c.equals("unspecified")) {
+ try {
+ this.a(i + 1, s + "." + methodprofiler_profilerinfo.c, stringbuilder);
+ } catch (Exception exception) {
+ stringbuilder.append("[[ EXCEPTION ").append(exception).append(" ]]");
+ }
+ }
+ }
+
+ }
+ }
+
+ private static String d() {
+ String[] astring = new String[] { "Shiny numbers!", "Am I not running fast enough? :(", "I\'m working as hard as I can!", "Will I ever be good enough for you? :(", "Speedy. Zoooooom!", "Hello world", "40% better than a crash report.", "Now with extra numbers", "Now with less numbers", "Now with the same numbers", "You should add flames to things, it makes them go faster!", "Do you feel the need for... optimization?", "*cracks redstone whip*", "Maybe if you treated it better then it\'ll have more motivation to work faster! Poor server."};
+
+ try {
+ return astring[(int) (System.nanoTime() % (long) astring.length)];
+ } catch (Throwable throwable) {
+ return "Witty comment unavailable :(";
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "start", "stop"}) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandDeop.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDeop.java
new file mode 100644
index 0000000..34d98bb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDeop.java
@@ -0,0 +1,41 @@
+package net.minecraft.server;
+
+import com.mojang.authlib.GameProfile;
+import java.util.List;
+
+public class CommandDeop extends CommandAbstract {
+
+ public CommandDeop() {}
+
+ public String getCommand() {
+ return "deop";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.deop.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length == 1 && astring[0].length() > 0) {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+ GameProfile gameprofile = minecraftserver.getPlayerList().getOPs().a(astring[0]);
+
+ if (gameprofile == null) {
+ throw new CommandException("commands.deop.failed", new Object[] { astring[0]});
+ } else {
+ minecraftserver.getPlayerList().removeOp(gameprofile);
+ a(icommandlistener, this, "commands.deop.success", new Object[] { astring[0]});
+ }
+ } else {
+ throw new ExceptionUsage("commands.deop.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayerList().n()) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandDifficulty.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDifficulty.java
new file mode 100644
index 0000000..dd59948
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDifficulty.java
@@ -0,0 +1,39 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandDifficulty extends CommandAbstract {
+
+ public CommandDifficulty() {}
+
+ public String getCommand() {
+ return "difficulty";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.difficulty.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length <= 0) {
+ throw new ExceptionUsage("commands.difficulty.usage", new Object[0]);
+ } else {
+ EnumDifficulty enumdifficulty = this.e(astring[0]);
+
+ MinecraftServer.getServer().a(enumdifficulty);
+ a(icommandlistener, this, "commands.difficulty.success", new Object[] { new ChatMessage(enumdifficulty.b(), new Object[0])});
+ }
+ }
+
+ protected EnumDifficulty e(String s) throws ExceptionInvalidNumber {
+ return !s.equalsIgnoreCase("peaceful") && !s.equalsIgnoreCase("p") ? (!s.equalsIgnoreCase("easy") && !s.equalsIgnoreCase("e") ? (!s.equalsIgnoreCase("normal") && !s.equalsIgnoreCase("n") ? (!s.equalsIgnoreCase("hard") && !s.equalsIgnoreCase("h") ? EnumDifficulty.getById(a(s, 0, 3)) : EnumDifficulty.HARD) : EnumDifficulty.NORMAL) : EnumDifficulty.EASY) : EnumDifficulty.PEACEFUL;
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "peaceful", "easy", "normal", "hard"}) : null;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandDispatcher.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandEffect.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEffect.java
new file mode 100644
index 0000000..743d385
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEffect.java
@@ -0,0 +1,107 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.List;
+
+public class CommandEffect extends CommandAbstract {
+
+ public CommandEffect() {}
+
+ public String getCommand() {
+ return "effect";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.effect.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.effect.usage", new Object[0]);
+ } else {
+ EntityLiving entityliving = (EntityLiving) a(icommandlistener, astring[0], EntityLiving.class);
+
+ if (astring[1].equals("clear")) {
+ if (entityliving.getEffects().isEmpty()) {
+ throw new CommandException("commands.effect.failure.notActive.all", new Object[] { entityliving.getName()});
+ } else {
+ entityliving.removeAllEffects();
+ a(icommandlistener, this, "commands.effect.success.removed.all", new Object[] { entityliving.getName()});
+ }
+ } else {
+ int i;
+
+ try {
+ i = a(astring[1], 1);
+ } catch (ExceptionInvalidNumber exceptioninvalidnumber) {
+ MobEffectList mobeffectlist = MobEffectList.b(astring[1]);
+
+ if (mobeffectlist == null) {
+ throw exceptioninvalidnumber;
+ }
+
+ i = mobeffectlist.id;
+ }
+
+ int j = 600;
+ int k = 30;
+ int l = 0;
+
+ if (i >= 0 && i < MobEffectList.byId.length && MobEffectList.byId[i] != null) {
+ MobEffectList mobeffectlist1 = MobEffectList.byId[i];
+
+ if (astring.length >= 3) {
+ k = a(astring[2], 0, 1000000);
+ if (mobeffectlist1.isInstant()) {
+ j = k;
+ } else {
+ j = k * 20;
+ }
+ } else if (mobeffectlist1.isInstant()) {
+ j = 1;
+ }
+
+ if (astring.length >= 4) {
+ l = a(astring[3], 0, 255);
+ }
+
+ boolean flag = true;
+
+ if (astring.length >= 5 && "true".equalsIgnoreCase(astring[4])) {
+ flag = false;
+ }
+
+ if (k > 0) {
+ MobEffect mobeffect = new MobEffect(i, j, l, false, flag);
+
+ entityliving.addEffect(mobeffect);
+ a(icommandlistener, this, "commands.effect.success", new Object[] { new ChatMessage(mobeffect.g(), new Object[0]), Integer.valueOf(i), Integer.valueOf(l), entityliving.getName(), Integer.valueOf(k)});
+ } else if (entityliving.hasEffect(i)) {
+ entityliving.removeEffect(i);
+ a(icommandlistener, this, "commands.effect.success.removed", new Object[] { new ChatMessage(mobeffectlist1.a(), new Object[0]), entityliving.getName()});
+ } else {
+ throw new CommandException("commands.effect.failure.notActive", new Object[] { new ChatMessage(mobeffectlist1.a(), new Object[0]), entityliving.getName()});
+ }
+ } else {
+ throw new ExceptionInvalidNumber("commands.effect.notFound", new Object[] { Integer.valueOf(i)});
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) MobEffectList.c()) : (astring.length == 5 ? a(astring, new String[] { "true", "false"}) : null));
+ }
+
+ protected String[] d() {
+ return MinecraftServer.getServer().getPlayers();
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandEnchant.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEnchant.java
new file mode 100644
index 0000000..500a6a9
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEnchant.java
@@ -0,0 +1,98 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.List;
+
+public class CommandEnchant extends CommandAbstract {
+
+ public CommandEnchant() {}
+
+ public String getCommand() {
+ return "enchant";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.enchant.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.enchant.usage", new Object[0]);
+ } else {
+ EntityPlayer entityplayer = a(icommandlistener, astring[0]);
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 0);
+
+ int i;
+
+ try {
+ i = a(astring[1], 0);
+ } catch (ExceptionInvalidNumber exceptioninvalidnumber) {
+ Enchantment enchantment = Enchantment.getByName(astring[1]);
+
+ if (enchantment == null) {
+ throw exceptioninvalidnumber;
+ }
+
+ i = enchantment.id;
+ }
+
+ int j = 1;
+ ItemStack itemstack = entityplayer.bZ();
+
+ if (itemstack == null) {
+ throw new CommandException("commands.enchant.noItem", new Object[0]);
+ } else {
+ Enchantment enchantment1 = Enchantment.getById(i);
+
+ if (enchantment1 == null) {
+ throw new ExceptionInvalidNumber("commands.enchant.notFound", new Object[] { Integer.valueOf(i)});
+ } else if (!enchantment1.canEnchant(itemstack)) {
+ throw new CommandException("commands.enchant.cantEnchant", new Object[0]);
+ } else {
+ if (astring.length >= 3) {
+ j = a(astring[2], enchantment1.getStartLevel(), enchantment1.getMaxLevel());
+ }
+
+ if (itemstack.hasTag()) {
+ NBTTagList nbttaglist = itemstack.getEnchantments();
+
+ if (nbttaglist != null) {
+ for (int k = 0; k < nbttaglist.size(); ++k) {
+ short short0 = nbttaglist.get(k).getShort("id");
+
+ if (Enchantment.getById(short0) != null) {
+ Enchantment enchantment2 = Enchantment.getById(short0);
+
+ if (!enchantment2.a(enchantment1)) {
+ throw new CommandException("commands.enchant.cantCombine", new Object[] { enchantment1.d(j), enchantment2.d(nbttaglist.get(k).getShort("lvl"))});
+ }
+ }
+ }
+ }
+ }
+
+ itemstack.addEnchantment(enchantment1, j);
+ a(icommandlistener, this, "commands.enchant.success", new Object[0]);
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 1);
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) Enchantment.getEffects()) : null);
+ }
+
+ protected String[] d() {
+ return MinecraftServer.getServer().getPlayers();
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandEntityData.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEntityData.java
new file mode 100644
index 0000000..464c1d3
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandEntityData.java
@@ -0,0 +1,57 @@
+package net.minecraft.server;
+
+public class CommandEntityData extends CommandAbstract {
+
+ public CommandEntityData() {}
+
+ public String getCommand() {
+ return "entitydata";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.entitydata.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.entitydata.usage", new Object[0]);
+ } else {
+ Entity entity = b(icommandlistener, astring[0]);
+
+ if (entity instanceof EntityHuman) {
+ throw new CommandException("commands.entitydata.noPlayers", new Object[] { entity.getScoreboardDisplayName()});
+ } else {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+
+ entity.e(nbttagcompound);
+ NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttagcompound.clone();
+
+ NBTTagCompound nbttagcompound2;
+
+ try {
+ nbttagcompound2 = MojangsonParser.parse(a(icommandlistener, astring, 1).c());
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.entitydata.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+
+ nbttagcompound2.remove("UUIDMost");
+ nbttagcompound2.remove("UUIDLeast");
+ nbttagcompound.a(nbttagcompound2);
+ if (nbttagcompound.equals(nbttagcompound1)) {
+ throw new CommandException("commands.entitydata.failed", new Object[] { nbttagcompound.toString()});
+ } else {
+ entity.f(nbttagcompound);
+ a(icommandlistener, this, "commands.entitydata.success", new Object[] { nbttagcompound.toString()});
+ }
+ }
+ }
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandException.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandException.java
new file mode 100644
index 0000000..abe7b7b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandException.java
@@ -0,0 +1,15 @@
+package net.minecraft.server;
+
+public class CommandException extends Exception {
+
+ private final Object[] a;
+
+ public CommandException(String s, Object... aobject) {
+ super(s);
+ this.a = aobject;
+ }
+
+ public Object[] getArgs() {
+ return this.a;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandExecute.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandFill.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandFill.java
new file mode 100644
index 0000000..aab43b1
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandFill.java
@@ -0,0 +1,168 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+public class CommandFill extends CommandAbstract {
+
+ public CommandFill() {}
+
+ public String getCommand() {
+ return "fill";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.fill.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 7) {
+ throw new ExceptionUsage("commands.fill.usage", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0);
+ BlockPosition blockposition = a(icommandlistener, astring, 0, false);
+ BlockPosition blockposition1 = a(icommandlistener, astring, 3, false);
+ Block block = CommandAbstract.g(icommandlistener, astring[6]);
+ int i = 0;
+
+ if (astring.length >= 8) {
+ i = a(astring[7], 0, 15);
+ }
+
+ BlockPosition blockposition2 = new BlockPosition(Math.min(blockposition.getX(), blockposition1.getX()), Math.min(blockposition.getY(), blockposition1.getY()), Math.min(blockposition.getZ(), blockposition1.getZ()));
+ BlockPosition blockposition3 = new BlockPosition(Math.max(blockposition.getX(), blockposition1.getX()), Math.max(blockposition.getY(), blockposition1.getY()), Math.max(blockposition.getZ(), blockposition1.getZ()));
+ int j = (blockposition3.getX() - blockposition2.getX() + 1) * (blockposition3.getY() - blockposition2.getY() + 1) * (blockposition3.getZ() - blockposition2.getZ() + 1);
+
+ if (j > '\u8000') {
+ throw new CommandException("commands.fill.tooManyBlocks", new Object[] { Integer.valueOf(j), Integer.valueOf('\u8000')});
+ } else if (blockposition2.getY() >= 0 && blockposition3.getY() < 256) {
+ World world = icommandlistener.getWorld();
+
+ for (int k = blockposition2.getZ(); k < blockposition3.getZ() + 16; k += 16) {
+ for (int l = blockposition2.getX(); l < blockposition3.getX() + 16; l += 16) {
+ if (!world.isLoaded(new BlockPosition(l, blockposition3.getY() - blockposition2.getY(), k))) {
+ throw new CommandException("commands.fill.outOfWorld", new Object[0]);
+ }
+ }
+ }
+
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+ boolean flag = false;
+
+ if (astring.length >= 10 && block.isTileEntity()) {
+ String s = a(icommandlistener, astring, 9).c();
+
+ try {
+ nbttagcompound = MojangsonParser.parse(s);
+ flag = true;
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.fill.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ ArrayList arraylist = Lists.newArrayList();
+
+ j = 0;
+
+ for (int i1 = blockposition2.getZ(); i1 <= blockposition3.getZ(); ++i1) {
+ for (int j1 = blockposition2.getY(); j1 <= blockposition3.getY(); ++j1) {
+ for (int k1 = blockposition2.getX(); k1 <= blockposition3.getX(); ++k1) {
+ BlockPosition blockposition4 = new BlockPosition(k1, j1, i1);
+ IBlockData iblockdata;
+
+ if (astring.length >= 9) {
+ if (!astring[8].equals("outline") && !astring[8].equals("hollow")) {
+ if (astring[8].equals("destroy")) {
+ world.setAir(blockposition4, true);
+ } else if (astring[8].equals("keep")) {
+ if (!world.isEmpty(blockposition4)) {
+ continue;
+ }
+ } else if (astring[8].equals("replace") && !block.isTileEntity()) {
+ if (astring.length > 9) {
+ Block block1 = CommandAbstract.g(icommandlistener, astring[9]);
+
+ if (world.getType(blockposition4).getBlock() != block1) {
+ continue;
+ }
+ }
+
+ if (astring.length > 10) {
+ int l1 = CommandAbstract.a(astring[10]);
+
+ iblockdata = world.getType(blockposition4);
+ if (iblockdata.getBlock().toLegacyData(iblockdata) != l1) {
+ continue;
+ }
+ }
+ }
+ } else if (k1 != blockposition2.getX() && k1 != blockposition3.getX() && j1 != blockposition2.getY() && j1 != blockposition3.getY() && i1 != blockposition2.getZ() && i1 != blockposition3.getZ()) {
+ if (astring[8].equals("hollow")) {
+ world.setTypeAndData(blockposition4, Blocks.AIR.getBlockData(), 2);
+ arraylist.add(blockposition4);
+ }
+ continue;
+ }
+ }
+
+ TileEntity tileentity = world.getTileEntity(blockposition4);
+
+ if (tileentity != null) {
+ if (tileentity instanceof IInventory) {
+ ((IInventory) tileentity).l();
+ }
+
+ world.setTypeAndData(blockposition4, Blocks.BARRIER.getBlockData(), block == Blocks.BARRIER ? 2 : 4);
+ }
+
+ iblockdata = block.fromLegacyData(i);
+ if (world.setTypeAndData(blockposition4, iblockdata, 2)) {
+ arraylist.add(blockposition4);
+ ++j;
+ if (flag) {
+ TileEntity tileentity1 = world.getTileEntity(blockposition4);
+
+ if (tileentity1 != null) {
+ nbttagcompound.setInt("x", blockposition4.getX());
+ nbttagcompound.setInt("y", blockposition4.getY());
+ nbttagcompound.setInt("z", blockposition4.getZ());
+ tileentity1.a(nbttagcompound);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Iterator iterator = arraylist.iterator();
+
+ while (iterator.hasNext()) {
+ BlockPosition blockposition5 = (BlockPosition) iterator.next();
+ Block block2 = world.getType(blockposition5).getBlock();
+
+ world.update(blockposition5, block2);
+ }
+
+ if (j <= 0) {
+ throw new CommandException("commands.fill.failed", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, j);
+ a(icommandlistener, this, "commands.fill.success", new Object[] { Integer.valueOf(j)});
+ }
+ } else {
+ throw new CommandException("commands.fill.outOfWorld", new Object[0]);
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length > 3 && astring.length <= 6 ? a(astring, 3, blockposition) : (astring.length == 7 ? a(astring, (Collection) Block.REGISTRY.keySet()) : (astring.length == 9 ? a(astring, new String[] { "replace", "destroy", "keep", "hollow", "outline"}) : (astring.length == 10 && "replace".equals(astring[8]) ? a(astring, (Collection) Block.REGISTRY.keySet()) : null))));
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemode.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemodeDefault.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemodeDefault.java
new file mode 100644
index 0000000..cfeaf32
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamemodeDefault.java
@@ -0,0 +1,42 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+
+public class CommandGamemodeDefault extends CommandGamemode {
+
+ public CommandGamemodeDefault() {}
+
+ public String getCommand() {
+ return "defaultgamemode";
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.defaultgamemode.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length <= 0) {
+ throw new ExceptionUsage("commands.defaultgamemode.usage", new Object[0]);
+ } else {
+ WorldSettings.EnumGamemode worldsettings_enumgamemode = this.h(icommandlistener, astring[0]);
+
+ this.a(worldsettings_enumgamemode);
+ a(icommandlistener, this, "commands.defaultgamemode.success", new Object[] { new ChatMessage("gameMode." + worldsettings_enumgamemode.b(), new Object[0])});
+ }
+ }
+
+ protected void a(WorldSettings.EnumGamemode worldsettings_enumgamemode) {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+
+ minecraftserver.setGamemode(worldsettings_enumgamemode);
+ EntityPlayer entityplayer;
+
+ if (minecraftserver.getForceGamemode()) {
+ for (Iterator iterator = MinecraftServer.getServer().getPlayerList().v().iterator(); iterator.hasNext(); entityplayer.fallDistance = 0.0F) {
+ entityplayer = (EntityPlayer) iterator.next();
+ entityplayer.a(worldsettings_enumgamemode);
+ }
+ }
+
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandGamerule.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandGive.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGive.java
new file mode 100644
index 0000000..2449723
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandGive.java
@@ -0,0 +1,82 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.List;
+
+public class CommandGive extends CommandAbstract {
+
+ public CommandGive() {}
+
+ public String getCommand() {
+ return "give";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.give.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.give.usage", new Object[0]);
+ } else {
+ EntityPlayer entityplayer = a(icommandlistener, astring[0]);
+ Item item = f(icommandlistener, astring[1]);
+ int i = astring.length >= 3 ? a(astring[2], 1, 64) : 1;
+ int j = astring.length >= 4 ? a(astring[3]) : 0;
+ ItemStack itemstack = new ItemStack(item, i, j);
+
+ if (astring.length >= 5) {
+ String s = a(icommandlistener, astring, 4).c();
+
+ try {
+ itemstack.setTag(MojangsonParser.parse(s));
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.give.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ boolean flag = entityplayer.inventory.pickup(itemstack);
+
+ if (flag) {
+ entityplayer.world.makeSound(entityplayer, "random.pop", 0.2F, ((entityplayer.bc().nextFloat() - entityplayer.bc().nextFloat()) * 0.7F + 1.0F) * 2.0F);
+ entityplayer.defaultContainer.b();
+ }
+
+ EntityItem entityitem;
+
+ if (flag && itemstack.count <= 0) {
+ itemstack.count = 1;
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, i);
+ entityitem = entityplayer.drop(itemstack, false);
+ if (entityitem != null) {
+ entityitem.v();
+ }
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, i - itemstack.count);
+ entityitem = entityplayer.drop(itemstack, false);
+ if (entityitem != null) {
+ entityitem.q();
+ entityitem.b(entityplayer.getName());
+ }
+ }
+
+ a(icommandlistener, this, "commands.give.success", new Object[] { itemstack.C(), Integer.valueOf(i), entityplayer.getName()});
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, this.d()) : (astring.length == 2 ? a(astring, (Collection) Item.REGISTRY.keySet()) : null);
+ }
+
+ protected String[] d() {
+ return MinecraftServer.getServer().getPlayers();
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandHandler.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHandler.java
new file mode 100644
index 0000000..f0c7e1f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHandler.java
@@ -0,0 +1,186 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class CommandHandler implements ICommandHandler {
+
+ private static final Logger a = LogManager.getLogger();
+ private final Map b = Maps.newHashMap();
+ private final Set c = Sets.newHashSet();
+
+ public CommandHandler() {}
+
+ public int a(ICommandListener icommandlistener, String s) {
+ s = s.trim();
+ if (s.startsWith("/")) {
+ s = s.substring(1);
+ }
+
+ String[] astring = s.split(" ");
+ String s1 = astring[0];
+
+ astring = a(astring);
+ ICommand icommand = (ICommand) this.b.get(s1);
+ int i = this.a(icommand, astring);
+ int j = 0;
+ ChatMessage chatmessage;
+
+ if (icommand == null) {
+ chatmessage = new ChatMessage("commands.generic.notFound", new Object[0]);
+ chatmessage.getChatModifier().setColor(EnumChatFormat.RED);
+ icommandlistener.sendMessage(chatmessage);
+ } else if (icommand.canUse(icommandlistener)) {
+ if (i > -1) {
+ List list = PlayerSelector.getPlayers(icommandlistener, astring[i], Entity.class);
+ String s2 = astring[i];
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ENTITIES, list.size());
+ Iterator iterator = list.iterator();
+
+ while (iterator.hasNext()) {
+ Entity entity = (Entity) iterator.next();
+
+ astring[i] = entity.getUniqueID().toString();
+ if (this.a(icommandlistener, astring, icommand, s)) {
+ ++j;
+ }
+ }
+
+ astring[i] = s2;
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ENTITIES, 1);
+ if (this.a(icommandlistener, astring, icommand, s)) {
+ ++j;
+ }
+ }
+ } else {
+ chatmessage = new ChatMessage("commands.generic.permission", new Object[0]);
+ chatmessage.getChatModifier().setColor(EnumChatFormat.RED);
+ icommandlistener.sendMessage(chatmessage);
+ }
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.SUCCESS_COUNT, j);
+ return j;
+ }
+
+ protected boolean a(ICommandListener icommandlistener, String[] astring, ICommand icommand, String s) {
+ ChatMessage chatmessage;
+
+ try {
+ icommand.execute(icommandlistener, astring);
+ return true;
+ } catch (ExceptionUsage exceptionusage) {
+ chatmessage = new ChatMessage("commands.generic.usage", new Object[] { new ChatMessage(exceptionusage.getMessage(), exceptionusage.getArgs())});
+ chatmessage.getChatModifier().setColor(EnumChatFormat.RED);
+ icommandlistener.sendMessage(chatmessage);
+ } catch (CommandException commandexception) {
+ chatmessage = new ChatMessage(commandexception.getMessage(), commandexception.getArgs());
+ chatmessage.getChatModifier().setColor(EnumChatFormat.RED);
+ icommandlistener.sendMessage(chatmessage);
+ } catch (Throwable throwable) {
+ chatmessage = new ChatMessage("commands.generic.exception", new Object[0]);
+ chatmessage.getChatModifier().setColor(EnumChatFormat.RED);
+ icommandlistener.sendMessage(chatmessage);
+ CommandHandler.a.warn("Couldn\'t process command: \'" + s + "\'");
+ }
+
+ return false;
+ }
+
+ public ICommand a(ICommand icommand) {
+ this.b.put(icommand.getCommand(), icommand);
+ this.c.add(icommand);
+ Iterator iterator = icommand.b().iterator();
+
+ while (iterator.hasNext()) {
+ String s = (String) iterator.next();
+ ICommand icommand1 = (ICommand) this.b.get(s);
+
+ if (icommand1 == null || !icommand1.getCommand().equals(s)) {
+ this.b.put(s, icommand);
+ }
+ }
+
+ return icommand;
+ }
+
+ private static String[] a(String[] astring) {
+ String[] astring1 = new String[astring.length - 1];
+
+ System.arraycopy(astring, 1, astring1, 0, astring.length - 1);
+ return astring1;
+ }
+
+ public List a(ICommandListener icommandlistener, String s, BlockPosition blockposition) {
+ String[] astring = s.split(" ", -1);
+ String s1 = astring[0];
+
+ if (astring.length == 1) {
+ ArrayList arraylist = Lists.newArrayList();
+ Iterator iterator = this.b.entrySet().iterator();
+
+ while (iterator.hasNext()) {
+ Entry entry = (Entry) iterator.next();
+
+ if (CommandAbstract.a(s1, (String) entry.getKey()) && ((ICommand) entry.getValue()).canUse(icommandlistener)) {
+ arraylist.add(entry.getKey());
+ }
+ }
+
+ return arraylist;
+ } else {
+ if (astring.length > 1) {
+ ICommand icommand = (ICommand) this.b.get(s1);
+
+ if (icommand != null && icommand.canUse(icommandlistener)) {
+ return icommand.tabComplete(icommandlistener, a(astring), blockposition);
+ }
+ }
+
+ return null;
+ }
+ }
+
+ public List a(ICommandListener icommandlistener) {
+ ArrayList arraylist = Lists.newArrayList();
+ Iterator iterator = this.c.iterator();
+
+ while (iterator.hasNext()) {
+ ICommand icommand = (ICommand) iterator.next();
+
+ if (icommand.canUse(icommandlistener)) {
+ arraylist.add(icommand);
+ }
+ }
+
+ return arraylist;
+ }
+
+ public Map getCommands() {
+ return this.b;
+ }
+
+ private int a(ICommand icommand, String[] astring) {
+ if (icommand == null) {
+ return -1;
+ } else {
+ for (int i = 0; i < astring.length; ++i) {
+ if (icommand.isListStart(astring, i) && PlayerSelector.isList(astring[i])) {
+ return i;
+ }
+ }
+
+ return -1;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandHelp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHelp.java
new file mode 100644
index 0000000..b490b13
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandHelp.java
@@ -0,0 +1,97 @@
+package net.minecraft.server;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class CommandHelp extends CommandAbstract {
+
+ public CommandHelp() {}
+
+ public String getCommand() {
+ return "help";
+ }
+
+ public int a() {
+ return 0;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.help.usage";
+ }
+
+ public List b() {
+ return Arrays.asList(new String[] { "?"});
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ List list = this.d(icommandlistener);
+ boolean flag = true;
+ int i = (list.size() - 1) / 7;
+ boolean flag1 = false;
+
+ int j;
+
+ try {
+ j = astring.length == 0 ? 0 : a(astring[0], 1, i + 1) - 1;
+ } catch (ExceptionInvalidNumber exceptioninvalidnumber) {
+ Map map = this.d();
+ ICommand icommand = (ICommand) map.get(astring[0]);
+
+ if (icommand != null) {
+ throw new ExceptionUsage(icommand.getUsage(icommandlistener), new Object[0]);
+ }
+
+ if (MathHelper.a(astring[0], -1) != -1) {
+ throw exceptioninvalidnumber;
+ }
+
+ throw new ExceptionUnknownCommand();
+ }
+
+ int k = Math.min((j + 1) * 7, list.size());
+ ChatMessage chatmessage = new ChatMessage("commands.help.header", new Object[] { Integer.valueOf(j + 1), Integer.valueOf(i + 1)});
+
+ chatmessage.getChatModifier().setColor(EnumChatFormat.DARK_GREEN);
+ icommandlistener.sendMessage(chatmessage);
+
+ for (int l = j * 7; l < k; ++l) {
+ ICommand icommand1 = (ICommand) list.get(l);
+ ChatMessage chatmessage1 = new ChatMessage(icommand1.getUsage(icommandlistener), new Object[0]);
+
+ chatmessage1.getChatModifier().setChatClickable(new ChatClickable(ChatClickable.EnumClickAction.SUGGEST_COMMAND, "/" + icommand1.getCommand() + " "));
+ icommandlistener.sendMessage(chatmessage1);
+ }
+
+ if (j == 0 && icommandlistener instanceof EntityHuman) {
+ ChatMessage chatmessage2 = new ChatMessage("commands.help.footer", new Object[0]);
+
+ chatmessage2.getChatModifier().setColor(EnumChatFormat.GREEN);
+ icommandlistener.sendMessage(chatmessage2);
+ }
+
+ }
+
+ protected List d(ICommandListener icommandlistener) {
+ List list = MinecraftServer.getServer().getCommandHandler().a(icommandlistener);
+
+ Collections.sort(list);
+ return list;
+ }
+
+ protected Map d() {
+ return MinecraftServer.getServer().getCommandHandler().getCommands();
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ if (astring.length == 1) {
+ Set set = this.d().keySet();
+
+ return a(astring, (String[]) set.toArray(new String[set.size()]));
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandIdleTimeout.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandIdleTimeout.java
new file mode 100644
index 0000000..2d11e2e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandIdleTimeout.java
@@ -0,0 +1,29 @@
+package net.minecraft.server;
+
+public class CommandIdleTimeout extends CommandAbstract {
+
+ public CommandIdleTimeout() {}
+
+ public String getCommand() {
+ return "setidletimeout";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.setidletimeout.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length != 1) {
+ throw new ExceptionUsage("commands.setidletimeout.usage", new Object[0]);
+ } else {
+ int i = a(astring[0], 0);
+
+ MinecraftServer.getServer().setIdleTimeout(i);
+ a(icommandlistener, this, "commands.setidletimeout.success", new Object[] { Integer.valueOf(i)});
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandKick.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKick.java
new file mode 100644
index 0000000..909087d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKick.java
@@ -0,0 +1,51 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandKick extends CommandAbstract {
+
+ public CommandKick() {}
+
+ public String getCommand() {
+ return "kick";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.kick.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length > 0 && astring[0].length() > 1) {
+ EntityPlayer entityplayer = MinecraftServer.getServer().getPlayerList().getPlayer(astring[0]);
+ String s = "Kicked by an operator.";
+ boolean flag = false;
+
+ if (entityplayer == null) {
+ throw new ExceptionPlayerNotFound();
+ } else {
+ if (astring.length >= 2) {
+ s = a(icommandlistener, astring, 1).c();
+ flag = true;
+ }
+
+ entityplayer.playerConnection.disconnect(s);
+ if (flag) {
+ a(icommandlistener, this, "commands.kick.success.reason", new Object[] { entityplayer.getName(), s});
+ } else {
+ a(icommandlistener, this, "commands.kick.success", new Object[] { entityplayer.getName()});
+ }
+
+ }
+ } else {
+ throw new ExceptionUsage("commands.kick.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length >= 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandKill.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKill.java
new file mode 100644
index 0000000..682909b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandKill.java
@@ -0,0 +1,42 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandKill extends CommandAbstract {
+
+ public CommandKill() {}
+
+ public String getCommand() {
+ return "kill";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.kill.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length == 0) {
+ EntityPlayer entityplayer = b(icommandlistener);
+
+ entityplayer.G();
+ a(icommandlistener, this, "commands.kill.successful", new Object[] { entityplayer.getScoreboardDisplayName()});
+ } else {
+ Entity entity = b(icommandlistener, astring[0]);
+
+ entity.G();
+ a(icommandlistener, this, "commands.kill.successful", new Object[] { entity.getScoreboardDisplayName()});
+ }
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandList.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandList.java
new file mode 100644
index 0000000..f72f4bc
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandList.java
@@ -0,0 +1,26 @@
+package net.minecraft.server;
+
+public class CommandList extends CommandAbstract {
+
+ public CommandList() {}
+
+ public String getCommand() {
+ return "list";
+ }
+
+ public int a() {
+ return 0;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.players.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ int i = MinecraftServer.getServer().I();
+
+ icommandlistener.sendMessage(new ChatMessage("commands.players.list", new Object[] { Integer.valueOf(i), Integer.valueOf(MinecraftServer.getServer().J())}));
+ icommandlistener.sendMessage(new ChatComponentText(MinecraftServer.getServer().getPlayerList().b(astring.length > 0 && "uuids".equalsIgnoreCase(astring[0]))));
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, i);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandMe.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandMe.java
new file mode 100644
index 0000000..a1bb5a4
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandMe.java
@@ -0,0 +1,34 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandMe extends CommandAbstract {
+
+ public CommandMe() {}
+
+ public String getCommand() {
+ return "me";
+ }
+
+ public int a() {
+ return 0;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.me.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length <= 0) {
+ throw new ExceptionUsage("commands.me.usage", new Object[0]);
+ } else {
+ IChatBaseComponent ichatbasecomponent = b(icommandlistener, astring, 0, !(icommandlistener instanceof EntityHuman));
+
+ MinecraftServer.getServer().getPlayerList().sendMessage(new ChatMessage("chat.type.emote", new Object[] { icommandlistener.getScoreboardDisplayName(), ichatbasecomponent}));
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return a(astring, MinecraftServer.getServer().getPlayers());
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandObjectiveExecutor.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandObjectiveExecutor.java
new file mode 100644
index 0000000..53bf236
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandObjectiveExecutor.java
@@ -0,0 +1,231 @@
+package net.minecraft.server;
+
+public class CommandObjectiveExecutor {
+
+ private static final int a = CommandObjectiveExecutor.EnumCommandResult.values().length;
+ private static final String[] b = new String[CommandObjectiveExecutor.a];
+ private String[] c;
+ private String[] d;
+
+ public CommandObjectiveExecutor() {
+ this.c = CommandObjectiveExecutor.b;
+ this.d = CommandObjectiveExecutor.b;
+ }
+
+ public void a(final ICommandListener icommandlistener, CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult, int i) {
+ String s = this.c[commandobjectiveexecutor_enumcommandresult.a()];
+
+ if (s != null) {
+ ICommandListener icommandlistener1 = new ICommandListener() {
+ public String getName() {
+ return icommandlistener.getName();
+ }
+
+ public IChatBaseComponent getScoreboardDisplayName() {
+ return icommandlistener.getScoreboardDisplayName();
+ }
+
+ public void sendMessage(IChatBaseComponent ichatbasecomponent) {
+ icommandlistener.sendMessage(ichatbasecomponent);
+ }
+
+ public boolean a(int i, String s) {
+ return true;
+ }
+
+ public BlockPosition getChunkCoordinates() {
+ return icommandlistener.getChunkCoordinates();
+ }
+
+ public Vec3D d() {
+ return icommandlistener.d();
+ }
+
+ public World getWorld() {
+ return icommandlistener.getWorld();
+ }
+
+ public Entity f() {
+ return icommandlistener.f();
+ }
+
+ public boolean getSendCommandFeedback() {
+ return icommandlistener.getSendCommandFeedback();
+ }
+
+ public void a(CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult, int i) {
+ icommandlistener.a(commandobjectiveexecutor_enumcommandresult, i);
+ }
+ };
+
+ String s1;
+
+ try {
+ s1 = CommandAbstract.e(icommandlistener1, s);
+ } catch (ExceptionEntityNotFound exceptionentitynotfound) {
+ return;
+ }
+
+ String s2 = this.d[commandobjectiveexecutor_enumcommandresult.a()];
+
+ if (s2 != null) {
+ Scoreboard scoreboard = icommandlistener.getWorld().getScoreboard();
+ ScoreboardObjective scoreboardobjective = scoreboard.getObjective(s2);
+
+ if (scoreboardobjective != null) {
+ if (scoreboard.b(s1, scoreboardobjective)) {
+ ScoreboardScore scoreboardscore = scoreboard.getPlayerScoreForObjective(s1, scoreboardobjective);
+
+ scoreboardscore.setScore(i);
+ }
+ }
+ }
+ }
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ if (nbttagcompound.hasKeyOfType("CommandStats", 10)) {
+ NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("CommandStats");
+ CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values();
+ int i = acommandobjectiveexecutor_enumcommandresult.length;
+
+ for (int j = 0; j < i; ++j) {
+ CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j];
+ String s = commandobjectiveexecutor_enumcommandresult.b() + "Name";
+ String s1 = commandobjectiveexecutor_enumcommandresult.b() + "Objective";
+
+ if (nbttagcompound1.hasKeyOfType(s, 8) && nbttagcompound1.hasKeyOfType(s1, 8)) {
+ String s2 = nbttagcompound1.getString(s);
+ String s3 = nbttagcompound1.getString(s1);
+
+ a(this, commandobjectiveexecutor_enumcommandresult, s2, s3);
+ }
+ }
+
+ }
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {
+ NBTTagCompound nbttagcompound1 = new NBTTagCompound();
+ CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values();
+ int i = acommandobjectiveexecutor_enumcommandresult.length;
+
+ for (int j = 0; j < i; ++j) {
+ CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j];
+ String s = this.c[commandobjectiveexecutor_enumcommandresult.a()];
+ String s1 = this.d[commandobjectiveexecutor_enumcommandresult.a()];
+
+ if (s != null && s1 != null) {
+ nbttagcompound1.setString(commandobjectiveexecutor_enumcommandresult.b() + "Name", s);
+ nbttagcompound1.setString(commandobjectiveexecutor_enumcommandresult.b() + "Objective", s1);
+ }
+ }
+
+ if (!nbttagcompound1.isEmpty()) {
+ nbttagcompound.set("CommandStats", nbttagcompound1);
+ }
+
+ }
+
+ public static void a(CommandObjectiveExecutor commandobjectiveexecutor, CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult, String s, String s1) {
+ if (s != null && s.length() != 0 && s1 != null && s1.length() != 0) {
+ if (commandobjectiveexecutor.c == CommandObjectiveExecutor.b || commandobjectiveexecutor.d == CommandObjectiveExecutor.b) {
+ commandobjectiveexecutor.c = new String[CommandObjectiveExecutor.a];
+ commandobjectiveexecutor.d = new String[CommandObjectiveExecutor.a];
+ }
+
+ commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult.a()] = s;
+ commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult.a()] = s1;
+ } else {
+ a(commandobjectiveexecutor, commandobjectiveexecutor_enumcommandresult);
+ }
+ }
+
+ private static void a(CommandObjectiveExecutor commandobjectiveexecutor, CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult) {
+ if (commandobjectiveexecutor.c != CommandObjectiveExecutor.b && commandobjectiveexecutor.d != CommandObjectiveExecutor.b) {
+ commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult.a()] = null;
+ commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult.a()] = null;
+ boolean flag = true;
+ CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values();
+ int i = acommandobjectiveexecutor_enumcommandresult.length;
+
+ for (int j = 0; j < i; ++j) {
+ CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult1 = acommandobjectiveexecutor_enumcommandresult[j];
+
+ if (commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult1.a()] != null && commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult1.a()] != null) {
+ flag = false;
+ break;
+ }
+ }
+
+ if (flag) {
+ commandobjectiveexecutor.c = CommandObjectiveExecutor.b;
+ commandobjectiveexecutor.d = CommandObjectiveExecutor.b;
+ }
+
+ }
+ }
+
+ public void a(CommandObjectiveExecutor commandobjectiveexecutor) {
+ CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.values();
+ int i = acommandobjectiveexecutor_enumcommandresult.length;
+
+ for (int j = 0; j < i; ++j) {
+ CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j];
+
+ a(this, commandobjectiveexecutor_enumcommandresult, commandobjectiveexecutor.c[commandobjectiveexecutor_enumcommandresult.a()], commandobjectiveexecutor.d[commandobjectiveexecutor_enumcommandresult.a()]);
+ }
+
+ }
+
+ public static enum EnumCommandResult {
+
+ SUCCESS_COUNT(0, "SuccessCount"), AFFECTED_BLOCKS(1, "AffectedBlocks"), AFFECTED_ENTITIES(2, "AffectedEntities"), AFFECTED_ITEMS(3, "AffectedItems"), QUERY_RESULT(4, "QueryResult");
+
+ final int f;
+ final String g;
+
+ private EnumCommandResult(int i, String s) {
+ this.f = i;
+ this.g = s;
+ }
+
+ public int a() {
+ return this.f;
+ }
+
+ public String b() {
+ return this.g;
+ }
+
+ public static String[] c() {
+ String[] astring = new String[values().length];
+ int i = 0;
+ CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = values();
+ int j = acommandobjectiveexecutor_enumcommandresult.length;
+
+ for (int k = 0; k < j; ++k) {
+ CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[k];
+
+ astring[i++] = commandobjectiveexecutor_enumcommandresult.b();
+ }
+
+ return astring;
+ }
+
+ public static CommandObjectiveExecutor.EnumCommandResult a(String s) {
+ CommandObjectiveExecutor.EnumCommandResult[] acommandobjectiveexecutor_enumcommandresult = values();
+ int i = acommandobjectiveexecutor_enumcommandresult.length;
+
+ for (int j = 0; j < i; ++j) {
+ CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = acommandobjectiveexecutor_enumcommandresult[j];
+
+ if (commandobjectiveexecutor_enumcommandresult.b().equals(s)) {
+ return commandobjectiveexecutor_enumcommandresult;
+ }
+ }
+
+ return null;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandOp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandOp.java
new file mode 100644
index 0000000..dedac55
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandOp.java
@@ -0,0 +1,60 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import com.mojang.authlib.GameProfile;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CommandOp extends CommandAbstract {
+
+ public CommandOp() {}
+
+ public String getCommand() {
+ return "op";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.op.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length == 1 && astring[0].length() > 0) {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+ GameProfile gameprofile = minecraftserver.getUserCache().getProfile(astring[0]);
+
+ if (gameprofile == null) {
+ throw new CommandException("commands.op.failed", new Object[] { astring[0]});
+ } else {
+ minecraftserver.getPlayerList().addOp(gameprofile);
+ a(icommandlistener, this, "commands.op.success", new Object[] { astring[0]});
+ }
+ } else {
+ throw new ExceptionUsage("commands.op.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ if (astring.length == 1) {
+ String s = astring[astring.length - 1];
+ ArrayList arraylist = Lists.newArrayList();
+ GameProfile[] agameprofile = MinecraftServer.getServer().L();
+ int i = agameprofile.length;
+
+ for (int j = 0; j < i; ++j) {
+ GameProfile gameprofile = agameprofile[j];
+
+ if (!MinecraftServer.getServer().getPlayerList().isOp(gameprofile) && a(s, gameprofile.getName())) {
+ arraylist.add(gameprofile.getName());
+ }
+ }
+
+ return arraylist;
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardon.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardon.java
new file mode 100644
index 0000000..dd507b2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardon.java
@@ -0,0 +1,45 @@
+package net.minecraft.server;
+
+import com.mojang.authlib.GameProfile;
+import java.util.List;
+
+public class CommandPardon extends CommandAbstract {
+
+ public CommandPardon() {}
+
+ public String getCommand() {
+ return "pardon";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.unban.usage";
+ }
+
+ public boolean canUse(ICommandListener icommandlistener) {
+ return MinecraftServer.getServer().getPlayerList().getProfileBans().isEnabled() && super.canUse(icommandlistener);
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length == 1 && astring[0].length() > 0) {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+ GameProfile gameprofile = minecraftserver.getPlayerList().getProfileBans().a(astring[0]);
+
+ if (gameprofile == null) {
+ throw new CommandException("commands.unban.failed", new Object[] { astring[0]});
+ } else {
+ minecraftserver.getPlayerList().getProfileBans().remove(gameprofile);
+ a(icommandlistener, this, "commands.unban.success", new Object[] { astring[0]});
+ }
+ } else {
+ throw new ExceptionUsage("commands.unban.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayerList().getProfileBans().getEntries()) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardonIP.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardonIP.java
new file mode 100644
index 0000000..843513c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPardonIP.java
@@ -0,0 +1,44 @@
+package net.minecraft.server;
+
+import java.util.List;
+import java.util.regex.Matcher;
+
+public class CommandPardonIP extends CommandAbstract {
+
+ public CommandPardonIP() {}
+
+ public String getCommand() {
+ return "pardon-ip";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public boolean canUse(ICommandListener icommandlistener) {
+ return MinecraftServer.getServer().getPlayerList().getIPBans().isEnabled() && super.canUse(icommandlistener);
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.unbanip.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length == 1 && astring[0].length() > 1) {
+ Matcher matcher = CommandBanIp.a.matcher(astring[0]);
+
+ if (matcher.matches()) {
+ MinecraftServer.getServer().getPlayerList().getIPBans().remove(astring[0]);
+ a(icommandlistener, this, "commands.unbanip.success", new Object[] { astring[0]});
+ } else {
+ throw new ExceptionInvalidSyntax("commands.unbanip.invalid", new Object[0]);
+ }
+ } else {
+ throw new ExceptionUsage("commands.unbanip.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayerList().getIPBans().getEntries()) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandParticle.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandParticle.java
new file mode 100644
index 0000000..4fd20bb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandParticle.java
@@ -0,0 +1,99 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandParticle extends CommandAbstract {
+
+ public CommandParticle() {}
+
+ public String getCommand() {
+ return "particle";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.particle.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 8) {
+ throw new ExceptionUsage("commands.particle.usage", new Object[0]);
+ } else {
+ boolean flag = false;
+ EnumParticle enumparticle = null;
+ EnumParticle[] aenumparticle = EnumParticle.values();
+ int i = aenumparticle.length;
+
+ for (int j = 0; j < i; ++j) {
+ EnumParticle enumparticle1 = aenumparticle[j];
+
+ if (enumparticle1.f()) {
+ if (astring[0].startsWith(enumparticle1.b())) {
+ flag = true;
+ enumparticle = enumparticle1;
+ break;
+ }
+ } else if (astring[0].equals(enumparticle1.b())) {
+ flag = true;
+ enumparticle = enumparticle1;
+ break;
+ }
+ }
+
+ if (!flag) {
+ throw new CommandException("commands.particle.notFound", new Object[] { astring[0]});
+ } else {
+ String s = astring[0];
+ Vec3D vec3d = icommandlistener.d();
+ double d0 = (double) ((float) b(vec3d.a, astring[1], true));
+ double d1 = (double) ((float) b(vec3d.b, astring[2], true));
+ double d2 = (double) ((float) b(vec3d.c, astring[3], true));
+ double d3 = (double) ((float) c(astring[4]));
+ double d4 = (double) ((float) c(astring[5]));
+ double d5 = (double) ((float) c(astring[6]));
+ double d6 = (double) ((float) c(astring[7]));
+ int k = 0;
+
+ if (astring.length > 8) {
+ k = a(astring[8], 0);
+ }
+
+ boolean flag1 = false;
+
+ if (astring.length > 9 && "force".equals(astring[9])) {
+ flag1 = true;
+ }
+
+ World world = icommandlistener.getWorld();
+
+ if (world instanceof WorldServer) {
+ WorldServer worldserver = (WorldServer) world;
+ int[] aint = new int[enumparticle.d()];
+
+ if (enumparticle.f()) {
+ String[] astring1 = astring[0].split("_", 3);
+
+ for (int l = 1; l < astring1.length; ++l) {
+ try {
+ aint[l - 1] = Integer.parseInt(astring1[l]);
+ } catch (NumberFormatException numberformatexception) {
+ throw new CommandException("commands.particle.notFound", new Object[] { astring[0]});
+ }
+ }
+ }
+
+ worldserver.a(enumparticle, flag1, d0, d1, d2, k, d3, d4, d5, d6, aint);
+ a(icommandlistener, this, "commands.particle.success", new Object[] { s, Integer.valueOf(Math.max(k, 1))});
+ }
+
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, EnumParticle.a()) : (astring.length > 1 && astring.length <= 4 ? a(astring, 1, blockposition) : (astring.length == 10 ? a(astring, new String[] { "normal", "force"}) : null));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPlaySound.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPlaySound.java
new file mode 100644
index 0000000..5d051ff
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPlaySound.java
@@ -0,0 +1,100 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandPlaySound extends CommandAbstract {
+
+ public CommandPlaySound() {}
+
+ public String getCommand() {
+ return "playsound";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.playsound.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage(this.getUsage(icommandlistener), new Object[0]);
+ } else {
+ byte b0 = 0;
+ int i = b0 + 1;
+ String s = astring[b0];
+ EntityPlayer entityplayer = a(icommandlistener, astring[i++]);
+ Vec3D vec3d = icommandlistener.d();
+ double d0 = vec3d.a;
+
+ if (astring.length > i) {
+ d0 = b(d0, astring[i++], true);
+ }
+
+ double d1 = vec3d.b;
+
+ if (astring.length > i) {
+ d1 = b(d1, astring[i++], 0, 0, false);
+ }
+
+ double d2 = vec3d.c;
+
+ if (astring.length > i) {
+ d2 = b(d2, astring[i++], true);
+ }
+
+ double d3 = 1.0D;
+
+ if (astring.length > i) {
+ d3 = a(astring[i++], 0.0D, 3.4028234663852886E38D);
+ }
+
+ double d4 = 1.0D;
+
+ if (astring.length > i) {
+ d4 = a(astring[i++], 0.0D, 2.0D);
+ }
+
+ double d5 = 0.0D;
+
+ if (astring.length > i) {
+ d5 = a(astring[i], 0.0D, 1.0D);
+ }
+
+ double d6 = d3 > 1.0D ? d3 * 16.0D : 16.0D;
+ double d7 = entityplayer.f(d0, d1, d2);
+
+ if (d7 > d6) {
+ if (d5 <= 0.0D) {
+ throw new CommandException("commands.playsound.playerTooFar", new Object[] { entityplayer.getName()});
+ }
+
+ double d8 = d0 - entityplayer.locX;
+ double d9 = d1 - entityplayer.locY;
+ double d10 = d2 - entityplayer.locZ;
+ double d11 = Math.sqrt(d8 * d8 + d9 * d9 + d10 * d10);
+
+ if (d11 > 0.0D) {
+ d0 = entityplayer.locX + d8 / d11 * 2.0D;
+ d1 = entityplayer.locY + d9 / d11 * 2.0D;
+ d2 = entityplayer.locZ + d10 / d11 * 2.0D;
+ }
+
+ d3 = d5;
+ }
+
+ entityplayer.playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect(s, d0, d1, d2, (float) d3, (float) d4));
+ a(icommandlistener, this, "commands.playsound.success", new Object[] { s, entityplayer.getName()});
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 2 ? a(astring, MinecraftServer.getServer().getPlayers()) : (astring.length > 2 && astring.length <= 5 ? a(astring, 2, blockposition) : null);
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 1;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandPublish.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPublish.java
new file mode 100644
index 0000000..0800672
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandPublish.java
@@ -0,0 +1,25 @@
+package net.minecraft.server;
+
+public class CommandPublish extends CommandAbstract {
+
+ public CommandPublish() {}
+
+ public String getCommand() {
+ return "publish";
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.publish.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ String s = MinecraftServer.getServer().a(WorldSettings.EnumGamemode.SURVIVAL, false);
+
+ if (s != null) {
+ a(icommandlistener, this, "commands.publish.started", new Object[] { s});
+ } else {
+ a(icommandlistener, this, "commands.publish.failed", new Object[0]);
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandReplaceItem.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandReplaceItem.java
new file mode 100644
index 0000000..4f6b19b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandReplaceItem.java
@@ -0,0 +1,185 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Maps;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+public class CommandReplaceItem extends CommandAbstract {
+
+ private static final Map a = Maps.newHashMap();
+
+ public CommandReplaceItem() {}
+
+ public String getCommand() {
+ return "replaceitem";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.replaceitem.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 1) {
+ throw new ExceptionUsage("commands.replaceitem.usage", new Object[0]);
+ } else {
+ boolean flag;
+
+ if (astring[0].equals("entity")) {
+ flag = false;
+ } else {
+ if (!astring[0].equals("block")) {
+ throw new ExceptionUsage("commands.replaceitem.usage", new Object[0]);
+ }
+
+ flag = true;
+ }
+
+ byte b0;
+
+ if (flag) {
+ if (astring.length < 6) {
+ throw new ExceptionUsage("commands.replaceitem.block.usage", new Object[0]);
+ }
+
+ b0 = 4;
+ } else {
+ if (astring.length < 4) {
+ throw new ExceptionUsage("commands.replaceitem.entity.usage", new Object[0]);
+ }
+
+ b0 = 2;
+ }
+
+ int i = b0 + 1;
+ int j = this.e(astring[b0]);
+
+ Item item;
+
+ try {
+ item = f(icommandlistener, astring[i]);
+ } catch (ExceptionInvalidNumber exceptioninvalidnumber) {
+ if (Block.getByName(astring[i]) != Blocks.AIR) {
+ throw exceptioninvalidnumber;
+ }
+
+ item = null;
+ }
+
+ ++i;
+ int k = astring.length > i ? a(astring[i++], 1, 64) : 1;
+ int l = astring.length > i ? a(astring[i++]) : 0;
+ ItemStack itemstack = new ItemStack(item, k, l);
+
+ if (astring.length > i) {
+ String s = a(icommandlistener, astring, i).c();
+
+ try {
+ itemstack.setTag(MojangsonParser.parse(s));
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.replaceitem.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ if (itemstack.getItem() == null) {
+ itemstack = null;
+ }
+
+ if (flag) {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 0);
+ BlockPosition blockposition = a(icommandlistener, astring, 1, false);
+ World world = icommandlistener.getWorld();
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity == null || !(tileentity instanceof IInventory)) {
+ throw new CommandException("commands.replaceitem.noContainer", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+
+ IInventory iinventory = (IInventory) tileentity;
+
+ if (j >= 0 && j < iinventory.getSize()) {
+ iinventory.setItem(j, itemstack);
+ }
+ } else {
+ Entity entity = b(icommandlistener, astring[1]);
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, 0);
+ if (entity instanceof EntityHuman) {
+ ((EntityHuman) entity).defaultContainer.b();
+ }
+
+ if (!entity.d(j, itemstack)) {
+ throw new CommandException("commands.replaceitem.failed", new Object[] { Integer.valueOf(j), Integer.valueOf(k), itemstack == null ? "Air" : itemstack.C()});
+ }
+
+ if (entity instanceof EntityHuman) {
+ ((EntityHuman) entity).defaultContainer.b();
+ }
+ }
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_ITEMS, k);
+ a(icommandlistener, this, "commands.replaceitem.success", new Object[] { Integer.valueOf(j), Integer.valueOf(k), itemstack == null ? "Air" : itemstack.C()});
+ }
+ }
+
+ private int e(String s) throws CommandException {
+ if (!CommandReplaceItem.a.containsKey(s)) {
+ throw new CommandException("commands.generic.parameter.invalid", new Object[] { s});
+ } else {
+ return ((Integer) CommandReplaceItem.a.get(s)).intValue();
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "entity", "block"}) : (astring.length == 2 && astring[0].equals("entity") ? a(astring, this.d()) : (astring.length >= 2 && astring.length <= 4 && astring[0].equals("block") ? a(astring, 1, blockposition) : ((astring.length != 3 || !astring[0].equals("entity")) && (astring.length != 5 || !astring[0].equals("block")) ? ((astring.length != 4 || !astring[0].equals("entity")) && (astring.length != 6 || !astring[0].equals("block")) ? null : a(astring, (Collection) Item.REGISTRY.keySet())) : a(astring, (Collection) CommandReplaceItem.a.keySet()))));
+ }
+
+ protected String[] d() {
+ return MinecraftServer.getServer().getPlayers();
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return astring.length > 0 && astring[0].equals("entity") && i == 1;
+ }
+
+ static {
+ int i;
+
+ for (i = 0; i < 54; ++i) {
+ CommandReplaceItem.a.put("slot.container." + i, Integer.valueOf(i));
+ }
+
+ for (i = 0; i < 9; ++i) {
+ CommandReplaceItem.a.put("slot.hotbar." + i, Integer.valueOf(i));
+ }
+
+ for (i = 0; i < 27; ++i) {
+ CommandReplaceItem.a.put("slot.inventory." + i, Integer.valueOf(9 + i));
+ }
+
+ for (i = 0; i < 27; ++i) {
+ CommandReplaceItem.a.put("slot.enderchest." + i, Integer.valueOf(200 + i));
+ }
+
+ for (i = 0; i < 8; ++i) {
+ CommandReplaceItem.a.put("slot.villager." + i, Integer.valueOf(300 + i));
+ }
+
+ for (i = 0; i < 15; ++i) {
+ CommandReplaceItem.a.put("slot.horse." + i, Integer.valueOf(500 + i));
+ }
+
+ CommandReplaceItem.a.put("slot.weapon", Integer.valueOf(99));
+ CommandReplaceItem.a.put("slot.armor.head", Integer.valueOf(103));
+ CommandReplaceItem.a.put("slot.armor.chest", Integer.valueOf(102));
+ CommandReplaceItem.a.put("slot.armor.legs", Integer.valueOf(101));
+ CommandReplaceItem.a.put("slot.armor.feet", Integer.valueOf(100));
+ CommandReplaceItem.a.put("slot.horse.saddle", Integer.valueOf(400));
+ CommandReplaceItem.a.put("slot.horse.armor", Integer.valueOf(401));
+ CommandReplaceItem.a.put("slot.horse.chest", Integer.valueOf(499));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveAll.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveAll.java
new file mode 100644
index 0000000..62b2e0f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveAll.java
@@ -0,0 +1,60 @@
+package net.minecraft.server;
+
+public class CommandSaveAll extends CommandAbstract {
+
+ public CommandSaveAll() {}
+
+ public String getCommand() {
+ return "save-all";
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.save.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+
+ icommandlistener.sendMessage(new ChatMessage("commands.save.start", new Object[0]));
+ if (minecraftserver.getPlayerList() != null) {
+ minecraftserver.getPlayerList().savePlayers();
+ }
+
+ try {
+ int i;
+ WorldServer worldserver;
+ boolean flag;
+
+ for (i = 0; i < minecraftserver.worldServer.length; ++i) {
+ if (minecraftserver.worldServer[i] != null) {
+ worldserver = minecraftserver.worldServer[i];
+ flag = worldserver.savingDisabled;
+ worldserver.savingDisabled = false;
+ worldserver.save(true, (IProgressUpdate) null);
+ worldserver.savingDisabled = flag;
+ }
+ }
+
+ if (astring.length > 0 && "flush".equals(astring[0])) {
+ icommandlistener.sendMessage(new ChatMessage("commands.save.flushStart", new Object[0]));
+
+ for (i = 0; i < minecraftserver.worldServer.length; ++i) {
+ if (minecraftserver.worldServer[i] != null) {
+ worldserver = minecraftserver.worldServer[i];
+ flag = worldserver.savingDisabled;
+ worldserver.savingDisabled = false;
+ worldserver.flushSave();
+ worldserver.savingDisabled = flag;
+ }
+ }
+
+ icommandlistener.sendMessage(new ChatMessage("commands.save.flushEnd", new Object[0]));
+ }
+ } catch (ExceptionWorldConflict exceptionworldconflict) {
+ a(icommandlistener, this, "commands.save.failed", new Object[] { exceptionworldconflict.getMessage()});
+ return;
+ }
+
+ a(icommandlistener, this, "commands.save.success", new Object[0]);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOff.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOff.java
new file mode 100644
index 0000000..0b490e9
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOff.java
@@ -0,0 +1,36 @@
+package net.minecraft.server;
+
+public class CommandSaveOff extends CommandAbstract {
+
+ public CommandSaveOff() {}
+
+ public String getCommand() {
+ return "save-off";
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.save-off.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+ boolean flag = false;
+
+ for (int i = 0; i < minecraftserver.worldServer.length; ++i) {
+ if (minecraftserver.worldServer[i] != null) {
+ WorldServer worldserver = minecraftserver.worldServer[i];
+
+ if (!worldserver.savingDisabled) {
+ worldserver.savingDisabled = true;
+ flag = true;
+ }
+ }
+ }
+
+ if (flag) {
+ a(icommandlistener, this, "commands.save.disabled", new Object[0]);
+ } else {
+ throw new CommandException("commands.save-off.alreadyOff", new Object[0]);
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOn.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOn.java
new file mode 100644
index 0000000..205c5c7
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSaveOn.java
@@ -0,0 +1,36 @@
+package net.minecraft.server;
+
+public class CommandSaveOn extends CommandAbstract {
+
+ public CommandSaveOn() {}
+
+ public String getCommand() {
+ return "save-on";
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.save-on.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+ boolean flag = false;
+
+ for (int i = 0; i < minecraftserver.worldServer.length; ++i) {
+ if (minecraftserver.worldServer[i] != null) {
+ WorldServer worldserver = minecraftserver.worldServer[i];
+
+ if (worldserver.savingDisabled) {
+ worldserver.savingDisabled = false;
+ flag = true;
+ }
+ }
+ }
+
+ if (flag) {
+ a(icommandlistener, this, "commands.save.enabled", new Object[0]);
+ } else {
+ throw new CommandException("commands.save-on.alreadyOn", new Object[0]);
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSay.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSay.java
new file mode 100644
index 0000000..501075c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSay.java
@@ -0,0 +1,34 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandSay extends CommandAbstract {
+
+ public CommandSay() {}
+
+ public String getCommand() {
+ return "say";
+ }
+
+ public int a() {
+ return 1;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.say.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length > 0 && astring[0].length() > 0) {
+ IChatBaseComponent ichatbasecomponent = b(icommandlistener, astring, 0, true);
+
+ MinecraftServer.getServer().getPlayerList().sendMessage(new ChatMessage("chat.type.announcement", new Object[] { icommandlistener.getScoreboardDisplayName(), ichatbasecomponent}));
+ } else {
+ throw new ExceptionUsage("commands.say.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length >= 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandScoreboard.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSeed.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSeed.java
new file mode 100644
index 0000000..1545eb7
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSeed.java
@@ -0,0 +1,28 @@
+package net.minecraft.server;
+
+public class CommandSeed extends CommandAbstract {
+
+ public CommandSeed() {}
+
+ public boolean canUse(ICommandListener icommandlistener) {
+ return MinecraftServer.getServer().T() || super.canUse(icommandlistener);
+ }
+
+ public String getCommand() {
+ return "seed";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.seed.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ Object object = icommandlistener instanceof EntityHuman ? ((EntityHuman) icommandlistener).world : MinecraftServer.getServer().getWorldServer(0);
+
+ icommandlistener.sendMessage(new ChatMessage("commands.seed.success", new Object[] { Long.valueOf(((World) object).getSeed())}));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetBlock.java
new file mode 100644
index 0000000..0e4e11f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetBlock.java
@@ -0,0 +1,103 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.List;
+
+public class CommandSetBlock extends CommandAbstract {
+
+ public CommandSetBlock() {}
+
+ public String getCommand() {
+ return "setblock";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.setblock.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 4) {
+ throw new ExceptionUsage("commands.setblock.usage", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0);
+ BlockPosition blockposition = a(icommandlistener, astring, 0, false);
+ Block block = CommandAbstract.g(icommandlistener, astring[3]);
+ int i = 0;
+
+ if (astring.length >= 5) {
+ i = a(astring[4], 0, 15);
+ }
+
+ World world = icommandlistener.getWorld();
+
+ if (!world.isLoaded(blockposition)) {
+ throw new CommandException("commands.setblock.outOfWorld", new Object[0]);
+ } else {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+ boolean flag = false;
+
+ if (astring.length >= 7 && block.isTileEntity()) {
+ String s = a(icommandlistener, astring, 6).c();
+
+ try {
+ nbttagcompound = MojangsonParser.parse(s);
+ flag = true;
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.setblock.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ if (astring.length >= 6) {
+ if (astring[5].equals("destroy")) {
+ world.setAir(blockposition, true);
+ if (block == Blocks.AIR) {
+ a(icommandlistener, this, "commands.setblock.success", new Object[0]);
+ return;
+ }
+ } else if (astring[5].equals("keep") && !world.isEmpty(blockposition)) {
+ throw new CommandException("commands.setblock.noChange", new Object[0]);
+ }
+ }
+
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity != null) {
+ if (tileentity instanceof IInventory) {
+ ((IInventory) tileentity).l();
+ }
+
+ world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), block == Blocks.AIR ? 2 : 4);
+ }
+
+ IBlockData iblockdata = block.fromLegacyData(i);
+
+ if (!world.setTypeAndData(blockposition, iblockdata, 2)) {
+ throw new CommandException("commands.setblock.noChange", new Object[0]);
+ } else {
+ if (flag) {
+ TileEntity tileentity1 = world.getTileEntity(blockposition);
+
+ if (tileentity1 != null) {
+ nbttagcompound.setInt("x", blockposition.getX());
+ nbttagcompound.setInt("y", blockposition.getY());
+ nbttagcompound.setInt("z", blockposition.getZ());
+ tileentity1.a(nbttagcompound);
+ }
+ }
+
+ world.update(blockposition, iblockdata.getBlock());
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 1);
+ a(icommandlistener, this, "commands.setblock.success", new Object[0]);
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length == 4 ? a(astring, (Collection) Block.REGISTRY.keySet()) : (astring.length == 6 ? a(astring, new String[] { "replace", "destroy", "keep"}) : null));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetWorldSpawn.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetWorldSpawn.java
new file mode 100644
index 0000000..209d503
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSetWorldSpawn.java
@@ -0,0 +1,42 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandSetWorldSpawn extends CommandAbstract {
+
+ public CommandSetWorldSpawn() {}
+
+ public String getCommand() {
+ return "setworldspawn";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.setworldspawn.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ BlockPosition blockposition;
+
+ if (astring.length == 0) {
+ blockposition = b(icommandlistener).getChunkCoordinates();
+ } else {
+ if (astring.length != 3 || icommandlistener.getWorld() == null) {
+ throw new ExceptionUsage("commands.setworldspawn.usage", new Object[0]);
+ }
+
+ blockposition = a(icommandlistener, astring, 0, true);
+ }
+
+ icommandlistener.getWorld().B(blockposition);
+ MinecraftServer.getServer().getPlayerList().sendAll(new PacketPlayOutSpawnPosition(blockposition));
+ a(icommandlistener, this, "commands.setworldspawn.success", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpawnpoint.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpawnpoint.java
new file mode 100644
index 0000000..aa9434b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpawnpoint.java
@@ -0,0 +1,43 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandSpawnpoint extends CommandAbstract {
+
+ public CommandSpawnpoint() {}
+
+ public String getCommand() {
+ return "spawnpoint";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.spawnpoint.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length > 1 && astring.length < 4) {
+ throw new ExceptionUsage("commands.spawnpoint.usage", new Object[0]);
+ } else {
+ EntityPlayer entityplayer = astring.length > 0 ? a(icommandlistener, astring[0]) : b(icommandlistener);
+ BlockPosition blockposition = astring.length > 3 ? a(icommandlistener, astring, 1, true) : entityplayer.getChunkCoordinates();
+
+ if (entityplayer.world != null) {
+ entityplayer.setRespawnPosition(blockposition, true);
+ a(icommandlistener, this, "commands.spawnpoint.success", new Object[] { entityplayer.getName(), Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : (astring.length > 1 && astring.length <= 4 ? a(astring, 1, blockposition) : null);
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandSpreadPlayers.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandStats.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStats.java
new file mode 100644
index 0000000..7d58f6f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStats.java
@@ -0,0 +1,166 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+public class CommandStats extends CommandAbstract {
+
+ public CommandStats() {}
+
+ public String getCommand() {
+ return "stats";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.stats.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 1) {
+ throw new ExceptionUsage("commands.stats.usage", new Object[0]);
+ } else {
+ boolean flag;
+
+ if (astring[0].equals("entity")) {
+ flag = false;
+ } else {
+ if (!astring[0].equals("block")) {
+ throw new ExceptionUsage("commands.stats.usage", new Object[0]);
+ }
+
+ flag = true;
+ }
+
+ byte b0;
+
+ if (flag) {
+ if (astring.length < 5) {
+ throw new ExceptionUsage("commands.stats.block.usage", new Object[0]);
+ }
+
+ b0 = 4;
+ } else {
+ if (astring.length < 3) {
+ throw new ExceptionUsage("commands.stats.entity.usage", new Object[0]);
+ }
+
+ b0 = 2;
+ }
+
+ int i = b0 + 1;
+ String s = astring[b0];
+
+ if ("set".equals(s)) {
+ if (astring.length < i + 3) {
+ if (i == 5) {
+ throw new ExceptionUsage("commands.stats.block.set.usage", new Object[0]);
+ }
+
+ throw new ExceptionUsage("commands.stats.entity.set.usage", new Object[0]);
+ }
+ } else {
+ if (!"clear".equals(s)) {
+ throw new ExceptionUsage("commands.stats.usage", new Object[0]);
+ }
+
+ if (astring.length < i + 1) {
+ if (i == 5) {
+ throw new ExceptionUsage("commands.stats.block.clear.usage", new Object[0]);
+ }
+
+ throw new ExceptionUsage("commands.stats.entity.clear.usage", new Object[0]);
+ }
+ }
+
+ CommandObjectiveExecutor.EnumCommandResult commandobjectiveexecutor_enumcommandresult = CommandObjectiveExecutor.EnumCommandResult.a(astring[i++]);
+
+ if (commandobjectiveexecutor_enumcommandresult == null) {
+ throw new CommandException("commands.stats.failed", new Object[0]);
+ } else {
+ World world = icommandlistener.getWorld();
+ CommandObjectiveExecutor commandobjectiveexecutor;
+ BlockPosition blockposition;
+ TileEntity tileentity;
+
+ if (flag) {
+ blockposition = a(icommandlistener, astring, 1, false);
+ tileentity = world.getTileEntity(blockposition);
+ if (tileentity == null) {
+ throw new CommandException("commands.stats.noCompatibleBlock", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+
+ if (tileentity instanceof TileEntityCommand) {
+ commandobjectiveexecutor = ((TileEntityCommand) tileentity).c();
+ } else {
+ if (!(tileentity instanceof TileEntitySign)) {
+ throw new CommandException("commands.stats.noCompatibleBlock", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+
+ commandobjectiveexecutor = ((TileEntitySign) tileentity).d();
+ }
+ } else {
+ Entity entity = b(icommandlistener, astring[1]);
+
+ commandobjectiveexecutor = entity.aU();
+ }
+
+ if ("set".equals(s)) {
+ String s1 = astring[i++];
+ String s2 = astring[i];
+
+ if (s1.length() == 0 || s2.length() == 0) {
+ throw new CommandException("commands.stats.failed", new Object[0]);
+ }
+
+ CommandObjectiveExecutor.a(commandobjectiveexecutor, commandobjectiveexecutor_enumcommandresult, s1, s2);
+ a(icommandlistener, this, "commands.stats.success", new Object[] { commandobjectiveexecutor_enumcommandresult.b(), s2, s1});
+ } else if ("clear".equals(s)) {
+ CommandObjectiveExecutor.a(commandobjectiveexecutor, commandobjectiveexecutor_enumcommandresult, (String) null, (String) null);
+ a(icommandlistener, this, "commands.stats.cleared", new Object[] { commandobjectiveexecutor_enumcommandresult.b()});
+ }
+
+ if (flag) {
+ blockposition = a(icommandlistener, astring, 1, false);
+ tileentity = world.getTileEntity(blockposition);
+ tileentity.update();
+ }
+
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "entity", "block"}) : (astring.length == 2 && astring[0].equals("entity") ? a(astring, this.d()) : (astring.length >= 2 && astring.length <= 4 && astring[0].equals("block") ? a(astring, 1, blockposition) : ((astring.length != 3 || !astring[0].equals("entity")) && (astring.length != 5 || !astring[0].equals("block")) ? ((astring.length != 4 || !astring[0].equals("entity")) && (astring.length != 6 || !astring[0].equals("block")) ? ((astring.length != 6 || !astring[0].equals("entity")) && (astring.length != 8 || !astring[0].equals("block")) ? null : a(astring, (Collection) this.e())) : a(astring, CommandObjectiveExecutor.EnumCommandResult.c())) : a(astring, new String[] { "set", "clear"}))));
+ }
+
+ protected String[] d() {
+ return MinecraftServer.getServer().getPlayers();
+ }
+
+ protected List e() {
+ Collection collection = MinecraftServer.getServer().getWorldServer(0).getScoreboard().getObjectives();
+ ArrayList arraylist = Lists.newArrayList();
+ Iterator iterator = collection.iterator();
+
+ while (iterator.hasNext()) {
+ ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next();
+
+ if (!scoreboardobjective.getCriteria().isReadOnly()) {
+ arraylist.add(scoreboardobjective.getName());
+ }
+ }
+
+ return arraylist;
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return astring.length > 0 && astring[0].equals("entity") && i == 1;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandStop.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStop.java
new file mode 100644
index 0000000..40b8a57
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandStop.java
@@ -0,0 +1,22 @@
+package net.minecraft.server;
+
+public class CommandStop extends CommandAbstract {
+
+ public CommandStop() {}
+
+ public String getCommand() {
+ return "stop";
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.stop.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (MinecraftServer.getServer().worldServer != null) {
+ a(icommandlistener, this, "commands.stop.start", new Object[0]);
+ }
+
+ MinecraftServer.getServer().safeShutdown();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandSummon.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSummon.java
new file mode 100644
index 0000000..0581ec1
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandSummon.java
@@ -0,0 +1,104 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.List;
+
+public class CommandSummon extends CommandAbstract {
+
+ public CommandSummon() {}
+
+ public String getCommand() {
+ return "summon";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.summon.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 1) {
+ throw new ExceptionUsage("commands.summon.usage", new Object[0]);
+ } else {
+ String s = astring[0];
+ BlockPosition blockposition = icommandlistener.getChunkCoordinates();
+ Vec3D vec3d = icommandlistener.d();
+ double d0 = vec3d.a;
+ double d1 = vec3d.b;
+ double d2 = vec3d.c;
+
+ if (astring.length >= 4) {
+ d0 = b(d0, astring[1], true);
+ d1 = b(d1, astring[2], false);
+ d2 = b(d2, astring[3], true);
+ blockposition = new BlockPosition(d0, d1, d2);
+ }
+
+ World world = icommandlistener.getWorld();
+
+ if (!world.isLoaded(blockposition)) {
+ throw new CommandException("commands.summon.outOfWorld", new Object[0]);
+ } else if ("LightningBolt".equals(s)) {
+ world.strikeLightning(new EntityLightning(world, d0, d1, d2));
+ a(icommandlistener, this, "commands.summon.success", new Object[0]);
+ } else {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+ boolean flag = false;
+
+ if (astring.length >= 5) {
+ IChatBaseComponent ichatbasecomponent = a(icommandlistener, astring, 4);
+
+ try {
+ nbttagcompound = MojangsonParser.parse(ichatbasecomponent.c());
+ flag = true;
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.summon.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ nbttagcompound.setString("id", s);
+
+ Entity entity;
+
+ try {
+ entity = EntityTypes.a(nbttagcompound, world);
+ } catch (RuntimeException runtimeexception) {
+ throw new CommandException("commands.summon.failed", new Object[0]);
+ }
+
+ if (entity == null) {
+ throw new CommandException("commands.summon.failed", new Object[0]);
+ } else {
+ entity.setPositionRotation(d0, d1, d2, entity.yaw, entity.pitch);
+ if (!flag && entity instanceof EntityInsentient) {
+ ((EntityInsentient) entity).prepare(world.E(new BlockPosition(entity)), (GroupDataEntity) null);
+ }
+
+ world.addEntity(entity);
+ Entity entity1 = entity;
+
+ for (NBTTagCompound nbttagcompound1 = nbttagcompound; entity1 != null && nbttagcompound1.hasKeyOfType("Riding", 10); nbttagcompound1 = nbttagcompound1.getCompound("Riding")) {
+ Entity entity2 = EntityTypes.a(nbttagcompound1.getCompound("Riding"), world);
+
+ if (entity2 != null) {
+ entity2.setPositionRotation(d0, d1, d2, entity2.yaw, entity2.pitch);
+ world.addEntity(entity2);
+ entity1.mount(entity2);
+ }
+
+ entity1 = entity2;
+ }
+
+ a(icommandlistener, this, "commands.summon.success", new Object[0]);
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, (Collection) EntityTypes.b()) : (astring.length > 1 && astring.length <= 4 ? a(astring, 1, blockposition) : null);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTell.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTell.java
new file mode 100644
index 0000000..2739214
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTell.java
@@ -0,0 +1,54 @@
+package net.minecraft.server;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class CommandTell extends CommandAbstract {
+
+ public CommandTell() {}
+
+ public List b() {
+ return Arrays.asList(new String[] { "w", "msg"});
+ }
+
+ public String getCommand() {
+ return "tell";
+ }
+
+ public int a() {
+ return 0;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.message.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.message.usage", new Object[0]);
+ } else {
+ EntityPlayer entityplayer = a(icommandlistener, astring[0]);
+
+ if (entityplayer == icommandlistener) {
+ throw new ExceptionPlayerNotFound("commands.message.sameTarget", new Object[0]);
+ } else {
+ IChatBaseComponent ichatbasecomponent = b(icommandlistener, astring, 1, !(icommandlistener instanceof EntityHuman));
+ ChatMessage chatmessage = new ChatMessage("commands.message.display.incoming", new Object[] { icommandlistener.getScoreboardDisplayName(), ichatbasecomponent.f()});
+ ChatMessage chatmessage1 = new ChatMessage("commands.message.display.outgoing", new Object[] { entityplayer.getScoreboardDisplayName(), ichatbasecomponent.f()});
+
+ chatmessage.getChatModifier().setColor(EnumChatFormat.GRAY).setItalic(Boolean.valueOf(true));
+ chatmessage1.getChatModifier().setColor(EnumChatFormat.GRAY).setItalic(Boolean.valueOf(true));
+ entityplayer.sendMessage(chatmessage);
+ icommandlistener.sendMessage(chatmessage1);
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return a(astring, MinecraftServer.getServer().getPlayers());
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTellRaw.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTellRaw.java
new file mode 100644
index 0000000..f7975a7
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTellRaw.java
@@ -0,0 +1,49 @@
+package net.minecraft.server;
+
+import com.google.gson.JsonParseException;
+import java.util.List;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+
+public class CommandTellRaw extends CommandAbstract {
+
+ public CommandTellRaw() {}
+
+ public String getCommand() {
+ return "tellraw";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.tellraw.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.tellraw.usage", new Object[0]);
+ } else {
+ EntityPlayer entityplayer = a(icommandlistener, astring[0]);
+ String s = a(astring, 1);
+
+ try {
+ IChatBaseComponent ichatbasecomponent = IChatBaseComponent.ChatSerializer.a(s);
+
+ entityplayer.sendMessage(ChatComponentUtils.filterForDisplay(icommandlistener, ichatbasecomponent, entityplayer));
+ } catch (JsonParseException jsonparseexception) {
+ Throwable throwable = ExceptionUtils.getRootCause(jsonparseexception);
+
+ throw new ExceptionInvalidSyntax("commands.tellraw.jsonException", new Object[] { throwable == null ? "" : throwable.getMessage()});
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestFor.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestFor.java
new file mode 100644
index 0000000..07dbdc1
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestFor.java
@@ -0,0 +1,56 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandTestFor extends CommandAbstract {
+
+ public CommandTestFor() {}
+
+ public String getCommand() {
+ return "testfor";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.testfor.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 1) {
+ throw new ExceptionUsage("commands.testfor.usage", new Object[0]);
+ } else {
+ Entity entity = b(icommandlistener, astring[0]);
+ NBTTagCompound nbttagcompound = null;
+
+ if (astring.length >= 2) {
+ try {
+ nbttagcompound = MojangsonParser.parse(a(astring, 1));
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.testfor.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ if (nbttagcompound != null) {
+ NBTTagCompound nbttagcompound1 = new NBTTagCompound();
+
+ entity.e(nbttagcompound1);
+ if (!GameProfileSerializer.a(nbttagcompound, nbttagcompound1, true)) {
+ throw new CommandException("commands.testfor.failure", new Object[] { entity.getName()});
+ }
+ }
+
+ a(icommandlistener, this, "commands.testfor.success", new Object[] { entity.getName()});
+ }
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlock.java
new file mode 100644
index 0000000..6362d75
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlock.java
@@ -0,0 +1,98 @@
+package net.minecraft.server;
+
+import java.util.Collection;
+import java.util.List;
+
+public class CommandTestForBlock extends CommandAbstract {
+
+ public CommandTestForBlock() {}
+
+ public String getCommand() {
+ return "testforblock";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.testforblock.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 4) {
+ throw new ExceptionUsage("commands.testforblock.usage", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0);
+ BlockPosition blockposition = a(icommandlistener, astring, 0, false);
+ Block block = Block.getByName(astring[3]);
+
+ if (block == null) {
+ throw new ExceptionInvalidNumber("commands.setblock.notFound", new Object[] { astring[3]});
+ } else {
+ int i = -1;
+
+ if (astring.length >= 5) {
+ i = a(astring[4], -1, 15);
+ }
+
+ World world = icommandlistener.getWorld();
+
+ if (!world.isLoaded(blockposition)) {
+ throw new CommandException("commands.testforblock.outOfWorld", new Object[0]);
+ } else {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+ boolean flag = false;
+
+ if (astring.length >= 6 && block.isTileEntity()) {
+ String s = a(icommandlistener, astring, 5).c();
+
+ try {
+ nbttagcompound = MojangsonParser.parse(s);
+ flag = true;
+ } catch (MojangsonParseException mojangsonparseexception) {
+ throw new CommandException("commands.setblock.tagError", new Object[] { mojangsonparseexception.getMessage()});
+ }
+ }
+
+ IBlockData iblockdata = world.getType(blockposition);
+ Block block1 = iblockdata.getBlock();
+
+ if (block1 != block) {
+ throw new CommandException("commands.testforblock.failed.tile", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ()), block1.getName(), block.getName()});
+ } else {
+ if (i > -1) {
+ int j = iblockdata.getBlock().toLegacyData(iblockdata);
+
+ if (j != i) {
+ throw new CommandException("commands.testforblock.failed.data", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ()), Integer.valueOf(j), Integer.valueOf(i)});
+ }
+ }
+
+ if (flag) {
+ TileEntity tileentity = world.getTileEntity(blockposition);
+
+ if (tileentity == null) {
+ throw new CommandException("commands.testforblock.failed.tileEntity", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+
+ NBTTagCompound nbttagcompound1 = new NBTTagCompound();
+
+ tileentity.b(nbttagcompound1);
+ if (!GameProfileSerializer.a(nbttagcompound, nbttagcompound1, true)) {
+ throw new CommandException("commands.testforblock.failed.nbt", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+ }
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 1);
+ a(icommandlistener, this, "commands.testforblock.success", new Object[] { Integer.valueOf(blockposition.getX()), Integer.valueOf(blockposition.getY()), Integer.valueOf(blockposition.getZ())});
+ }
+ }
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length == 4 ? a(astring, (Collection) Block.REGISTRY.keySet()) : null);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlocks.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlocks.java
new file mode 100644
index 0000000..05d95ea
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTestForBlocks.java
@@ -0,0 +1,109 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandTestForBlocks extends CommandAbstract {
+
+ public CommandTestForBlocks() {}
+
+ public String getCommand() {
+ return "testforblocks";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.compare.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 9) {
+ throw new ExceptionUsage("commands.compare.usage", new Object[0]);
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, 0);
+ BlockPosition blockposition = a(icommandlistener, astring, 0, false);
+ BlockPosition blockposition1 = a(icommandlistener, astring, 3, false);
+ BlockPosition blockposition2 = a(icommandlistener, astring, 6, false);
+ StructureBoundingBox structureboundingbox = new StructureBoundingBox(blockposition, blockposition1);
+ StructureBoundingBox structureboundingbox1 = new StructureBoundingBox(blockposition2, blockposition2.a(structureboundingbox.b()));
+ int i = structureboundingbox.c() * structureboundingbox.d() * structureboundingbox.e();
+
+ if (i > 524288) {
+ throw new CommandException("commands.compare.tooManyBlocks", new Object[] { Integer.valueOf(i), Integer.valueOf(524288)});
+ } else if (structureboundingbox.b >= 0 && structureboundingbox.e < 256 && structureboundingbox1.b >= 0 && structureboundingbox1.e < 256) {
+ World world = icommandlistener.getWorld();
+
+ if (world.a(structureboundingbox) && world.a(structureboundingbox1)) {
+ boolean flag = false;
+
+ if (astring.length > 9 && astring[9].equals("masked")) {
+ flag = true;
+ }
+
+ i = 0;
+ BlockPosition blockposition3 = new BlockPosition(structureboundingbox1.a - structureboundingbox.a, structureboundingbox1.b - structureboundingbox.b, structureboundingbox1.c - structureboundingbox.c);
+ BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition();
+ BlockPosition.MutableBlockPosition blockposition_mutableblockposition1 = new BlockPosition.MutableBlockPosition();
+
+ for (int j = structureboundingbox.c; j <= structureboundingbox.f; ++j) {
+ for (int k = structureboundingbox.b; k <= structureboundingbox.e; ++k) {
+ for (int l = structureboundingbox.a; l <= structureboundingbox.d; ++l) {
+ blockposition_mutableblockposition.c(l, k, j);
+ blockposition_mutableblockposition1.c(l + blockposition3.getX(), k + blockposition3.getY(), j + blockposition3.getZ());
+ boolean flag1 = false;
+ IBlockData iblockdata = world.getType(blockposition_mutableblockposition);
+
+ if (!flag || iblockdata.getBlock() != Blocks.AIR) {
+ if (iblockdata == world.getType(blockposition_mutableblockposition1)) {
+ TileEntity tileentity = world.getTileEntity(blockposition_mutableblockposition);
+ TileEntity tileentity1 = world.getTileEntity(blockposition_mutableblockposition1);
+
+ if (tileentity != null && tileentity1 != null) {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+
+ tileentity.b(nbttagcompound);
+ nbttagcompound.remove("x");
+ nbttagcompound.remove("y");
+ nbttagcompound.remove("z");
+ NBTTagCompound nbttagcompound1 = new NBTTagCompound();
+
+ tileentity1.b(nbttagcompound1);
+ nbttagcompound1.remove("x");
+ nbttagcompound1.remove("y");
+ nbttagcompound1.remove("z");
+ if (!nbttagcompound.equals(nbttagcompound1)) {
+ flag1 = true;
+ }
+ } else if (tileentity != null) {
+ flag1 = true;
+ }
+ } else {
+ flag1 = true;
+ }
+
+ ++i;
+ if (flag1) {
+ throw new CommandException("commands.compare.failed", new Object[0]);
+ }
+ }
+ }
+ }
+ }
+
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.AFFECTED_BLOCKS, i);
+ a(icommandlistener, this, "commands.compare.success", new Object[] { Integer.valueOf(i)});
+ } else {
+ throw new CommandException("commands.compare.outOfWorld", new Object[0]);
+ }
+ } else {
+ throw new CommandException("commands.compare.outOfWorld", new Object[0]);
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length > 0 && astring.length <= 3 ? a(astring, 0, blockposition) : (astring.length > 3 && astring.length <= 6 ? a(astring, 3, blockposition) : (astring.length > 6 && astring.length <= 9 ? a(astring, 6, blockposition) : (astring.length == 10 ? a(astring, new String[] { "masked", "all"}) : null)));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTime.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTime.java
new file mode 100644
index 0000000..ec835de
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTime.java
@@ -0,0 +1,85 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandTime extends CommandAbstract {
+
+ public CommandTime() {}
+
+ public String getCommand() {
+ return "time";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.time.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length > 1) {
+ int i;
+
+ if (astring[0].equals("set")) {
+ if (astring[1].equals("day")) {
+ i = 1000;
+ } else if (astring[1].equals("night")) {
+ i = 13000;
+ } else {
+ i = a(astring[1], 0);
+ }
+
+ this.a(icommandlistener, i);
+ a(icommandlistener, this, "commands.time.set", new Object[] { Integer.valueOf(i)});
+ return;
+ }
+
+ if (astring[0].equals("add")) {
+ i = a(astring[1], 0);
+ this.b(icommandlistener, i);
+ a(icommandlistener, this, "commands.time.added", new Object[] { Integer.valueOf(i)});
+ return;
+ }
+
+ if (astring[0].equals("query")) {
+ if (astring[1].equals("daytime")) {
+ i = (int) (icommandlistener.getWorld().getDayTime() % 2147483647L);
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, i);
+ a(icommandlistener, this, "commands.time.query", new Object[] { Integer.valueOf(i)});
+ return;
+ }
+
+ if (astring[1].equals("gametime")) {
+ i = (int) (icommandlistener.getWorld().getTime() % 2147483647L);
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, i);
+ a(icommandlistener, this, "commands.time.query", new Object[] { Integer.valueOf(i)});
+ return;
+ }
+ }
+ }
+
+ throw new ExceptionUsage("commands.time.usage", new Object[0]);
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "set", "add", "query"}) : (astring.length == 2 && astring[0].equals("set") ? a(astring, new String[] { "day", "night"}) : (astring.length == 2 && astring[0].equals("query") ? a(astring, new String[] { "daytime", "gametime"}) : null));
+ }
+
+ protected void a(ICommandListener icommandlistener, int i) {
+ for (int j = 0; j < MinecraftServer.getServer().worldServer.length; ++j) {
+ MinecraftServer.getServer().worldServer[j].setDayTime((long) i);
+ }
+
+ }
+
+ protected void b(ICommandListener icommandlistener, int i) {
+ for (int j = 0; j < MinecraftServer.getServer().worldServer.length; ++j) {
+ WorldServer worldserver = MinecraftServer.getServer().worldServer[j];
+
+ worldserver.setDayTime(worldserver.getDayTime() + (long) i);
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTitle.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTitle.java
new file mode 100644
index 0000000..74c40d8
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTitle.java
@@ -0,0 +1,95 @@
+package net.minecraft.server;
+
+import com.google.gson.JsonParseException;
+import java.util.List;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class CommandTitle extends CommandAbstract {
+
+ private static final Logger a = LogManager.getLogger();
+
+ public CommandTitle() {}
+
+ public String getCommand() {
+ return "title";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.title.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.title.usage", new Object[0]);
+ } else {
+ if (astring.length < 3) {
+ if ("title".equals(astring[1]) || "subtitle".equals(astring[1])) {
+ throw new ExceptionUsage("commands.title.usage.title", new Object[0]);
+ }
+
+ if ("times".equals(astring[1])) {
+ throw new ExceptionUsage("commands.title.usage.times", new Object[0]);
+ }
+ }
+
+ EntityPlayer entityplayer = a(icommandlistener, astring[0]);
+ PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = PacketPlayOutTitle.EnumTitleAction.a(astring[1]);
+
+ if (packetplayouttitle_enumtitleaction != PacketPlayOutTitle.EnumTitleAction.CLEAR && packetplayouttitle_enumtitleaction != PacketPlayOutTitle.EnumTitleAction.RESET) {
+ if (packetplayouttitle_enumtitleaction == PacketPlayOutTitle.EnumTitleAction.TIMES) {
+ if (astring.length != 5) {
+ throw new ExceptionUsage("commands.title.usage", new Object[0]);
+ } else {
+ int i = a(astring[2]);
+ int j = a(astring[3]);
+ int k = a(astring[4]);
+ PacketPlayOutTitle packetplayouttitle = new PacketPlayOutTitle(i, j, k);
+
+ entityplayer.playerConnection.sendPacket(packetplayouttitle);
+ a(icommandlistener, this, "commands.title.success", new Object[0]);
+ }
+ } else if (astring.length < 3) {
+ throw new ExceptionUsage("commands.title.usage", new Object[0]);
+ } else {
+ String s = a(astring, 2);
+
+ IChatBaseComponent ichatbasecomponent;
+
+ try {
+ ichatbasecomponent = IChatBaseComponent.ChatSerializer.a(s);
+ } catch (JsonParseException jsonparseexception) {
+ Throwable throwable = ExceptionUtils.getRootCause(jsonparseexception);
+
+ throw new ExceptionInvalidSyntax("commands.tellraw.jsonException", new Object[] { throwable == null ? "" : throwable.getMessage()});
+ }
+
+ PacketPlayOutTitle packetplayouttitle1 = new PacketPlayOutTitle(packetplayouttitle_enumtitleaction, ChatComponentUtils.filterForDisplay(icommandlistener, ichatbasecomponent, entityplayer));
+
+ entityplayer.playerConnection.sendPacket(packetplayouttitle1);
+ a(icommandlistener, this, "commands.title.success", new Object[0]);
+ }
+ } else if (astring.length != 2) {
+ throw new ExceptionUsage("commands.title.usage", new Object[0]);
+ } else {
+ PacketPlayOutTitle packetplayouttitle2 = new PacketPlayOutTitle(packetplayouttitle_enumtitleaction, (IChatBaseComponent) null);
+
+ entityplayer.playerConnection.sendPacket(packetplayouttitle2);
+ a(icommandlistener, this, "commands.title.success", new Object[0]);
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, MinecraftServer.getServer().getPlayers()) : (astring.length == 2 ? a(astring, PacketPlayOutTitle.EnumTitleAction.a()) : null);
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandToggleDownfall.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandToggleDownfall.java
new file mode 100644
index 0000000..54f2060
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandToggleDownfall.java
@@ -0,0 +1,29 @@
+package net.minecraft.server;
+
+public class CommandToggleDownfall extends CommandAbstract {
+
+ public CommandToggleDownfall() {}
+
+ public String getCommand() {
+ return "toggledownfall";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.downfall.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ this.d();
+ a(icommandlistener, this, "commands.downfall.success", new Object[0]);
+ }
+
+ protected void d() {
+ WorldData worlddata = MinecraftServer.getServer().worldServer[0].getWorldData();
+
+ worlddata.setStorm(!worlddata.hasStorm());
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CommandTp.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandTrigger.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTrigger.java
new file mode 100644
index 0000000..3b0d304
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandTrigger.java
@@ -0,0 +1,98 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class CommandTrigger extends CommandAbstract {
+
+ public CommandTrigger() {}
+
+ public String getCommand() {
+ return "trigger";
+ }
+
+ public int a() {
+ return 0;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.trigger.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 3) {
+ throw new ExceptionUsage("commands.trigger.usage", new Object[0]);
+ } else {
+ EntityPlayer entityplayer;
+
+ if (icommandlistener instanceof EntityPlayer) {
+ entityplayer = (EntityPlayer) icommandlistener;
+ } else {
+ Entity entity = icommandlistener.f();
+
+ if (!(entity instanceof EntityPlayer)) {
+ throw new CommandException("commands.trigger.invalidPlayer", new Object[0]);
+ }
+
+ entityplayer = (EntityPlayer) entity;
+ }
+
+ Scoreboard scoreboard = MinecraftServer.getServer().getWorldServer(0).getScoreboard();
+ ScoreboardObjective scoreboardobjective = scoreboard.getObjective(astring[0]);
+
+ if (scoreboardobjective != null && scoreboardobjective.getCriteria() == IScoreboardCriteria.c) {
+ int i = a(astring[2]);
+
+ if (!scoreboard.b(entityplayer.getName(), scoreboardobjective)) {
+ throw new CommandException("commands.trigger.invalidObjective", new Object[] { astring[0]});
+ } else {
+ ScoreboardScore scoreboardscore = scoreboard.getPlayerScoreForObjective(entityplayer.getName(), scoreboardobjective);
+
+ if (scoreboardscore.g()) {
+ throw new CommandException("commands.trigger.disabled", new Object[] { astring[0]});
+ } else {
+ if ("set".equals(astring[1])) {
+ scoreboardscore.setScore(i);
+ } else {
+ if (!"add".equals(astring[1])) {
+ throw new CommandException("commands.trigger.invalidMode", new Object[] { astring[1]});
+ }
+
+ scoreboardscore.addScore(i);
+ }
+
+ scoreboardscore.a(true);
+ if (entityplayer.playerInteractManager.isCreative()) {
+ a(icommandlistener, this, "commands.trigger.success", new Object[] { astring[0], astring[1], astring[2]});
+ }
+
+ }
+ }
+ } else {
+ throw new CommandException("commands.trigger.invalidObjective", new Object[] { astring[0]});
+ }
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ if (astring.length == 1) {
+ Scoreboard scoreboard = MinecraftServer.getServer().getWorldServer(0).getScoreboard();
+ ArrayList arraylist = Lists.newArrayList();
+ Iterator iterator = scoreboard.getObjectives().iterator();
+
+ while (iterator.hasNext()) {
+ ScoreboardObjective scoreboardobjective = (ScoreboardObjective) iterator.next();
+
+ if (scoreboardobjective.getCriteria() == IScoreboardCriteria.c) {
+ arraylist.add(scoreboardobjective.getName());
+ }
+ }
+
+ return a(astring, (String[]) arraylist.toArray(new String[arraylist.size()]));
+ } else {
+ return astring.length == 2 ? a(astring, new String[] { "add", "set"}) : null;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandWeather.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWeather.java
new file mode 100644
index 0000000..2a8861f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWeather.java
@@ -0,0 +1,68 @@
+package net.minecraft.server;
+
+import java.util.List;
+import java.util.Random;
+
+public class CommandWeather extends CommandAbstract {
+
+ public CommandWeather() {}
+
+ public String getCommand() {
+ return "weather";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.weather.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length >= 1 && astring.length <= 2) {
+ int i = (300 + (new Random()).nextInt(600)) * 20;
+
+ if (astring.length >= 2) {
+ i = a(astring[1], 1, 1000000) * 20;
+ }
+
+ WorldServer worldserver = MinecraftServer.getServer().worldServer[0];
+ WorldData worlddata = worldserver.getWorldData();
+
+ if ("clear".equalsIgnoreCase(astring[0])) {
+ worlddata.i(i);
+ worlddata.setWeatherDuration(0);
+ worlddata.setThunderDuration(0);
+ worlddata.setStorm(false);
+ worlddata.setThundering(false);
+ a(icommandlistener, this, "commands.weather.clear", new Object[0]);
+ } else if ("rain".equalsIgnoreCase(astring[0])) {
+ worlddata.i(0);
+ worlddata.setWeatherDuration(i);
+ worlddata.setThunderDuration(i);
+ worlddata.setStorm(true);
+ worlddata.setThundering(false);
+ a(icommandlistener, this, "commands.weather.rain", new Object[0]);
+ } else {
+ if (!"thunder".equalsIgnoreCase(astring[0])) {
+ throw new ExceptionUsage("commands.weather.usage", new Object[0]);
+ }
+
+ worlddata.i(0);
+ worlddata.setWeatherDuration(i);
+ worlddata.setThunderDuration(i);
+ worlddata.setStorm(true);
+ worlddata.setThundering(true);
+ a(icommandlistener, this, "commands.weather.thunder", new Object[0]);
+ }
+
+ } else {
+ throw new ExceptionUsage("commands.weather.usage", new Object[0]);
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "clear", "rain", "thunder"}) : null;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandWhitelist.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWhitelist.java
new file mode 100644
index 0000000..7c29357
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWhitelist.java
@@ -0,0 +1,92 @@
+package net.minecraft.server;
+
+import com.mojang.authlib.GameProfile;
+import java.util.List;
+
+public class CommandWhitelist extends CommandAbstract {
+
+ public CommandWhitelist() {}
+
+ public String getCommand() {
+ return "whitelist";
+ }
+
+ public int a() {
+ return 3;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.whitelist.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 1) {
+ throw new ExceptionUsage("commands.whitelist.usage", new Object[0]);
+ } else {
+ MinecraftServer minecraftserver = MinecraftServer.getServer();
+
+ if (astring[0].equals("on")) {
+ minecraftserver.getPlayerList().setHasWhitelist(true);
+ a(icommandlistener, this, "commands.whitelist.enabled", new Object[0]);
+ } else if (astring[0].equals("off")) {
+ minecraftserver.getPlayerList().setHasWhitelist(false);
+ a(icommandlistener, this, "commands.whitelist.disabled", new Object[0]);
+ } else if (astring[0].equals("list")) {
+ icommandlistener.sendMessage(new ChatMessage("commands.whitelist.list", new Object[] { Integer.valueOf(minecraftserver.getPlayerList().getWhitelisted().length), Integer.valueOf(minecraftserver.getPlayerList().getSeenPlayers().length)}));
+ String[] astring1 = minecraftserver.getPlayerList().getWhitelisted();
+
+ icommandlistener.sendMessage(new ChatComponentText(a((Object[]) astring1)));
+ } else {
+ GameProfile gameprofile;
+
+ if (astring[0].equals("add")) {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.whitelist.add.usage", new Object[0]);
+ }
+
+ gameprofile = minecraftserver.getUserCache().getProfile(astring[1]);
+ if (gameprofile == null) {
+ throw new CommandException("commands.whitelist.add.failed", new Object[] { astring[1]});
+ }
+
+ minecraftserver.getPlayerList().addWhitelist(gameprofile);
+ a(icommandlistener, this, "commands.whitelist.add.success", new Object[] { astring[1]});
+ } else if (astring[0].equals("remove")) {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.whitelist.remove.usage", new Object[0]);
+ }
+
+ gameprofile = minecraftserver.getPlayerList().getWhitelist().a(astring[1]);
+ if (gameprofile == null) {
+ throw new CommandException("commands.whitelist.remove.failed", new Object[] { astring[1]});
+ }
+
+ minecraftserver.getPlayerList().removeWhitelist(gameprofile);
+ a(icommandlistener, this, "commands.whitelist.remove.success", new Object[] { astring[1]});
+ } else if (astring[0].equals("reload")) {
+ minecraftserver.getPlayerList().reloadWhitelist();
+ a(icommandlistener, this, "commands.whitelist.reloaded", new Object[0]);
+ }
+ }
+
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ if (astring.length == 1) {
+ return a(astring, new String[] { "on", "off", "list", "add", "remove", "reload"});
+ } else {
+ if (astring.length == 2) {
+ if (astring[0].equals("remove")) {
+ return a(astring, MinecraftServer.getServer().getPlayerList().getWhitelisted());
+ }
+
+ if (astring[0].equals("add")) {
+ return a(astring, MinecraftServer.getServer().getUserCache().a());
+ }
+ }
+
+ return null;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandWorldBorder.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWorldBorder.java
new file mode 100644
index 0000000..fb24117
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandWorldBorder.java
@@ -0,0 +1,148 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandWorldBorder extends CommandAbstract {
+
+ public CommandWorldBorder() {}
+
+ public String getCommand() {
+ return "worldborder";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.worldborder.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length < 1) {
+ throw new ExceptionUsage("commands.worldborder.usage", new Object[0]);
+ } else {
+ WorldBorder worldborder = this.d();
+ double d0;
+ double d1;
+ long i;
+
+ if (astring[0].equals("set")) {
+ if (astring.length != 2 && astring.length != 3) {
+ throw new ExceptionUsage("commands.worldborder.set.usage", new Object[0]);
+ }
+
+ d0 = worldborder.j();
+ d1 = a(astring[1], 1.0D, 6.0E7D);
+ i = astring.length > 2 ? a(astring[2], 0L, 9223372036854775L) * 1000L : 0L;
+ if (i > 0L) {
+ worldborder.transitionSizeBetween(d0, d1, i);
+ if (d0 > d1) {
+ a(icommandlistener, this, "commands.worldborder.setSlowly.shrink.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)});
+ } else {
+ a(icommandlistener, this, "commands.worldborder.setSlowly.grow.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)});
+ }
+ } else {
+ worldborder.setSize(d1);
+ a(icommandlistener, this, "commands.worldborder.set.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)})});
+ }
+ } else if (astring[0].equals("add")) {
+ if (astring.length != 2 && astring.length != 3) {
+ throw new ExceptionUsage("commands.worldborder.add.usage", new Object[0]);
+ }
+
+ d0 = worldborder.getSize();
+ d1 = d0 + a(astring[1], -d0, 6.0E7D - d0);
+ i = worldborder.i() + (astring.length > 2 ? a(astring[2], 0L, 9223372036854775L) * 1000L : 0L);
+ if (i > 0L) {
+ worldborder.transitionSizeBetween(d0, d1, i);
+ if (d0 > d1) {
+ a(icommandlistener, this, "commands.worldborder.setSlowly.shrink.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)});
+ } else {
+ a(icommandlistener, this, "commands.worldborder.setSlowly.grow.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)}), Long.toString(i / 1000L)});
+ }
+ } else {
+ worldborder.setSize(d1);
+ a(icommandlistener, this, "commands.worldborder.set.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d1)}), String.format("%.1f", new Object[] { Double.valueOf(d0)})});
+ }
+ } else if (astring[0].equals("center")) {
+ if (astring.length != 3) {
+ throw new ExceptionUsage("commands.worldborder.center.usage", new Object[0]);
+ }
+
+ BlockPosition blockposition = icommandlistener.getChunkCoordinates();
+ double d2 = b((double) blockposition.getX() + 0.5D, astring[1], true);
+ double d3 = b((double) blockposition.getZ() + 0.5D, astring[2], true);
+
+ worldborder.setCenter(d2, d3);
+ a(icommandlistener, this, "commands.worldborder.center.success", new Object[] { Double.valueOf(d2), Double.valueOf(d3)});
+ } else if (astring[0].equals("damage")) {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.worldborder.damage.usage", new Object[0]);
+ }
+
+ if (astring[1].equals("buffer")) {
+ if (astring.length != 3) {
+ throw new ExceptionUsage("commands.worldborder.damage.buffer.usage", new Object[0]);
+ }
+
+ d0 = a(astring[2], 0.0D);
+ d1 = worldborder.getDamageBuffer();
+ worldborder.setDamageBuffer(d0);
+ a(icommandlistener, this, "commands.worldborder.damage.buffer.success", new Object[] { String.format("%.1f", new Object[] { Double.valueOf(d0)}), String.format("%.1f", new Object[] { Double.valueOf(d1)})});
+ } else if (astring[1].equals("amount")) {
+ if (astring.length != 3) {
+ throw new ExceptionUsage("commands.worldborder.damage.amount.usage", new Object[0]);
+ }
+
+ d0 = a(astring[2], 0.0D);
+ d1 = worldborder.getDamageAmount();
+ worldborder.setDamageAmount(d0);
+ a(icommandlistener, this, "commands.worldborder.damage.amount.success", new Object[] { String.format("%.2f", new Object[] { Double.valueOf(d0)}), String.format("%.2f", new Object[] { Double.valueOf(d1)})});
+ }
+ } else if (astring[0].equals("warning")) {
+ if (astring.length < 2) {
+ throw new ExceptionUsage("commands.worldborder.warning.usage", new Object[0]);
+ }
+
+ int j = a(astring[2], 0);
+ int k;
+
+ if (astring[1].equals("time")) {
+ if (astring.length != 3) {
+ throw new ExceptionUsage("commands.worldborder.warning.time.usage", new Object[0]);
+ }
+
+ k = worldborder.getWarningTime();
+ worldborder.setWarningTime(j);
+ a(icommandlistener, this, "commands.worldborder.warning.time.success", new Object[] { Integer.valueOf(j), Integer.valueOf(k)});
+ } else if (astring[1].equals("distance")) {
+ if (astring.length != 3) {
+ throw new ExceptionUsage("commands.worldborder.warning.distance.usage", new Object[0]);
+ }
+
+ k = worldborder.getWarningDistance();
+ worldborder.setWarningDistance(j);
+ a(icommandlistener, this, "commands.worldborder.warning.distance.success", new Object[] { Integer.valueOf(j), Integer.valueOf(k)});
+ }
+ } else {
+ if (!astring[0].equals("get")) {
+ throw new ExceptionUsage("commands.worldborder.usage", new Object[0]);
+ }
+
+ d0 = worldborder.getSize();
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, MathHelper.floor(d0 + 0.5D));
+ icommandlistener.sendMessage(new ChatMessage("commands.worldborder.get.success", new Object[] { String.format("%.0f", new Object[] { Double.valueOf(d0)})}));
+ }
+
+ }
+ }
+
+ protected WorldBorder d() {
+ return MinecraftServer.getServer().worldServer[0].getWorldBorder();
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 1 ? a(astring, new String[] { "set", "center", "damage", "warning", "add", "get"}) : (astring.length == 2 && astring[0].equals("damage") ? a(astring, new String[] { "buffer", "amount"}) : (astring.length >= 2 && astring.length <= 3 && astring[0].equals("center") ? b(astring, 1, blockposition) : (astring.length == 2 && astring[0].equals("warning") ? a(astring, new String[] { "time", "distance"}) : null)));
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CommandXp.java b/eSpigot-Server/src/main/java/net/minecraft/server/CommandXp.java
new file mode 100644
index 0000000..0f391b6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CommandXp.java
@@ -0,0 +1,74 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class CommandXp extends CommandAbstract {
+
+ public CommandXp() {}
+
+ public String getCommand() {
+ return "xp";
+ }
+
+ public int a() {
+ return 2;
+ }
+
+ public String getUsage(ICommandListener icommandlistener) {
+ return "commands.xp.usage";
+ }
+
+ public void execute(ICommandListener icommandlistener, String[] astring) throws CommandException {
+ if (astring.length <= 0) {
+ throw new ExceptionUsage("commands.xp.usage", new Object[0]);
+ } else {
+ String s = astring[0];
+ boolean flag = s.endsWith("l") || s.endsWith("L");
+
+ if (flag && s.length() > 1) {
+ s = s.substring(0, s.length() - 1);
+ }
+
+ int i = a(s);
+ boolean flag1 = i < 0;
+
+ if (flag1) {
+ i *= -1;
+ }
+
+ EntityPlayer entityplayer = astring.length > 1 ? a(icommandlistener, astring[1]) : b(icommandlistener);
+
+ if (flag) {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, entityplayer.expLevel);
+ if (flag1) {
+ entityplayer.levelDown(-i);
+ a(icommandlistener, this, "commands.xp.success.negative.levels", new Object[] { Integer.valueOf(i), entityplayer.getName()});
+ } else {
+ entityplayer.levelDown(i);
+ a(icommandlistener, this, "commands.xp.success.levels", new Object[] { Integer.valueOf(i), entityplayer.getName()});
+ }
+ } else {
+ icommandlistener.a(CommandObjectiveExecutor.EnumCommandResult.QUERY_RESULT, entityplayer.expTotal);
+ if (flag1) {
+ throw new CommandException("commands.xp.failure.widthdrawXp", new Object[0]);
+ }
+
+ entityplayer.giveExp(i);
+ a(icommandlistener, this, "commands.xp.success", new Object[] { Integer.valueOf(i), entityplayer.getName()});
+ }
+
+ }
+ }
+
+ public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+ return astring.length == 2 ? a(astring, this.d()) : null;
+ }
+
+ protected String[] d() {
+ return MinecraftServer.getServer().getPlayers();
+ }
+
+ public boolean isListStart(String[] astring, int i) {
+ return i == 1;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Container.java b/eSpigot-Server/src/main/java/net/minecraft/server/Container.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Container.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/Container.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerAnvil.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerBeacon.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerBrewingStand.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerChest.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerDispenser.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerEnchantTable.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerFurnace.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerHopper.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerHorse.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerMerchant.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerPlayer.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java b/eSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/ContainerWorkbench.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ControllerJump.java b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerJump.java
new file mode 100644
index 0000000..d447f9f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerJump.java
@@ -0,0 +1,20 @@
+package net.minecraft.server;
+
+public class ControllerJump {
+
+ private EntityInsentient b;
+ protected boolean a;
+
+ public ControllerJump(EntityInsentient entityinsentient) {
+ this.b = entityinsentient;
+ }
+
+ public void a() {
+ this.a = true;
+ }
+
+ public void b() {
+ this.b.i(this.a);
+ this.a = false;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ControllerLook.java b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerLook.java
new file mode 100644
index 0000000..4f573ee
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerLook.java
@@ -0,0 +1,100 @@
+package net.minecraft.server;
+
+public class ControllerLook {
+
+ private EntityInsentient a;
+ private float b;
+ private float c;
+ private boolean d;
+ private double e;
+ private double f;
+ private double g;
+
+ public ControllerLook(EntityInsentient entityinsentient) {
+ this.a = entityinsentient;
+ }
+
+ public void a(Entity entity, float f, float f1) {
+ this.e = entity.locX;
+ if (entity instanceof EntityLiving) {
+ this.f = entity.locY + (double) entity.getHeadHeight();
+ } else {
+ this.f = (entity.getBoundingBox().b + entity.getBoundingBox().e) / 2.0D;
+ }
+
+ this.g = entity.locZ;
+ this.b = f;
+ this.c = f1;
+ this.d = true;
+ }
+
+ public void a(double d0, double d1, double d2, float f, float f1) {
+ this.e = d0;
+ this.f = d1;
+ this.g = d2;
+ this.b = f;
+ this.c = f1;
+ this.d = true;
+ }
+
+ public void a() {
+ this.a.pitch = 0.0F;
+ if (this.d) {
+ this.d = false;
+ double d0 = this.e - this.a.locX;
+ double d1 = this.f - (this.a.locY + (double) this.a.getHeadHeight());
+ double d2 = this.g - this.a.locZ;
+ double d3 = (double) MathHelper.sqrt(d0 * d0 + d2 * d2);
+ float f = (float) (MathHelper.b(d2, d0) * 180.0D / 3.1415927410125732D) - 90.0F;
+ float f1 = (float) (-(MathHelper.b(d1, d3) * 180.0D / 3.1415927410125732D));
+
+ this.a.pitch = this.a(this.a.pitch, f1, this.c);
+ this.a.aK = this.a(this.a.aK, f, this.b);
+ } else {
+ this.a.aK = this.a(this.a.aK, this.a.aI, 10.0F);
+ }
+
+ float f2 = MathHelper.g(this.a.aK - this.a.aI);
+
+ if (!this.a.getNavigation().m()) {
+ if (f2 < -75.0F) {
+ this.a.aK = this.a.aI - 75.0F;
+ }
+
+ if (f2 > 75.0F) {
+ this.a.aK = this.a.aI + 75.0F;
+ }
+ }
+
+ }
+
+ private float a(float f, float f1, float f2) {
+ float f3 = MathHelper.g(f1 - f);
+
+ if (f3 > f2) {
+ f3 = f2;
+ }
+
+ if (f3 < -f2) {
+ f3 = -f2;
+ }
+
+ return f + f3;
+ }
+
+ public boolean b() {
+ return this.d;
+ }
+
+ public double e() {
+ return this.e;
+ }
+
+ public double f() {
+ return this.f;
+ }
+
+ public double g() {
+ return this.g;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/ControllerMove.java b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerMove.java
new file mode 100644
index 0000000..6fee887
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/ControllerMove.java
@@ -0,0 +1,91 @@
+package net.minecraft.server;
+
+public class ControllerMove {
+
+ protected EntityInsentient a;
+ protected double b;
+ protected double c;
+ protected double d;
+ protected double e;
+ protected boolean f;
+
+ public ControllerMove(EntityInsentient entityinsentient) {
+ this.a = entityinsentient;
+ this.b = entityinsentient.locX;
+ this.c = entityinsentient.locY;
+ this.d = entityinsentient.locZ;
+ }
+
+ public boolean a() {
+ return this.f;
+ }
+
+ public double b() {
+ return this.e;
+ }
+
+ public void a(double d0, double d1, double d2, double d3) {
+ this.b = d0;
+ this.c = d1;
+ this.d = d2;
+ this.e = d3;
+ this.f = true;
+ }
+
+ public void c() {
+ this.a.n(0.0F);
+ if (this.f) {
+ this.f = false;
+ int i = MathHelper.floor(this.a.getBoundingBox().b + 0.5D);
+ double d0 = this.b - this.a.locX;
+ double d1 = this.d - this.a.locZ;
+ double d2 = this.c - (double) i;
+ double d3 = d0 * d0 + d2 * d2 + d1 * d1;
+
+ if (d3 >= 2.500000277905201E-7D) {
+ float f = (float) (MathHelper.b(d1, d0) * 180.0D / 3.1415927410125732D) - 90.0F;
+
+ this.a.yaw = this.a(this.a.yaw, f, 30.0F);
+ this.a.k((float) (this.e * this.a.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue()));
+ if (d2 > 0.0D && d0 * d0 + d1 * d1 < 1.0D) {
+ this.a.getControllerJump().a();
+ }
+
+ }
+ }
+ }
+
+ protected float a(float f, float f1, float f2) {
+ float f3 = MathHelper.g(f1 - f);
+
+ if (f3 > f2) {
+ f3 = f2;
+ }
+
+ if (f3 < -f2) {
+ f3 = -f2;
+ }
+
+ float f4 = f + f3;
+
+ if (f4 < 0.0F) {
+ f4 += 360.0F;
+ } else if (f4 > 360.0F) {
+ f4 -= 360.0F;
+ }
+
+ return f4;
+ }
+
+ public double d() {
+ return this.b;
+ }
+
+ public double e() {
+ return this.c;
+ }
+
+ public double f() {
+ return this.d;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Convertable.java b/eSpigot-Server/src/main/java/net/minecraft/server/Convertable.java
new file mode 100644
index 0000000..92bfb05
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/Convertable.java
@@ -0,0 +1,14 @@
+package net.minecraft.server;
+
+public interface Convertable {
+
+ IDataManager a(String s, boolean flag);
+
+ void d();
+
+ boolean e(String s);
+
+ boolean isConvertable(String s);
+
+ boolean convert(String s, IProgressUpdate iprogressupdate);
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/Counter.java b/eSpigot-Server/src/main/java/net/minecraft/server/Counter.java
new file mode 100644
index 0000000..cbfe88b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/Counter.java
@@ -0,0 +1,3 @@
+package net.minecraft.server;
+
+public interface Counter {}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CounterStatistic.java b/eSpigot-Server/src/main/java/net/minecraft/server/CounterStatistic.java
new file mode 100644
index 0000000..a466533
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CounterStatistic.java
@@ -0,0 +1,18 @@
+package net.minecraft.server;
+
+public class CounterStatistic extends Statistic {
+
+ public CounterStatistic(String s, IChatBaseComponent ichatbasecomponent, Counter counter) {
+ super(s, ichatbasecomponent, counter);
+ }
+
+ public CounterStatistic(String s, IChatBaseComponent ichatbasecomponent) {
+ super(s, ichatbasecomponent);
+ }
+
+ public Statistic h() {
+ super.h();
+ StatisticList.c.add(this);
+ return this;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CraftingManager.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CraftingStatistic.java b/eSpigot-Server/src/main/java/net/minecraft/server/CraftingStatistic.java
new file mode 100644
index 0000000..9f11859
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CraftingStatistic.java
@@ -0,0 +1,17 @@
+package net.minecraft.server;
+
+public class CraftingStatistic extends Statistic {
+
+ private final Item a;
+
+ public CraftingStatistic(String s, String s1, IChatBaseComponent ichatbasecomponent, Item item) {
+ super(s + s1, ichatbasecomponent);
+ this.a = item;
+ int i = Item.getId(item);
+
+ if (i != 0) {
+ IScoreboardCriteria.criteria.put(s + i, this.k());
+ }
+
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java b/eSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/CrashReport.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CrashReportSystemDetails.java b/eSpigot-Server/src/main/java/net/minecraft/server/CrashReportSystemDetails.java
new file mode 100644
index 0000000..cd972eb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CrashReportSystemDetails.java
@@ -0,0 +1,265 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+public class CrashReportSystemDetails {
+
+ private final CrashReport a;
+ private final String b;
+ private final List c = Lists.newArrayList();
+ private StackTraceElement[] d = new StackTraceElement[0];
+
+ public CrashReportSystemDetails(CrashReport crashreport, String s) {
+ this.a = crashreport;
+ this.b = s;
+ }
+
+ public static String a(double d0, double d1, double d2) {
+ return String.format("%.2f,%.2f,%.2f - %s", new Object[] { Double.valueOf(d0), Double.valueOf(d1), Double.valueOf(d2), a(new BlockPosition(d0, d1, d2))});
+ }
+
+ public static String a(BlockPosition blockposition) {
+ int i = blockposition.getX();
+ int j = blockposition.getY();
+ int k = blockposition.getZ();
+ StringBuilder stringbuilder = new StringBuilder();
+
+ try {
+ stringbuilder.append(String.format("World: (%d,%d,%d)", new Object[] { Integer.valueOf(i), Integer.valueOf(j), Integer.valueOf(k)}));
+ } catch (Throwable throwable) {
+ stringbuilder.append("(Error finding world loc)");
+ }
+
+ stringbuilder.append(", ");
+
+ int l;
+ int i1;
+ int j1;
+ int k1;
+ int l1;
+ int i2;
+ int j2;
+ int k2;
+ int l2;
+
+ try {
+ l = i >> 4;
+ i1 = k >> 4;
+ j1 = i & 15;
+ k1 = j >> 4;
+ l1 = k & 15;
+ i2 = l << 4;
+ j2 = i1 << 4;
+ k2 = (l + 1 << 4) - 1;
+ l2 = (i1 + 1 << 4) - 1;
+ stringbuilder.append(String.format("Chunk: (at %d,%d,%d in %d,%d; contains blocks %d,0,%d to %d,255,%d)", new Object[] { Integer.valueOf(j1), Integer.valueOf(k1), Integer.valueOf(l1), Integer.valueOf(l), Integer.valueOf(i1), Integer.valueOf(i2), Integer.valueOf(j2), Integer.valueOf(k2), Integer.valueOf(l2)}));
+ } catch (Throwable throwable1) {
+ stringbuilder.append("(Error finding chunk loc)");
+ }
+
+ stringbuilder.append(", ");
+
+ try {
+ l = i >> 9;
+ i1 = k >> 9;
+ j1 = l << 5;
+ k1 = i1 << 5;
+ l1 = (l + 1 << 5) - 1;
+ i2 = (i1 + 1 << 5) - 1;
+ j2 = l << 9;
+ k2 = i1 << 9;
+ l2 = (l + 1 << 9) - 1;
+ int i3 = (i1 + 1 << 9) - 1;
+
+ stringbuilder.append(String.format("Region: (%d,%d; contains chunks %d,%d to %d,%d, blocks %d,0,%d to %d,255,%d)", new Object[] { Integer.valueOf(l), Integer.valueOf(i1), Integer.valueOf(j1), Integer.valueOf(k1), Integer.valueOf(l1), Integer.valueOf(i2), Integer.valueOf(j2), Integer.valueOf(k2), Integer.valueOf(l2), Integer.valueOf(i3)}));
+ } catch (Throwable throwable2) {
+ stringbuilder.append("(Error finding world loc)");
+ }
+
+ return stringbuilder.toString();
+ }
+
+ public void a(String s, Callable callable) {
+ try {
+ this.a(s, callable.call());
+ } catch (Throwable throwable) {
+ this.a(s, throwable);
+ }
+
+ }
+
+ public void a(String s, Object object) {
+ this.c.add(new CrashReportSystemDetails.CrashReportDetail(s, object));
+ }
+
+ public void a(String s, Throwable throwable) {
+ this.a(s, (Object) throwable);
+ }
+
+ public int a(int i) {
+ StackTraceElement[] astacktraceelement = Thread.currentThread().getStackTrace();
+
+ if (astacktraceelement.length <= 0) {
+ return 0;
+ } else {
+ this.d = new StackTraceElement[astacktraceelement.length - 3 - i];
+ System.arraycopy(astacktraceelement, 3 + i, this.d, 0, this.d.length);
+ return this.d.length;
+ }
+ }
+
+ public boolean a(StackTraceElement stacktraceelement, StackTraceElement stacktraceelement1) {
+ if (this.d.length != 0 && stacktraceelement != null) {
+ StackTraceElement stacktraceelement2 = this.d[0];
+
+ if (stacktraceelement2.isNativeMethod() == stacktraceelement.isNativeMethod() && stacktraceelement2.getClassName().equals(stacktraceelement.getClassName()) && stacktraceelement2.getFileName().equals(stacktraceelement.getFileName()) && stacktraceelement2.getMethodName().equals(stacktraceelement.getMethodName())) {
+ if (stacktraceelement1 != null != this.d.length > 1) {
+ return false;
+ } else if (stacktraceelement1 != null && !this.d[1].equals(stacktraceelement1)) {
+ return false;
+ } else {
+ this.d[0] = stacktraceelement;
+ return true;
+ }
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ public void b(int i) {
+ StackTraceElement[] astacktraceelement = new StackTraceElement[this.d.length - i];
+
+ System.arraycopy(this.d, 0, astacktraceelement, 0, astacktraceelement.length);
+ this.d = astacktraceelement;
+ }
+
+ public void a(StringBuilder stringbuilder) {
+ stringbuilder.append("-- ").append(this.b).append(" --\n");
+ stringbuilder.append("Details:");
+ Iterator iterator = this.c.iterator();
+
+ while (iterator.hasNext()) {
+ CrashReportSystemDetails.CrashReportDetail crashreportsystemdetails_crashreportdetail = (CrashReportSystemDetails.CrashReportDetail) iterator.next();
+
+ stringbuilder.append("\n\t");
+ stringbuilder.append(crashreportsystemdetails_crashreportdetail.a());
+ stringbuilder.append(": ");
+ stringbuilder.append(crashreportsystemdetails_crashreportdetail.b());
+ }
+
+ if (this.d != null && this.d.length > 0) {
+ stringbuilder.append("\nStacktrace:");
+ StackTraceElement[] astacktraceelement = this.d;
+ int i = astacktraceelement.length;
+
+ for (int j = 0; j < i; ++j) {
+ StackTraceElement stacktraceelement = astacktraceelement[j];
+
+ stringbuilder.append("\n\tat ");
+ stringbuilder.append(stacktraceelement.toString());
+ }
+ }
+
+ }
+
+ public StackTraceElement[] a() {
+ return this.d;
+ }
+
+ public static void a(CrashReportSystemDetails crashreportsystemdetails, final BlockPosition blockposition, final Block block, final int i) {
+ final int j = Block.getId(block);
+
+ crashreportsystemdetails.a("Block type", new Callable() {
+ public String a() throws Exception {
+ try {
+ return String.format("ID #%d (%s // %s)", new Object[] { Integer.valueOf(i), block.a(), block.getClass().getCanonicalName()});
+ } catch (Throwable throwable) {
+ return "ID #" + i;
+ }
+ }
+
+ public Object call() throws Exception {
+ return this.a();
+ }
+ });
+ crashreportsystemdetails.a("Block data value", new Callable() {
+ public String a() throws Exception {
+ if (i < 0) {
+ return "Unknown? (Got " + i + ")";
+ } else {
+ String s = String.format("%4s", new Object[] { Integer.toBinaryString(i)}).replace(" ", "0");
+
+ return String.format("%1$d / 0x%1$X / 0b%2$s", new Object[] { Integer.valueOf(i), s});
+ }
+ }
+
+ public Object call() throws Exception {
+ return this.a();
+ }
+ });
+ crashreportsystemdetails.a("Block location", new Callable() {
+ public String a() throws Exception {
+ return CrashReportSystemDetails.a(blockposition);
+ }
+
+ public Object call() throws Exception {
+ return this.a();
+ }
+ });
+ }
+
+ public static void a(CrashReportSystemDetails crashreportsystemdetails, final BlockPosition blockposition, final IBlockData iblockdata) {
+ crashreportsystemdetails.a("Block", new Callable() {
+ public String a() throws Exception {
+ return iblockdata.toString();
+ }
+
+ public Object call() throws Exception {
+ return this.a();
+ }
+ });
+ crashreportsystemdetails.a("Block location", new Callable() {
+ public String a() throws Exception {
+ return CrashReportSystemDetails.a(blockposition);
+ }
+
+ public Object call() throws Exception {
+ return this.a();
+ }
+ });
+ }
+
+ static class CrashReportDetail {
+
+ private final String a;
+ private final String b;
+
+ public CrashReportDetail(String s, Object object) {
+ this.a = s;
+ if (object == null) {
+ this.b = "~~NULL~~";
+ } else if (object instanceof Throwable) {
+ Throwable throwable = (Throwable) object;
+
+ this.b = "~~ERROR~~ " + throwable.getClass().getSimpleName() + ": " + throwable.getMessage();
+ } else {
+ this.b = object.toString();
+ }
+
+ }
+
+ public String a() {
+ return this.a;
+ }
+
+ public String b() {
+ return this.b;
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CreativeModeTab.java b/eSpigot-Server/src/main/java/net/minecraft/server/CreativeModeTab.java
new file mode 100644
index 0000000..f726a40
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CreativeModeTab.java
@@ -0,0 +1,62 @@
+package net.minecraft.server;
+
+public abstract class CreativeModeTab {
+
+ public static final CreativeModeTab[] a = new CreativeModeTab[12];
+ public static final CreativeModeTab b = new CreativeModeTab(0, "buildingBlocks") {
+ };
+ public static final CreativeModeTab c = new CreativeModeTab(1, "decorations") {
+ };
+ public static final CreativeModeTab d = new CreativeModeTab(2, "redstone") {
+ };
+ public static final CreativeModeTab e = new CreativeModeTab(3, "transportation") {
+ };
+ public static final CreativeModeTab f = (new CreativeModeTab(4, "misc") {
+ }).a(new EnchantmentSlotType[] { EnchantmentSlotType.ALL});
+ public static final CreativeModeTab g = (new CreativeModeTab(5, "search") {
+ }).a("item_search.png");
+ public static final CreativeModeTab h = new CreativeModeTab(6, "food") {
+ };
+ public static final CreativeModeTab i = (new CreativeModeTab(7, "tools") {
+ }).a(new EnchantmentSlotType[] { EnchantmentSlotType.DIGGER, EnchantmentSlotType.FISHING_ROD, EnchantmentSlotType.BREAKABLE});
+ public static final CreativeModeTab j = (new CreativeModeTab(8, "combat") {
+ }).a(new EnchantmentSlotType[] { EnchantmentSlotType.ARMOR, EnchantmentSlotType.ARMOR_FEET, EnchantmentSlotType.ARMOR_HEAD, EnchantmentSlotType.ARMOR_LEGS, EnchantmentSlotType.ARMOR_TORSO, EnchantmentSlotType.BOW, EnchantmentSlotType.WEAPON});
+ public static final CreativeModeTab k = new CreativeModeTab(9, "brewing") {
+ };
+ public static final CreativeModeTab l = new CreativeModeTab(10, "materials") {
+ };
+ public static final CreativeModeTab m = (new CreativeModeTab(11, "inventory") {
+ }).a("inventory.png").k().i();
+ private final int n;
+ private final String o;
+ private String p = "items.png";
+ private boolean q = true;
+ private boolean r = true;
+ private EnchantmentSlotType[] s;
+
+ public CreativeModeTab(int i, String s) {
+ this.n = i;
+ this.o = s;
+ CreativeModeTab.a[i] = this;
+ }
+
+ public CreativeModeTab a(String s) {
+ this.p = s;
+ return this;
+ }
+
+ public CreativeModeTab i() {
+ this.r = false;
+ return this;
+ }
+
+ public CreativeModeTab k() {
+ this.q = false;
+ return this;
+ }
+
+ public CreativeModeTab a(EnchantmentSlotType... aenchantmentslottype) {
+ this.s = aenchantmentslottype;
+ return this;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/CustomWorldSettingsFinal.java b/eSpigot-Server/src/main/java/net/minecraft/server/CustomWorldSettingsFinal.java
new file mode 100644
index 0000000..0b57856
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/CustomWorldSettingsFinal.java
@@ -0,0 +1,659 @@
+package net.minecraft.server;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import java.lang.reflect.Type;
+
+public class CustomWorldSettingsFinal {
+
+ public final float a;
+ public final float b;
+ public final float c;
+ public final float d;
+ public final float e;
+ public final float f;
+ public final float g;
+ public final float h;
+ public final float i;
+ public final float j;
+ public final float k;
+ public final float l;
+ public final float m;
+ public final float n;
+ public final float o;
+ public final float p;
+ public final int q;
+ public final boolean r;
+ public final boolean s;
+ public final int t;
+ public final boolean u;
+ public final boolean v;
+ public final boolean w;
+ public final boolean x;
+ public final boolean y;
+ public final boolean z;
+ public final boolean A;
+ public final int B;
+ public final boolean C;
+ public final int D;
+ public final boolean E;
+ public final int F;
+ public final int G;
+ public final int H;
+ public final int I;
+ public final int J;
+ public final int K;
+ public final int L;
+ public final int M;
+ public final int N;
+ public final int O;
+ public final int P;
+ public final int Q;
+ public final int R;
+ public final int S;
+ public final int T;
+ public final int U;
+ public final int V;
+ public final int W;
+ public final int X;
+ public final int Y;
+ public final int Z;
+ public final int aa;
+ public final int ab;
+ public final int ac;
+ public final int ad;
+ public final int ae;
+ public final int af;
+ public final int ag;
+ public final int ah;
+ public final int ai;
+ public final int aj;
+ public final int ak;
+ public final int al;
+ public final int am;
+ public final int an;
+ public final int ao;
+ public final int ap;
+ public final int aq;
+ public final int ar;
+ public final int as;
+ public final int at;
+ public final int au;
+ public final int av;
+ public final int aw;
+ public final int ax;
+ public final int ay;
+ public final int az;
+
+ private CustomWorldSettingsFinal(CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings) {
+ this.a = customworldsettingsfinal_customworldsettings.b;
+ this.b = customworldsettingsfinal_customworldsettings.c;
+ this.c = customworldsettingsfinal_customworldsettings.d;
+ this.d = customworldsettingsfinal_customworldsettings.e;
+ this.e = customworldsettingsfinal_customworldsettings.f;
+ this.f = customworldsettingsfinal_customworldsettings.g;
+ this.g = customworldsettingsfinal_customworldsettings.h;
+ this.h = customworldsettingsfinal_customworldsettings.i;
+ this.i = customworldsettingsfinal_customworldsettings.j;
+ this.j = customworldsettingsfinal_customworldsettings.k;
+ this.k = customworldsettingsfinal_customworldsettings.l;
+ this.l = customworldsettingsfinal_customworldsettings.m;
+ this.m = customworldsettingsfinal_customworldsettings.n;
+ this.n = customworldsettingsfinal_customworldsettings.o;
+ this.o = customworldsettingsfinal_customworldsettings.p;
+ this.p = customworldsettingsfinal_customworldsettings.q;
+ this.q = customworldsettingsfinal_customworldsettings.r;
+ this.r = customworldsettingsfinal_customworldsettings.s;
+ this.s = customworldsettingsfinal_customworldsettings.t;
+ this.t = customworldsettingsfinal_customworldsettings.u;
+ this.u = customworldsettingsfinal_customworldsettings.v;
+ this.v = customworldsettingsfinal_customworldsettings.w;
+ this.w = customworldsettingsfinal_customworldsettings.x;
+ this.x = customworldsettingsfinal_customworldsettings.y;
+ this.y = customworldsettingsfinal_customworldsettings.z;
+ this.z = customworldsettingsfinal_customworldsettings.A;
+ this.A = customworldsettingsfinal_customworldsettings.B;
+ this.B = customworldsettingsfinal_customworldsettings.C;
+ this.C = customworldsettingsfinal_customworldsettings.D;
+ this.D = customworldsettingsfinal_customworldsettings.E;
+ this.E = customworldsettingsfinal_customworldsettings.F;
+ this.F = customworldsettingsfinal_customworldsettings.G;
+ this.G = customworldsettingsfinal_customworldsettings.H;
+ this.H = customworldsettingsfinal_customworldsettings.I;
+ this.I = customworldsettingsfinal_customworldsettings.J;
+ this.J = customworldsettingsfinal_customworldsettings.K;
+ this.K = customworldsettingsfinal_customworldsettings.L;
+ this.L = customworldsettingsfinal_customworldsettings.M;
+ this.M = customworldsettingsfinal_customworldsettings.N;
+ this.N = customworldsettingsfinal_customworldsettings.O;
+ this.O = customworldsettingsfinal_customworldsettings.P;
+ this.P = customworldsettingsfinal_customworldsettings.Q;
+ this.Q = customworldsettingsfinal_customworldsettings.R;
+ this.R = customworldsettingsfinal_customworldsettings.S;
+ this.S = customworldsettingsfinal_customworldsettings.T;
+ this.T = customworldsettingsfinal_customworldsettings.U;
+ this.U = customworldsettingsfinal_customworldsettings.V;
+ this.V = customworldsettingsfinal_customworldsettings.W;
+ this.W = customworldsettingsfinal_customworldsettings.X;
+ this.X = customworldsettingsfinal_customworldsettings.Y;
+ this.Y = customworldsettingsfinal_customworldsettings.Z;
+ this.Z = customworldsettingsfinal_customworldsettings.aa;
+ this.aa = customworldsettingsfinal_customworldsettings.ab;
+ this.ab = customworldsettingsfinal_customworldsettings.ac;
+ this.ac = customworldsettingsfinal_customworldsettings.ad;
+ this.ad = customworldsettingsfinal_customworldsettings.ae;
+ this.ae = customworldsettingsfinal_customworldsettings.af;
+ this.af = customworldsettingsfinal_customworldsettings.ag;
+ this.ag = customworldsettingsfinal_customworldsettings.ah;
+ this.ah = customworldsettingsfinal_customworldsettings.ai;
+ this.ai = customworldsettingsfinal_customworldsettings.aj;
+ this.aj = customworldsettingsfinal_customworldsettings.ak;
+ this.ak = customworldsettingsfinal_customworldsettings.al;
+ this.al = customworldsettingsfinal_customworldsettings.am;
+ this.am = customworldsettingsfinal_customworldsettings.an;
+ this.an = customworldsettingsfinal_customworldsettings.ao;
+ this.ao = customworldsettingsfinal_customworldsettings.ap;
+ this.ap = customworldsettingsfinal_customworldsettings.aq;
+ this.aq = customworldsettingsfinal_customworldsettings.ar;
+ this.ar = customworldsettingsfinal_customworldsettings.as;
+ this.as = customworldsettingsfinal_customworldsettings.at;
+ this.at = customworldsettingsfinal_customworldsettings.au;
+ this.au = customworldsettingsfinal_customworldsettings.av;
+ this.av = customworldsettingsfinal_customworldsettings.aw;
+ this.aw = customworldsettingsfinal_customworldsettings.ax;
+ this.ax = customworldsettingsfinal_customworldsettings.ay;
+ this.ay = customworldsettingsfinal_customworldsettings.az;
+ this.az = customworldsettingsfinal_customworldsettings.aA;
+ }
+
+ CustomWorldSettingsFinal(CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings, CustomWorldSettingsFinal.SyntheticClass_1 customworldsettingsfinal_syntheticclass_1) {
+ this(customworldsettingsfinal_customworldsettings);
+ }
+
+ static class SyntheticClass_1 { }
+
+ public static class CustomWorldSettingsSerializer implements JsonDeserializer, JsonSerializer {
+
+ public CustomWorldSettingsSerializer() {}
+
+ public CustomWorldSettingsFinal.CustomWorldSettings a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException {
+ JsonObject jsonobject = jsonelement.getAsJsonObject();
+ CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings = new CustomWorldSettingsFinal.CustomWorldSettings();
+
+ try {
+ customworldsettingsfinal_customworldsettings.b = ChatDeserializer.a(jsonobject, "coordinateScale", customworldsettingsfinal_customworldsettings.b);
+ customworldsettingsfinal_customworldsettings.c = ChatDeserializer.a(jsonobject, "heightScale", customworldsettingsfinal_customworldsettings.c);
+ customworldsettingsfinal_customworldsettings.e = ChatDeserializer.a(jsonobject, "lowerLimitScale", customworldsettingsfinal_customworldsettings.e);
+ customworldsettingsfinal_customworldsettings.d = ChatDeserializer.a(jsonobject, "upperLimitScale", customworldsettingsfinal_customworldsettings.d);
+ customworldsettingsfinal_customworldsettings.f = ChatDeserializer.a(jsonobject, "depthNoiseScaleX", customworldsettingsfinal_customworldsettings.f);
+ customworldsettingsfinal_customworldsettings.g = ChatDeserializer.a(jsonobject, "depthNoiseScaleZ", customworldsettingsfinal_customworldsettings.g);
+ customworldsettingsfinal_customworldsettings.h = ChatDeserializer.a(jsonobject, "depthNoiseScaleExponent", customworldsettingsfinal_customworldsettings.h);
+ customworldsettingsfinal_customworldsettings.i = ChatDeserializer.a(jsonobject, "mainNoiseScaleX", customworldsettingsfinal_customworldsettings.i);
+ customworldsettingsfinal_customworldsettings.j = ChatDeserializer.a(jsonobject, "mainNoiseScaleY", customworldsettingsfinal_customworldsettings.j);
+ customworldsettingsfinal_customworldsettings.k = ChatDeserializer.a(jsonobject, "mainNoiseScaleZ", customworldsettingsfinal_customworldsettings.k);
+ customworldsettingsfinal_customworldsettings.l = ChatDeserializer.a(jsonobject, "baseSize", customworldsettingsfinal_customworldsettings.l);
+ customworldsettingsfinal_customworldsettings.m = ChatDeserializer.a(jsonobject, "stretchY", customworldsettingsfinal_customworldsettings.m);
+ customworldsettingsfinal_customworldsettings.n = ChatDeserializer.a(jsonobject, "biomeDepthWeight", customworldsettingsfinal_customworldsettings.n);
+ customworldsettingsfinal_customworldsettings.o = ChatDeserializer.a(jsonobject, "biomeDepthOffset", customworldsettingsfinal_customworldsettings.o);
+ customworldsettingsfinal_customworldsettings.p = ChatDeserializer.a(jsonobject, "biomeScaleWeight", customworldsettingsfinal_customworldsettings.p);
+ customworldsettingsfinal_customworldsettings.q = ChatDeserializer.a(jsonobject, "biomeScaleOffset", customworldsettingsfinal_customworldsettings.q);
+ customworldsettingsfinal_customworldsettings.r = ChatDeserializer.a(jsonobject, "seaLevel", customworldsettingsfinal_customworldsettings.r);
+ customworldsettingsfinal_customworldsettings.s = ChatDeserializer.a(jsonobject, "useCaves", customworldsettingsfinal_customworldsettings.s);
+ customworldsettingsfinal_customworldsettings.t = ChatDeserializer.a(jsonobject, "useDungeons", customworldsettingsfinal_customworldsettings.t);
+ customworldsettingsfinal_customworldsettings.u = ChatDeserializer.a(jsonobject, "dungeonChance", customworldsettingsfinal_customworldsettings.u);
+ customworldsettingsfinal_customworldsettings.v = ChatDeserializer.a(jsonobject, "useStrongholds", customworldsettingsfinal_customworldsettings.v);
+ customworldsettingsfinal_customworldsettings.w = ChatDeserializer.a(jsonobject, "useVillages", customworldsettingsfinal_customworldsettings.w);
+ customworldsettingsfinal_customworldsettings.x = ChatDeserializer.a(jsonobject, "useMineShafts", customworldsettingsfinal_customworldsettings.x);
+ customworldsettingsfinal_customworldsettings.y = ChatDeserializer.a(jsonobject, "useTemples", customworldsettingsfinal_customworldsettings.y);
+ customworldsettingsfinal_customworldsettings.z = ChatDeserializer.a(jsonobject, "useMonuments", customworldsettingsfinal_customworldsettings.z);
+ customworldsettingsfinal_customworldsettings.A = ChatDeserializer.a(jsonobject, "useRavines", customworldsettingsfinal_customworldsettings.A);
+ customworldsettingsfinal_customworldsettings.B = ChatDeserializer.a(jsonobject, "useWaterLakes", customworldsettingsfinal_customworldsettings.B);
+ customworldsettingsfinal_customworldsettings.C = ChatDeserializer.a(jsonobject, "waterLakeChance", customworldsettingsfinal_customworldsettings.C);
+ customworldsettingsfinal_customworldsettings.D = ChatDeserializer.a(jsonobject, "useLavaLakes", customworldsettingsfinal_customworldsettings.D);
+ customworldsettingsfinal_customworldsettings.E = ChatDeserializer.a(jsonobject, "lavaLakeChance", customworldsettingsfinal_customworldsettings.E);
+ customworldsettingsfinal_customworldsettings.F = ChatDeserializer.a(jsonobject, "useLavaOceans", customworldsettingsfinal_customworldsettings.F);
+ customworldsettingsfinal_customworldsettings.G = ChatDeserializer.a(jsonobject, "fixedBiome", customworldsettingsfinal_customworldsettings.G);
+ if (customworldsettingsfinal_customworldsettings.G < 38 && customworldsettingsfinal_customworldsettings.G >= -1) {
+ if (customworldsettingsfinal_customworldsettings.G >= BiomeBase.HELL.id) {
+ customworldsettingsfinal_customworldsettings.G += 2;
+ }
+ } else {
+ customworldsettingsfinal_customworldsettings.G = -1;
+ }
+
+ customworldsettingsfinal_customworldsettings.H = ChatDeserializer.a(jsonobject, "biomeSize", customworldsettingsfinal_customworldsettings.H);
+ customworldsettingsfinal_customworldsettings.I = ChatDeserializer.a(jsonobject, "riverSize", customworldsettingsfinal_customworldsettings.I);
+ customworldsettingsfinal_customworldsettings.J = ChatDeserializer.a(jsonobject, "dirtSize", customworldsettingsfinal_customworldsettings.J);
+ customworldsettingsfinal_customworldsettings.K = ChatDeserializer.a(jsonobject, "dirtCount", customworldsettingsfinal_customworldsettings.K);
+ customworldsettingsfinal_customworldsettings.L = ChatDeserializer.a(jsonobject, "dirtMinHeight", customworldsettingsfinal_customworldsettings.L);
+ customworldsettingsfinal_customworldsettings.M = ChatDeserializer.a(jsonobject, "dirtMaxHeight", customworldsettingsfinal_customworldsettings.M);
+ customworldsettingsfinal_customworldsettings.N = ChatDeserializer.a(jsonobject, "gravelSize", customworldsettingsfinal_customworldsettings.N);
+ customworldsettingsfinal_customworldsettings.O = ChatDeserializer.a(jsonobject, "gravelCount", customworldsettingsfinal_customworldsettings.O);
+ customworldsettingsfinal_customworldsettings.P = ChatDeserializer.a(jsonobject, "gravelMinHeight", customworldsettingsfinal_customworldsettings.P);
+ customworldsettingsfinal_customworldsettings.Q = ChatDeserializer.a(jsonobject, "gravelMaxHeight", customworldsettingsfinal_customworldsettings.Q);
+ customworldsettingsfinal_customworldsettings.R = ChatDeserializer.a(jsonobject, "graniteSize", customworldsettingsfinal_customworldsettings.R);
+ customworldsettingsfinal_customworldsettings.S = ChatDeserializer.a(jsonobject, "graniteCount", customworldsettingsfinal_customworldsettings.S);
+ customworldsettingsfinal_customworldsettings.T = ChatDeserializer.a(jsonobject, "graniteMinHeight", customworldsettingsfinal_customworldsettings.T);
+ customworldsettingsfinal_customworldsettings.U = ChatDeserializer.a(jsonobject, "graniteMaxHeight", customworldsettingsfinal_customworldsettings.U);
+ customworldsettingsfinal_customworldsettings.V = ChatDeserializer.a(jsonobject, "dioriteSize", customworldsettingsfinal_customworldsettings.V);
+ customworldsettingsfinal_customworldsettings.W = ChatDeserializer.a(jsonobject, "dioriteCount", customworldsettingsfinal_customworldsettings.W);
+ customworldsettingsfinal_customworldsettings.X = ChatDeserializer.a(jsonobject, "dioriteMinHeight", customworldsettingsfinal_customworldsettings.X);
+ customworldsettingsfinal_customworldsettings.Y = ChatDeserializer.a(jsonobject, "dioriteMaxHeight", customworldsettingsfinal_customworldsettings.Y);
+ customworldsettingsfinal_customworldsettings.Z = ChatDeserializer.a(jsonobject, "andesiteSize", customworldsettingsfinal_customworldsettings.Z);
+ customworldsettingsfinal_customworldsettings.aa = ChatDeserializer.a(jsonobject, "andesiteCount", customworldsettingsfinal_customworldsettings.aa);
+ customworldsettingsfinal_customworldsettings.ab = ChatDeserializer.a(jsonobject, "andesiteMinHeight", customworldsettingsfinal_customworldsettings.ab);
+ customworldsettingsfinal_customworldsettings.ac = ChatDeserializer.a(jsonobject, "andesiteMaxHeight", customworldsettingsfinal_customworldsettings.ac);
+ customworldsettingsfinal_customworldsettings.ad = ChatDeserializer.a(jsonobject, "coalSize", customworldsettingsfinal_customworldsettings.ad);
+ customworldsettingsfinal_customworldsettings.ae = ChatDeserializer.a(jsonobject, "coalCount", customworldsettingsfinal_customworldsettings.ae);
+ customworldsettingsfinal_customworldsettings.af = ChatDeserializer.a(jsonobject, "coalMinHeight", customworldsettingsfinal_customworldsettings.af);
+ customworldsettingsfinal_customworldsettings.ag = ChatDeserializer.a(jsonobject, "coalMaxHeight", customworldsettingsfinal_customworldsettings.ag);
+ customworldsettingsfinal_customworldsettings.ah = ChatDeserializer.a(jsonobject, "ironSize", customworldsettingsfinal_customworldsettings.ah);
+ customworldsettingsfinal_customworldsettings.ai = ChatDeserializer.a(jsonobject, "ironCount", customworldsettingsfinal_customworldsettings.ai);
+ customworldsettingsfinal_customworldsettings.aj = ChatDeserializer.a(jsonobject, "ironMinHeight", customworldsettingsfinal_customworldsettings.aj);
+ customworldsettingsfinal_customworldsettings.ak = ChatDeserializer.a(jsonobject, "ironMaxHeight", customworldsettingsfinal_customworldsettings.ak);
+ customworldsettingsfinal_customworldsettings.al = ChatDeserializer.a(jsonobject, "goldSize", customworldsettingsfinal_customworldsettings.al);
+ customworldsettingsfinal_customworldsettings.am = ChatDeserializer.a(jsonobject, "goldCount", customworldsettingsfinal_customworldsettings.am);
+ customworldsettingsfinal_customworldsettings.an = ChatDeserializer.a(jsonobject, "goldMinHeight", customworldsettingsfinal_customworldsettings.an);
+ customworldsettingsfinal_customworldsettings.ao = ChatDeserializer.a(jsonobject, "goldMaxHeight", customworldsettingsfinal_customworldsettings.ao);
+ customworldsettingsfinal_customworldsettings.ap = ChatDeserializer.a(jsonobject, "redstoneSize", customworldsettingsfinal_customworldsettings.ap);
+ customworldsettingsfinal_customworldsettings.aq = ChatDeserializer.a(jsonobject, "redstoneCount", customworldsettingsfinal_customworldsettings.aq);
+ customworldsettingsfinal_customworldsettings.ar = ChatDeserializer.a(jsonobject, "redstoneMinHeight", customworldsettingsfinal_customworldsettings.ar);
+ customworldsettingsfinal_customworldsettings.as = ChatDeserializer.a(jsonobject, "redstoneMaxHeight", customworldsettingsfinal_customworldsettings.as);
+ customworldsettingsfinal_customworldsettings.at = ChatDeserializer.a(jsonobject, "diamondSize", customworldsettingsfinal_customworldsettings.at);
+ customworldsettingsfinal_customworldsettings.au = ChatDeserializer.a(jsonobject, "diamondCount", customworldsettingsfinal_customworldsettings.au);
+ customworldsettingsfinal_customworldsettings.av = ChatDeserializer.a(jsonobject, "diamondMinHeight", customworldsettingsfinal_customworldsettings.av);
+ customworldsettingsfinal_customworldsettings.aw = ChatDeserializer.a(jsonobject, "diamondMaxHeight", customworldsettingsfinal_customworldsettings.aw);
+ customworldsettingsfinal_customworldsettings.ax = ChatDeserializer.a(jsonobject, "lapisSize", customworldsettingsfinal_customworldsettings.ax);
+ customworldsettingsfinal_customworldsettings.ay = ChatDeserializer.a(jsonobject, "lapisCount", customworldsettingsfinal_customworldsettings.ay);
+ customworldsettingsfinal_customworldsettings.az = ChatDeserializer.a(jsonobject, "lapisCenterHeight", customworldsettingsfinal_customworldsettings.az);
+ customworldsettingsfinal_customworldsettings.aA = ChatDeserializer.a(jsonobject, "lapisSpread", customworldsettingsfinal_customworldsettings.aA);
+ } catch (Exception exception) {
+ ;
+ }
+
+ return customworldsettingsfinal_customworldsettings;
+ }
+
+ public JsonElement a(CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings, Type type, JsonSerializationContext jsonserializationcontext) {
+ JsonObject jsonobject = new JsonObject();
+
+ jsonobject.addProperty("coordinateScale", customworldsettingsfinal_customworldsettings.b);
+ jsonobject.addProperty("heightScale", customworldsettingsfinal_customworldsettings.c);
+ jsonobject.addProperty("lowerLimitScale", customworldsettingsfinal_customworldsettings.e);
+ jsonobject.addProperty("upperLimitScale", customworldsettingsfinal_customworldsettings.d);
+ jsonobject.addProperty("depthNoiseScaleX", customworldsettingsfinal_customworldsettings.f);
+ jsonobject.addProperty("depthNoiseScaleZ", customworldsettingsfinal_customworldsettings.g);
+ jsonobject.addProperty("depthNoiseScaleExponent", customworldsettingsfinal_customworldsettings.h);
+ jsonobject.addProperty("mainNoiseScaleX", customworldsettingsfinal_customworldsettings.i);
+ jsonobject.addProperty("mainNoiseScaleY", customworldsettingsfinal_customworldsettings.j);
+ jsonobject.addProperty("mainNoiseScaleZ", customworldsettingsfinal_customworldsettings.k);
+ jsonobject.addProperty("baseSize", customworldsettingsfinal_customworldsettings.l);
+ jsonobject.addProperty("stretchY", customworldsettingsfinal_customworldsettings.m);
+ jsonobject.addProperty("biomeDepthWeight", customworldsettingsfinal_customworldsettings.n);
+ jsonobject.addProperty("biomeDepthOffset", customworldsettingsfinal_customworldsettings.o);
+ jsonobject.addProperty("biomeScaleWeight", customworldsettingsfinal_customworldsettings.p);
+ jsonobject.addProperty("biomeScaleOffset", customworldsettingsfinal_customworldsettings.q);
+ jsonobject.addProperty("seaLevel", customworldsettingsfinal_customworldsettings.r);
+ jsonobject.addProperty("useCaves", customworldsettingsfinal_customworldsettings.s);
+ jsonobject.addProperty("useDungeons", customworldsettingsfinal_customworldsettings.t);
+ jsonobject.addProperty("dungeonChance", customworldsettingsfinal_customworldsettings.u);
+ jsonobject.addProperty("useStrongholds", customworldsettingsfinal_customworldsettings.v);
+ jsonobject.addProperty("useVillages", customworldsettingsfinal_customworldsettings.w);
+ jsonobject.addProperty("useMineShafts", customworldsettingsfinal_customworldsettings.x);
+ jsonobject.addProperty("useTemples", customworldsettingsfinal_customworldsettings.y);
+ jsonobject.addProperty("useMonuments", customworldsettingsfinal_customworldsettings.z);
+ jsonobject.addProperty("useRavines", customworldsettingsfinal_customworldsettings.A);
+ jsonobject.addProperty("useWaterLakes", customworldsettingsfinal_customworldsettings.B);
+ jsonobject.addProperty("waterLakeChance", customworldsettingsfinal_customworldsettings.C);
+ jsonobject.addProperty("useLavaLakes", customworldsettingsfinal_customworldsettings.D);
+ jsonobject.addProperty("lavaLakeChance", customworldsettingsfinal_customworldsettings.E);
+ jsonobject.addProperty("useLavaOceans", customworldsettingsfinal_customworldsettings.F);
+ jsonobject.addProperty("fixedBiome", customworldsettingsfinal_customworldsettings.G);
+ jsonobject.addProperty("biomeSize", customworldsettingsfinal_customworldsettings.H);
+ jsonobject.addProperty("riverSize", customworldsettingsfinal_customworldsettings.I);
+ jsonobject.addProperty("dirtSize", customworldsettingsfinal_customworldsettings.J);
+ jsonobject.addProperty("dirtCount", customworldsettingsfinal_customworldsettings.K);
+ jsonobject.addProperty("dirtMinHeight", customworldsettingsfinal_customworldsettings.L);
+ jsonobject.addProperty("dirtMaxHeight", customworldsettingsfinal_customworldsettings.M);
+ jsonobject.addProperty("gravelSize", customworldsettingsfinal_customworldsettings.N);
+ jsonobject.addProperty("gravelCount", customworldsettingsfinal_customworldsettings.O);
+ jsonobject.addProperty("gravelMinHeight", customworldsettingsfinal_customworldsettings.P);
+ jsonobject.addProperty("gravelMaxHeight", customworldsettingsfinal_customworldsettings.Q);
+ jsonobject.addProperty("graniteSize", customworldsettingsfinal_customworldsettings.R);
+ jsonobject.addProperty("graniteCount", customworldsettingsfinal_customworldsettings.S);
+ jsonobject.addProperty("graniteMinHeight", customworldsettingsfinal_customworldsettings.T);
+ jsonobject.addProperty("graniteMaxHeight", customworldsettingsfinal_customworldsettings.U);
+ jsonobject.addProperty("dioriteSize", customworldsettingsfinal_customworldsettings.V);
+ jsonobject.addProperty("dioriteCount", customworldsettingsfinal_customworldsettings.W);
+ jsonobject.addProperty("dioriteMinHeight", customworldsettingsfinal_customworldsettings.X);
+ jsonobject.addProperty("dioriteMaxHeight", customworldsettingsfinal_customworldsettings.Y);
+ jsonobject.addProperty("andesiteSize", customworldsettingsfinal_customworldsettings.Z);
+ jsonobject.addProperty("andesiteCount", customworldsettingsfinal_customworldsettings.aa);
+ jsonobject.addProperty("andesiteMinHeight", customworldsettingsfinal_customworldsettings.ab);
+ jsonobject.addProperty("andesiteMaxHeight", customworldsettingsfinal_customworldsettings.ac);
+ jsonobject.addProperty("coalSize", customworldsettingsfinal_customworldsettings.ad);
+ jsonobject.addProperty("coalCount", customworldsettingsfinal_customworldsettings.ae);
+ jsonobject.addProperty("coalMinHeight", customworldsettingsfinal_customworldsettings.af);
+ jsonobject.addProperty("coalMaxHeight", customworldsettingsfinal_customworldsettings.ag);
+ jsonobject.addProperty("ironSize", customworldsettingsfinal_customworldsettings.ah);
+ jsonobject.addProperty("ironCount", customworldsettingsfinal_customworldsettings.ai);
+ jsonobject.addProperty("ironMinHeight", customworldsettingsfinal_customworldsettings.aj);
+ jsonobject.addProperty("ironMaxHeight", customworldsettingsfinal_customworldsettings.ak);
+ jsonobject.addProperty("goldSize", customworldsettingsfinal_customworldsettings.al);
+ jsonobject.addProperty("goldCount", customworldsettingsfinal_customworldsettings.am);
+ jsonobject.addProperty("goldMinHeight", customworldsettingsfinal_customworldsettings.an);
+ jsonobject.addProperty("goldMaxHeight", customworldsettingsfinal_customworldsettings.ao);
+ jsonobject.addProperty("redstoneSize", customworldsettingsfinal_customworldsettings.ap);
+ jsonobject.addProperty("redstoneCount", customworldsettingsfinal_customworldsettings.aq);
+ jsonobject.addProperty("redstoneMinHeight", customworldsettingsfinal_customworldsettings.ar);
+ jsonobject.addProperty("redstoneMaxHeight", customworldsettingsfinal_customworldsettings.as);
+ jsonobject.addProperty("diamondSize", customworldsettingsfinal_customworldsettings.at);
+ jsonobject.addProperty("diamondCount", customworldsettingsfinal_customworldsettings.au);
+ jsonobject.addProperty("diamondMinHeight", customworldsettingsfinal_customworldsettings.av);
+ jsonobject.addProperty("diamondMaxHeight", customworldsettingsfinal_customworldsettings.aw);
+ jsonobject.addProperty("lapisSize", customworldsettingsfinal_customworldsettings.ax);
+ jsonobject.addProperty("lapisCount", customworldsettingsfinal_customworldsettings.ay);
+ jsonobject.addProperty("lapisCenterHeight", customworldsettingsfinal_customworldsettings.az);
+ jsonobject.addProperty("lapisSpread", customworldsettingsfinal_customworldsettings.aA);
+ return jsonobject;
+ }
+
+ public CustomWorldSettingsFinal.CustomWorldSettings deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException {
+ return this.a(jsonelement, type, jsondeserializationcontext);
+ }
+
+ public JsonElement serialize(CustomWorldSettingsFinal.CustomWorldSettings object, Type type, JsonSerializationContext jsonserializationcontext) {
+ return this.a((CustomWorldSettingsFinal.CustomWorldSettings) object, type, jsonserializationcontext);
+ }
+ }
+
+ public static class CustomWorldSettings {
+
+ static final Gson a = (new GsonBuilder()).registerTypeAdapter(CustomWorldSettingsFinal.CustomWorldSettings.class, new CustomWorldSettingsFinal.CustomWorldSettingsSerializer()).create();
+ public float b = 684.412F;
+ public float c = 684.412F;
+ public float d = 512.0F;
+ public float e = 512.0F;
+ public float f = 200.0F;
+ public float g = 200.0F;
+ public float h = 0.5F;
+ public float i = 80.0F;
+ public float j = 160.0F;
+ public float k = 80.0F;
+ public float l = 8.5F;
+ public float m = 12.0F;
+ public float n = 1.0F;
+ public float o = 0.0F;
+ public float p = 1.0F;
+ public float q = 0.0F;
+ public int r = 63;
+ public boolean s = true;
+ public boolean t = true;
+ public int u = 8;
+ public boolean v = true;
+ public boolean w = true;
+ public boolean x = true;
+ public boolean y = true;
+ public boolean z = true;
+ public boolean A = true;
+ public boolean B = true;
+ public int C = 4;
+ public boolean D = true;
+ public int E = 80;
+ public boolean F = false;
+ public int G = -1;
+ public int H = 4;
+ public int I = 4;
+ public int J = 33;
+ public int K = 10;
+ public int L = 0;
+ public int M = 256;
+ public int N = 33;
+ public int O = 8;
+ public int P = 0;
+ public int Q = 256;
+ public int R = 33;
+ public int S = 10;
+ public int T = 0;
+ public int U = 80;
+ public int V = 33;
+ public int W = 10;
+ public int X = 0;
+ public int Y = 80;
+ public int Z = 33;
+ public int aa = 10;
+ public int ab = 0;
+ public int ac = 80;
+ public int ad = 17;
+ public int ae = 20;
+ public int af = 0;
+ public int ag = 128;
+ public int ah = 9;
+ public int ai = 20;
+ public int aj = 0;
+ public int ak = 64;
+ public int al = 9;
+ public int am = 2;
+ public int an = 0;
+ public int ao = 32;
+ public int ap = 8;
+ public int aq = 8;
+ public int ar = 0;
+ public int as = 16;
+ public int at = 8;
+ public int au = 1;
+ public int av = 0;
+ public int aw = 16;
+ public int ax = 7;
+ public int ay = 1;
+ public int az = 16;
+ public int aA = 16;
+
+ public static CustomWorldSettingsFinal.CustomWorldSettings a(String s) {
+ if (s.length() == 0) {
+ return new CustomWorldSettingsFinal.CustomWorldSettings();
+ } else {
+ try {
+ return (CustomWorldSettingsFinal.CustomWorldSettings) CustomWorldSettingsFinal.CustomWorldSettings.a.fromJson(s, CustomWorldSettingsFinal.CustomWorldSettings.class);
+ } catch (Exception exception) {
+ return new CustomWorldSettingsFinal.CustomWorldSettings();
+ }
+ }
+ }
+
+ public String toString() {
+ return CustomWorldSettingsFinal.CustomWorldSettings.a.toJson(this);
+ }
+
+ public CustomWorldSettings() {
+ this.a();
+ }
+
+ public void a() {
+ this.b = 684.412F;
+ this.c = 684.412F;
+ this.d = 512.0F;
+ this.e = 512.0F;
+ this.f = 200.0F;
+ this.g = 200.0F;
+ this.h = 0.5F;
+ this.i = 80.0F;
+ this.j = 160.0F;
+ this.k = 80.0F;
+ this.l = 8.5F;
+ this.m = 12.0F;
+ this.n = 1.0F;
+ this.o = 0.0F;
+ this.p = 1.0F;
+ this.q = 0.0F;
+ this.r = 63;
+ this.s = true;
+ this.t = true;
+ this.u = 8;
+ this.v = true;
+ this.w = true;
+ this.x = true;
+ this.y = true;
+ this.z = true;
+ this.A = true;
+ this.B = true;
+ this.C = 4;
+ this.D = true;
+ this.E = 80;
+ this.F = false;
+ this.G = -1;
+ this.H = 4;
+ this.I = 4;
+ this.J = 33;
+ this.K = 10;
+ this.L = 0;
+ this.M = 256;
+ this.N = 33;
+ this.O = 8;
+ this.P = 0;
+ this.Q = 256;
+ this.R = 33;
+ this.S = 10;
+ this.T = 0;
+ this.U = 80;
+ this.V = 33;
+ this.W = 10;
+ this.X = 0;
+ this.Y = 80;
+ this.Z = 33;
+ this.aa = 10;
+ this.ab = 0;
+ this.ac = 80;
+ this.ad = 17;
+ this.ae = 20;
+ this.af = 0;
+ this.ag = 128;
+ this.ah = 9;
+ this.ai = 20;
+ this.aj = 0;
+ this.ak = 64;
+ this.al = 9;
+ this.am = 2;
+ this.an = 0;
+ this.ao = 32;
+ this.ap = 8;
+ this.aq = 8;
+ this.ar = 0;
+ this.as = 16;
+ this.at = 8;
+ this.au = 1;
+ this.av = 0;
+ this.aw = 16;
+ this.ax = 7;
+ this.ay = 1;
+ this.az = 16;
+ this.aA = 16;
+ }
+
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ } else if (object != null && this.getClass() == object.getClass()) {
+ CustomWorldSettingsFinal.CustomWorldSettings customworldsettingsfinal_customworldsettings = (CustomWorldSettingsFinal.CustomWorldSettings) object;
+
+ return this.aa != customworldsettingsfinal_customworldsettings.aa ? false : (this.ac != customworldsettingsfinal_customworldsettings.ac ? false : (this.ab != customworldsettingsfinal_customworldsettings.ab ? false : (this.Z != customworldsettingsfinal_customworldsettings.Z ? false : (Float.compare(customworldsettingsfinal_customworldsettings.l, this.l) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.o, this.o) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.n, this.n) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.q, this.q) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.p, this.p) != 0 ? false : (this.H != customworldsettingsfinal_customworldsettings.H ? false : (this.ae != customworldsettingsfinal_customworldsettings.ae ? false : (this.ag != customworldsettingsfinal_customworldsettings.ag ? false : (this.af != customworldsettingsfinal_customworldsettings.af ? false : (this.ad != customworldsettingsfinal_customworldsettings.ad ? false : (Float.compare(customworldsettingsfinal_customworldsettings.b, this.b) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.h, this.h) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.f, this.f) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.g, this.g) != 0 ? false : (this.au != customworldsettingsfinal_customworldsettings.au ? false : (this.aw != customworldsettingsfinal_customworldsettings.aw ? false : (this.av != customworldsettingsfinal_customworldsettings.av ? false : (this.at != customworldsettingsfinal_customworldsettings.at ? false : (this.W != customworldsettingsfinal_customworldsettings.W ? false : (this.Y != customworldsettingsfinal_customworldsettings.Y ? false : (this.X != customworldsettingsfinal_customworldsettings.X ? false : (this.V != customworldsettingsfinal_customworldsettings.V ? false : (this.K != customworldsettingsfinal_customworldsettings.K ? false : (this.M != customworldsettingsfinal_customworldsettings.M ? false : (this.L != customworldsettingsfinal_customworldsettings.L ? false : (this.J != customworldsettingsfinal_customworldsettings.J ? false : (this.u != customworldsettingsfinal_customworldsettings.u ? false : (this.G != customworldsettingsfinal_customworldsettings.G ? false : (this.am != customworldsettingsfinal_customworldsettings.am ? false : (this.ao != customworldsettingsfinal_customworldsettings.ao ? false : (this.an != customworldsettingsfinal_customworldsettings.an ? false : (this.al != customworldsettingsfinal_customworldsettings.al ? false : (this.S != customworldsettingsfinal_customworldsettings.S ? false : (this.U != customworldsettingsfinal_customworldsettings.U ? false : (this.T != customworldsettingsfinal_customworldsettings.T ? false : (this.R != customworldsettingsfinal_customworldsettings.R ? false : (this.O != customworldsettingsfinal_customworldsettings.O ? false : (this.Q != customworldsettingsfinal_customworldsettings.Q ? false : (this.P != customworldsettingsfinal_customworldsettings.P ? false : (this.N != customworldsettingsfinal_customworldsettings.N ? false : (Float.compare(customworldsettingsfinal_customworldsettings.c, this.c) != 0 ? false : (this.ai != customworldsettingsfinal_customworldsettings.ai ? false : (this.ak != customworldsettingsfinal_customworldsettings.ak ? false : (this.aj != customworldsettingsfinal_customworldsettings.aj ? false : (this.ah != customworldsettingsfinal_customworldsettings.ah ? false : (this.az != customworldsettingsfinal_customworldsettings.az ? false : (this.ay != customworldsettingsfinal_customworldsettings.ay ? false : (this.ax != customworldsettingsfinal_customworldsettings.ax ? false : (this.aA != customworldsettingsfinal_customworldsettings.aA ? false : (this.E != customworldsettingsfinal_customworldsettings.E ? false : (Float.compare(customworldsettingsfinal_customworldsettings.e, this.e) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.i, this.i) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.j, this.j) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.k, this.k) != 0 ? false : (this.aq != customworldsettingsfinal_customworldsettings.aq ? false : (this.as != customworldsettingsfinal_customworldsettings.as ? false : (this.ar != customworldsettingsfinal_customworldsettings.ar ? false : (this.ap != customworldsettingsfinal_customworldsettings.ap ? false : (this.I != customworldsettingsfinal_customworldsettings.I ? false : (this.r != customworldsettingsfinal_customworldsettings.r ? false : (Float.compare(customworldsettingsfinal_customworldsettings.m, this.m) != 0 ? false : (Float.compare(customworldsettingsfinal_customworldsettings.d, this.d) != 0 ? false : (this.s != customworldsettingsfinal_customworldsettings.s ? false : (this.t != customworldsettingsfinal_customworldsettings.t ? false : (this.D != customworldsettingsfinal_customworldsettings.D ? false : (this.F != customworldsettingsfinal_customworldsettings.F ? false : (this.x != customworldsettingsfinal_customworldsettings.x ? false : (this.A != customworldsettingsfinal_customworldsettings.A ? false : (this.v != customworldsettingsfinal_customworldsettings.v ? false : (this.y != customworldsettingsfinal_customworldsettings.y ? false : (this.z != customworldsettingsfinal_customworldsettings.z ? false : (this.w != customworldsettingsfinal_customworldsettings.w ? false : (this.B != customworldsettingsfinal_customworldsettings.B ? false : this.C == customworldsettingsfinal_customworldsettings.C))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ int i = this.b != 0.0F ? Float.floatToIntBits(this.b) : 0;
+
+ i = 31 * i + (this.c != 0.0F ? Float.floatToIntBits(this.c) : 0);
+ i = 31 * i + (this.d != 0.0F ? Float.floatToIntBits(this.d) : 0);
+ i = 31 * i + (this.e != 0.0F ? Float.floatToIntBits(this.e) : 0);
+ i = 31 * i + (this.f != 0.0F ? Float.floatToIntBits(this.f) : 0);
+ i = 31 * i + (this.g != 0.0F ? Float.floatToIntBits(this.g) : 0);
+ i = 31 * i + (this.h != 0.0F ? Float.floatToIntBits(this.h) : 0);
+ i = 31 * i + (this.i != 0.0F ? Float.floatToIntBits(this.i) : 0);
+ i = 31 * i + (this.j != 0.0F ? Float.floatToIntBits(this.j) : 0);
+ i = 31 * i + (this.k != 0.0F ? Float.floatToIntBits(this.k) : 0);
+ i = 31 * i + (this.l != 0.0F ? Float.floatToIntBits(this.l) : 0);
+ i = 31 * i + (this.m != 0.0F ? Float.floatToIntBits(this.m) : 0);
+ i = 31 * i + (this.n != 0.0F ? Float.floatToIntBits(this.n) : 0);
+ i = 31 * i + (this.o != 0.0F ? Float.floatToIntBits(this.o) : 0);
+ i = 31 * i + (this.p != 0.0F ? Float.floatToIntBits(this.p) : 0);
+ i = 31 * i + (this.q != 0.0F ? Float.floatToIntBits(this.q) : 0);
+ i = 31 * i + this.r;
+ i = 31 * i + (this.s ? 1 : 0);
+ i = 31 * i + (this.t ? 1 : 0);
+ i = 31 * i + this.u;
+ i = 31 * i + (this.v ? 1 : 0);
+ i = 31 * i + (this.w ? 1 : 0);
+ i = 31 * i + (this.x ? 1 : 0);
+ i = 31 * i + (this.y ? 1 : 0);
+ i = 31 * i + (this.z ? 1 : 0);
+ i = 31 * i + (this.A ? 1 : 0);
+ i = 31 * i + (this.B ? 1 : 0);
+ i = 31 * i + this.C;
+ i = 31 * i + (this.D ? 1 : 0);
+ i = 31 * i + this.E;
+ i = 31 * i + (this.F ? 1 : 0);
+ i = 31 * i + this.G;
+ i = 31 * i + this.H;
+ i = 31 * i + this.I;
+ i = 31 * i + this.J;
+ i = 31 * i + this.K;
+ i = 31 * i + this.L;
+ i = 31 * i + this.M;
+ i = 31 * i + this.N;
+ i = 31 * i + this.O;
+ i = 31 * i + this.P;
+ i = 31 * i + this.Q;
+ i = 31 * i + this.R;
+ i = 31 * i + this.S;
+ i = 31 * i + this.T;
+ i = 31 * i + this.U;
+ i = 31 * i + this.V;
+ i = 31 * i + this.W;
+ i = 31 * i + this.X;
+ i = 31 * i + this.Y;
+ i = 31 * i + this.Z;
+ i = 31 * i + this.aa;
+ i = 31 * i + this.ab;
+ i = 31 * i + this.ac;
+ i = 31 * i + this.ad;
+ i = 31 * i + this.ae;
+ i = 31 * i + this.af;
+ i = 31 * i + this.ag;
+ i = 31 * i + this.ah;
+ i = 31 * i + this.ai;
+ i = 31 * i + this.aj;
+ i = 31 * i + this.ak;
+ i = 31 * i + this.al;
+ i = 31 * i + this.am;
+ i = 31 * i + this.an;
+ i = 31 * i + this.ao;
+ i = 31 * i + this.ap;
+ i = 31 * i + this.aq;
+ i = 31 * i + this.ar;
+ i = 31 * i + this.as;
+ i = 31 * i + this.at;
+ i = 31 * i + this.au;
+ i = 31 * i + this.av;
+ i = 31 * i + this.aw;
+ i = 31 * i + this.ax;
+ i = 31 * i + this.ay;
+ i = 31 * i + this.az;
+ i = 31 * i + this.aA;
+ return i;
+ }
+
+ public CustomWorldSettingsFinal b() {
+ return new CustomWorldSettingsFinal(this, (CustomWorldSettingsFinal.SyntheticClass_1) null);
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DamageSource.java b/eSpigot-Server/src/main/java/net/minecraft/server/DamageSource.java
new file mode 100644
index 0000000..bc02417
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/DamageSource.java
@@ -0,0 +1,170 @@
+package net.minecraft.server;
+
+public class DamageSource {
+
+ public static DamageSource FIRE = (new DamageSource("inFire")).setExplosion();
+ public static DamageSource LIGHTNING = new DamageSource("lightningBolt");
+ public static DamageSource BURN = (new DamageSource("onFire")).setIgnoreArmor().setExplosion();
+ public static DamageSource LAVA = (new DamageSource("lava")).setExplosion();
+ public static DamageSource STUCK = (new DamageSource("inWall")).setIgnoreArmor();
+ public static DamageSource DROWN = (new DamageSource("drown")).setIgnoreArmor();
+ public static DamageSource STARVE = (new DamageSource("starve")).setIgnoreArmor().m();
+ public static DamageSource CACTUS = new DamageSource("cactus");
+ public static DamageSource FALL = (new DamageSource("fall")).setIgnoreArmor();
+ public static DamageSource OUT_OF_WORLD = (new DamageSource("outOfWorld")).setIgnoreArmor().l();
+ public static DamageSource GENERIC = (new DamageSource("generic")).setIgnoreArmor();
+ public static DamageSource MAGIC = (new DamageSource("magic")).setIgnoreArmor().setMagic();
+ public static DamageSource WITHER = (new DamageSource("wither")).setIgnoreArmor();
+ public static DamageSource ANVIL = new DamageSource("anvil");
+ public static DamageSource FALLING_BLOCK = new DamageSource("fallingBlock");
+ private boolean q;
+ private boolean r;
+ private boolean s;
+ private float t = 0.3F;
+ private boolean u;
+ private boolean v;
+ private boolean w;
+ private boolean x;
+ private boolean y;
+ public String translationIndex;
+
+ public static DamageSource mobAttack(EntityLiving entityliving) {
+ return new EntityDamageSource("mob", entityliving);
+ }
+
+ public static DamageSource playerAttack(EntityHuman entityhuman) {
+ return new EntityDamageSource("player", entityhuman);
+ }
+
+ public static DamageSource arrow(EntityArrow entityarrow, Entity entity) {
+ return (new EntityDamageSourceIndirect("arrow", entityarrow, entity)).b();
+ }
+
+ public static DamageSource fireball(EntityFireball entityfireball, Entity entity) {
+ return entity == null ? (new EntityDamageSourceIndirect("onFire", entityfireball, entityfireball)).setExplosion().b() : (new EntityDamageSourceIndirect("fireball", entityfireball, entity)).setExplosion().b();
+ }
+
+ public static DamageSource projectile(Entity entity, Entity entity1) {
+ return (new EntityDamageSourceIndirect("thrown", entity, entity1)).b();
+ }
+
+ public static DamageSource b(Entity entity, Entity entity1) {
+ return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic();
+ }
+
+ public static DamageSource a(Entity entity) {
+ return (new EntityDamageSource("thorns", entity)).v().setMagic();
+ }
+
+ public static DamageSource explosion(Explosion explosion) {
+ return explosion != null && explosion.getSource() != null ? (new EntityDamageSource("explosion.player", explosion.getSource())).q().d() : (new DamageSource("explosion")).q().d();
+ }
+
+ public boolean a() {
+ return this.v;
+ }
+
+ public DamageSource b() {
+ this.v = true;
+ return this;
+ }
+
+ public boolean isExplosion() {
+ return this.y;
+ }
+
+ public DamageSource d() {
+ this.y = true;
+ return this;
+ }
+
+ public boolean ignoresArmor() {
+ return this.q;
+ }
+
+ public float getExhaustionCost() {
+ return this.t;
+ }
+
+ public boolean ignoresInvulnerability() {
+ return this.r;
+ }
+
+ public boolean isStarvation() {
+ return this.s;
+ }
+
+ protected DamageSource(String s) {
+ this.translationIndex = s;
+ }
+
+ public Entity i() {
+ return this.getEntity();
+ }
+
+ public Entity getEntity() {
+ return null;
+ }
+
+ protected DamageSource setIgnoreArmor() {
+ this.q = true;
+ this.t = 0.0F;
+ return this;
+ }
+
+ protected DamageSource l() {
+ this.r = true;
+ return this;
+ }
+
+ protected DamageSource m() {
+ this.s = true;
+ this.t = 0.0F;
+ return this;
+ }
+
+ protected DamageSource setExplosion() {
+ this.u = true;
+ return this;
+ }
+
+ public IChatBaseComponent getLocalizedDeathMessage(EntityLiving entityliving) {
+ EntityLiving entityliving1 = entityliving.bt();
+ String s = "death.attack." + this.translationIndex;
+ String s1 = s + ".player";
+
+ return entityliving1 != null && LocaleI18n.c(s1) ? new ChatMessage(s1, new Object[] { entityliving.getScoreboardDisplayName(), entityliving1.getScoreboardDisplayName()}) : new ChatMessage(s, new Object[] { entityliving.getScoreboardDisplayName()});
+ }
+
+ public boolean o() {
+ return this.u;
+ }
+
+ public String p() {
+ return this.translationIndex;
+ }
+
+ public DamageSource q() {
+ this.w = true;
+ return this;
+ }
+
+ public boolean r() {
+ return this.w;
+ }
+
+ public boolean isMagic() {
+ return this.x;
+ }
+
+ public DamageSource setMagic() {
+ this.x = true;
+ return this;
+ }
+
+ public boolean u() {
+ Entity entity = this.getEntity();
+
+ return entity instanceof EntityHuman && ((EntityHuman) entity).abilities.canInstantlyBuild;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java b/eSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/DataWatcher.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedPlayerList.java b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedPlayerList.java
new file mode 100644
index 0000000..75dc45f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedPlayerList.java
@@ -0,0 +1,148 @@
+package net.minecraft.server;
+
+import com.mojang.authlib.GameProfile;
+import java.io.IOException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class DedicatedPlayerList extends PlayerList {
+
+ private static final Logger f = LogManager.getLogger();
+
+ public DedicatedPlayerList(DedicatedServer dedicatedserver) {
+ super(dedicatedserver);
+ this.a(dedicatedserver.a("view-distance", 10));
+ this.maxPlayers = dedicatedserver.a("max-players", 20);
+ this.setHasWhitelist(dedicatedserver.a("white-list", false));
+ if (!dedicatedserver.T()) {
+ this.getProfileBans().a(true);
+ this.getIPBans().a(true);
+ }
+
+ this.z();
+ this.x();
+ this.y();
+ this.w();
+ this.A();
+ this.C();
+ this.B();
+ if (!this.getWhitelist().c().exists()) {
+ this.D();
+ }
+
+ }
+
+ public void setHasWhitelist(boolean flag) {
+ super.setHasWhitelist(flag);
+ this.getServer().a("white-list", (Object) Boolean.valueOf(flag));
+ this.getServer().a();
+ }
+
+ public void addOp(GameProfile gameprofile) {
+ super.addOp(gameprofile);
+ this.B();
+ }
+
+ public void removeOp(GameProfile gameprofile) {
+ super.removeOp(gameprofile);
+ this.B();
+ }
+
+ public void removeWhitelist(GameProfile gameprofile) {
+ super.removeWhitelist(gameprofile);
+ this.D();
+ }
+
+ public void addWhitelist(GameProfile gameprofile) {
+ super.addWhitelist(gameprofile);
+ this.D();
+ }
+
+ public void reloadWhitelist() {
+ this.C();
+ }
+
+ private void w() {
+ try {
+ this.getIPBans().save();
+ } catch (IOException ioexception) {
+ DedicatedPlayerList.f.warn("Failed to save ip banlist: ", ioexception);
+ }
+
+ }
+
+ private void x() {
+ try {
+ this.getProfileBans().save();
+ } catch (IOException ioexception) {
+ DedicatedPlayerList.f.warn("Failed to save user banlist: ", ioexception);
+ }
+
+ }
+
+ private void y() {
+ try {
+ this.getIPBans().load();
+ } catch (IOException ioexception) {
+ DedicatedPlayerList.f.warn("Failed to load ip banlist: ", ioexception);
+ }
+
+ }
+
+ private void z() {
+ try {
+ this.getProfileBans().load();
+ } catch (IOException ioexception) {
+ DedicatedPlayerList.f.warn("Failed to load user banlist: ", ioexception);
+ }
+
+ }
+
+ private void A() {
+ try {
+ this.getOPs().load();
+ } catch (Exception exception) {
+ DedicatedPlayerList.f.warn("Failed to load operators list: ", exception);
+ }
+
+ }
+
+ private void B() {
+ try {
+ this.getOPs().save();
+ } catch (Exception exception) {
+ DedicatedPlayerList.f.warn("Failed to save operators list: ", exception);
+ }
+
+ }
+
+ private void C() {
+ try {
+ this.getWhitelist().load();
+ } catch (Exception exception) {
+ DedicatedPlayerList.f.warn("Failed to load white-list: ", exception);
+ }
+
+ }
+
+ private void D() {
+ try {
+ this.getWhitelist().save();
+ } catch (Exception exception) {
+ DedicatedPlayerList.f.warn("Failed to save white-list: ", exception);
+ }
+
+ }
+
+ public boolean isWhitelisted(GameProfile gameprofile) {
+ return !this.getHasWhitelist() || this.isOp(gameprofile) || this.getWhitelist().isWhitelisted(gameprofile);
+ }
+
+ public DedicatedServer getServer() {
+ return (DedicatedServer) super.getServer();
+ }
+
+ public boolean f(GameProfile gameprofile) {
+ return this.getOPs().b(gameprofile);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java
similarity index 63%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java
index cd0efe0..594e1f8 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -1,13 +1,11 @@
package net.minecraft.server;
-import com.google.common.collect.Lists;
+import com.elevatemc.spigot.console.PandaConsole;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Proxy;
-import java.util.Collections;
-import java.util.List;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.Callable;
@@ -33,7 +31,6 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
private RemoteStatusListener m;
private RemoteControlListener n;
public PropertyManager propertyManager;
- private EULA p;
private boolean generateStructures;
private WorldSettings.EnumGamemode r;
private boolean s;
@@ -68,6 +65,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}
// CraftBukkit end
+ // PandaSpigot start - Use TerminalConsoleAppender
+ new PandaConsole(DedicatedServer.this).start();
+ /*
+ // PandaSpigot end
jline.console.ConsoleReader bufferedreader = reader; // CraftBukkit
String s;
@@ -87,6 +88,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
} catch (IOException ioexception) {
DedicatedServer.LOGGER.error("Exception handling console input", ioexception);
}
+ */ // PandaSpigot
}
};
@@ -99,6 +101,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}
global.addHandler(new org.bukkit.craftbukkit.util.ForwardLogHandler());
+ // PandaSpigot start - Not needed with TerminalConsoleAppender
+ final org.apache.logging.log4j.Logger logger = LogManager.getRootLogger();
+ /*
+ // PandaSpigot end
final org.apache.logging.log4j.core.Logger logger = ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger());
for (org.apache.logging.log4j.core.Appender appender : logger.getAppenders().values()) {
if (appender instanceof org.apache.logging.log4j.core.appender.ConsoleAppender) {
@@ -107,6 +113,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}
new Thread(new org.bukkit.craftbukkit.util.TerminalConsoleWriterThread(System.out, this.reader)).start();
+ */
System.setOut(new PrintStream(new LoggerOutputStream(logger, Level.INFO), true));
System.setErr(new PrintStream(new LoggerOutputStream(logger, Level.WARN), true));
@@ -121,198 +128,205 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
DedicatedServer.LOGGER.info("Loading properties");
this.propertyManager = new PropertyManager(this.options); // CraftBukkit - CLI argument support
- this.p = new EULA(new File("eula.txt"));
// Spigot Start
- boolean eulaAgreed = true;
- if ( eulaAgreed )
- {
- System.err.println( "You have used the Spigot command line EULA agreement flag." );
- System.err.println( "By using this setting you are indicating your agreement to Mojang's EULA (https://account.mojang.com/documents/minecraft_eula)." );
- System.err.println( "If you do not agree to the above EULA please stop your server and remove this flag immediately." );
- }
- // Spigot End
- if (!this.p.a() && !eulaAgreed) { // Spigot
- DedicatedServer.LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info.");
- this.p.b();
- return false;
+ if (this.T()) {
+ this.c("127.0.0.1");
} else {
- if (this.T()) {
- this.c("127.0.0.1");
- } else {
- this.setOnlineMode(this.propertyManager.getBoolean("online-mode", true));
- this.c(this.propertyManager.getString("server-ip", ""));
+ this.setOnlineMode(this.propertyManager.getBoolean("online-mode", true));
+ this.c(this.propertyManager.getString("server-ip", ""));
+ }
+
+ this.setSpawnAnimals(this.propertyManager.getBoolean("spawn-animals", true));
+ this.setSpawnNPCs(this.propertyManager.getBoolean("spawn-npcs", true));
+ this.setPVP(this.propertyManager.getBoolean("pvp", true));
+ this.setAllowFlight(this.propertyManager.getBoolean("allow-flight", false));
+ this.setResourcePack(this.propertyManager.getString("resource-pack", ""), this.propertyManager.getString("resource-pack-hash", ""));
+ this.setMotd(this.propertyManager.getString("motd", "A Minecraft Server"));
+ this.setForceGamemode(this.propertyManager.getBoolean("force-gamemode", false));
+ this.setIdleTimeout(this.propertyManager.getInt("player-idle-timeout", 0));
+ if (this.propertyManager.getInt("difficulty", 1) < 0) {
+ this.propertyManager.setProperty("difficulty", 0);
+ } else if (this.propertyManager.getInt("difficulty", 1) > 3) {
+ this.propertyManager.setProperty("difficulty", 3);
+ }
+
+ this.generateStructures = this.propertyManager.getBoolean("generate-structures", true);
+ int i = this.propertyManager.getInt("gamemode", WorldSettings.EnumGamemode.SURVIVAL.getId());
+
+ this.r = WorldSettings.a(i);
+ DedicatedServer.LOGGER.info("Default game type: " + this.r);
+ // PandaSpigot start - Unix domain socket support
+ // PandaSpigot - Move SpigotConfig to load earlier, so that we can check IP forwarding status here.
+ // Spigot start
+ this.a(new DedicatedPlayerList(this));
+ org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings"));
+ org.spigotmc.SpigotConfig.registerCommands();
+ // Spigot end
+ java.net.SocketAddress bindAddress;
+ if (this.getServerIp().startsWith("unix:")) {
+ if (!io.netty.channel.epoll.Epoll.isAvailable()) {
+ DedicatedServer.LOGGER.fatal("**** INVALID CONFIGURATION!");
+ DedicatedServer.LOGGER.fatal("You are trying to use a Unix domain socket but you're not on a supported OS.");
+ return false;
+ } else if (!org.spigotmc.SpigotConfig.bungee) {
+ DedicatedServer.LOGGER.fatal("**** INVALID CONFIGURATION!");
+ DedicatedServer.LOGGER.fatal("Unix domain sockets require IPs to be forwarded from a proxy.");
+ return false;
}
+ bindAddress = new io.netty.channel.unix.DomainSocketAddress(this.getServerIp().substring("unix:".length()));
+ } else {
+ // PandaSpigot end
- this.setSpawnAnimals(this.propertyManager.getBoolean("spawn-animals", true));
- this.setSpawnNPCs(this.propertyManager.getBoolean("spawn-npcs", true));
- this.setPVP(this.propertyManager.getBoolean("pvp", true));
- this.setAllowFlight(this.propertyManager.getBoolean("allow-flight", false));
- this.setResourcePack(this.propertyManager.getString("resource-pack", ""), this.propertyManager.getString("resource-pack-hash", ""));
- this.setMotd(this.propertyManager.getString("motd", "A Minecraft Server"));
- this.setForceGamemode(this.propertyManager.getBoolean("force-gamemode", false));
- this.setIdleTimeout(this.propertyManager.getInt("player-idle-timeout", 0));
- if (this.propertyManager.getInt("difficulty", 1) < 0) {
- this.propertyManager.setProperty("difficulty", 0);
- } else if (this.propertyManager.getInt("difficulty", 1) > 3) {
- this.propertyManager.setProperty("difficulty", 3);
- }
+ InetAddress inetaddress = null;
- this.generateStructures = this.propertyManager.getBoolean("generate-structures", true);
- int i = this.propertyManager.getInt("gamemode", WorldSettings.EnumGamemode.SURVIVAL.getId());
-
- this.r = WorldSettings.a(i);
- DedicatedServer.LOGGER.info("Default game type: " + this.r);
- InetAddress inetaddress = null;
-
- if (this.getServerIp().length() > 0) {
- inetaddress = InetAddress.getByName(this.getServerIp());
- }
+ if (this.getServerIp().length() > 0) {
+ inetaddress = InetAddress.getByName(this.getServerIp());
+ }
if (this.R() < 0) {
this.setPort(this.propertyManager.getInt("server-port", 25565));
}
- // Spigot start
- this.a(new DedicatedPlayerList(this));
- org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings"));
- org.spigotmc.SpigotConfig.registerCommands();
- // Spigot end
- // PaperSpigot start
- org.github.paperspigot.PaperSpigotConfig.init((File) options.valueOf("paper-settings"));
- org.github.paperspigot.PaperSpigotConfig.registerCommands();
- // PaperSpigot end
+ bindAddress = new java.net.InetSocketAddress(inetaddress, this.R());
+ }
- DedicatedServer.LOGGER.info("Generating keypair");
- this.a(MinecraftEncryption.b());
- DedicatedServer.LOGGER.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.R());
+ // PandaSpigot end
+ // PaperSpigot start
+ org.github.paperspigot.PaperSpigotConfig.init((File) options.valueOf("paper-settings"));
+ org.github.paperspigot.PaperSpigotConfig.registerCommands();
+ // PaperSpigot end
+
+ DedicatedServer.LOGGER.info("Generating keypair");
+ this.a(MinecraftEncryption.b());
+ DedicatedServer.LOGGER.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.R());
if (!org.spigotmc.SpigotConfig.lateBind) {
- try {
- this.aq().a(inetaddress, this.R());
- } catch (IOException ioexception) {
- DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!");
- DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()});
- DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
- return false;
- }
+ try {
+ this.aq().bind(bindAddress); // PandaSpigot - Unix domain socket support
+ } catch (IOException ioexception) {
+ DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!");
+ DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()});
+ DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
+ return false;
}
+ }
- // Spigot Start - Move DedicatedPlayerList up and bring plugin loading from CraftServer to here
- // this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit
- server.loadPlugins();
- server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.STARTUP);
- // Spigot End
+ // Spigot Start - Move DedicatedPlayerList up and bring plugin loading from CraftServer to here
+ // this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit
+ server.loadPlugins();
+ server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.STARTUP);
+ // Spigot End
- if (!this.getOnlineMode()) {
- DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
- DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
- // Spigot start
- if (org.spigotmc.SpigotConfig.bungee) {
- DedicatedServer.LOGGER.warn("Whilst this makes it possible to use BungeeCord, unless access to your server is properly restricted, it also opens up the ability for hackers to connect with any username they choose.");
- DedicatedServer.LOGGER.warn("Please see http://www.spigotmc.org/wiki/firewall-guide/ for further information.");
- } else {
- DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
- }
- // Spigot end
- DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file.");
- }
-
- if (this.aR()) {
- this.getUserCache().c();
- }
-
- if (!NameReferencingFileConverter.a(this.propertyManager)) {
- return false;
+ if (!this.getOnlineMode()) {
+ DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
+ DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
+ // Spigot start
+ if (org.spigotmc.SpigotConfig.bungee) {
+ DedicatedServer.LOGGER.warn("Whilst this makes it possible to use BungeeCord, unless access to your server is properly restricted, it also opens up the ability for hackers to connect with any username they choose.");
+ DedicatedServer.LOGGER.warn("Please see http://www.spigotmc.org/wiki/firewall-guide/ for further information.");
} else {
- this.convertable = new WorldLoaderServer(server.getWorldContainer()); // CraftBukkit - moved from MinecraftServer constructor
- long j = System.nanoTime();
+ DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
+ }
+ // Spigot end
+ DedicatedServer.LOGGER.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file.");
+ }
- if (this.U() == null) {
- this.setWorld(this.propertyManager.getString("level-name", "world"));
- }
+ if (this.aR()) {
+ this.getUserCache().c();
+ }
- String s = this.propertyManager.getString("level-seed", "");
- String s1 = this.propertyManager.getString("level-type", "DEFAULT");
- String s2 = this.propertyManager.getString("generator-settings", "");
- long k = (new Random()).nextLong();
+ if (!NameReferencingFileConverter.a(this.propertyManager)) {
+ return false;
+ } else {
+ this.convertable = new WorldLoaderServer(server.getWorldContainer()); // CraftBukkit - moved from MinecraftServer constructor
+ long j = System.nanoTime();
- if (s.length() > 0) {
- try {
- long l = Long.parseLong(s);
+ if (this.U() == null) {
+ this.setWorld(this.propertyManager.getString("level-name", "world"));
+ }
- if (l != 0L) {
- k = l;
- }
- } catch (NumberFormatException numberformatexception) {
- k = s.hashCode();
+ String s = this.propertyManager.getString("level-seed", "");
+ String s1 = this.propertyManager.getString("level-type", "DEFAULT");
+ String s2 = this.propertyManager.getString("generator-settings", "");
+ long k = (new Random()).nextLong();
+
+ if (s.length() > 0) {
+ try {
+ long l = Long.parseLong(s);
+
+ if (l != 0L) {
+ k = l;
}
+ } catch (NumberFormatException numberformatexception) {
+ k = s.hashCode();
}
-
- WorldType worldtype = WorldType.getType(s1);
-
- if (worldtype == null) {
- worldtype = WorldType.NORMAL;
- }
-
- this.aB();
- this.getEnableCommandBlock();
- this.p();
- this.getSnooperEnabled();
- this.aK();
- this.c(this.propertyManager.getInt("max-build-height", 256));
- this.c((this.getMaxBuildHeight() + 8) / 16 * 16);
- this.c(MathHelper.clamp(this.getMaxBuildHeight(), 64, 256));
- this.propertyManager.setProperty("max-build-height", this.getMaxBuildHeight());
- DedicatedServer.LOGGER.info("Preparing level \"" + this.U() + "\"");
- this.a(this.U(), this.U(), k, worldtype, s2);
- long i1 = System.nanoTime() - j;
- String s3 = String.format("%.3fs", new Object[] {(double) i1 / 1.0E9D});
-
- DedicatedServer.LOGGER.info("Done (" + s3 + ")! For help, type \"help\" or \"?\"");
- if (this.propertyManager.getBoolean("enable-query", false)) {
- DedicatedServer.LOGGER.info("Starting GS4 status listener");
- this.m = new RemoteStatusListener(this);
- this.m.a();
- }
-
- if (this.propertyManager.getBoolean("enable-rcon", false)) {
- DedicatedServer.LOGGER.info("Starting remote control listener");
- this.n = new RemoteControlListener(this);
- this.n.a();
- this.remoteConsole = new org.bukkit.craftbukkit.command.CraftRemoteConsoleCommandSender(); // CraftBukkit
- }
-
- // CraftBukkit start
- if (this.server.getBukkitSpawnRadius() > -1) {
- DedicatedServer.LOGGER.info("'settings.spawn-radius' in bukkit.yml has been moved to 'spawn-protection' in server.properties. I will move your config for you.");
- this.propertyManager.properties.remove("spawn-protection");
- this.propertyManager.getInt("spawn-protection", this.server.getBukkitSpawnRadius());
- this.server.removeBukkitSpawnRadius();
- this.propertyManager.savePropertiesFile();
- }
- // CraftBukkit end
-
- if (org.spigotmc.SpigotConfig.lateBind) {
- try {
- this.aq().a(inetaddress, this.R());
- } catch (IOException ioexception) {
- DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!");
- DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()});
- DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
- return false;
}
+
+ WorldType worldtype = WorldType.getType(s1);
+
+ if (worldtype == null) {
+ worldtype = WorldType.NORMAL;
+ }
+
+ this.aB();
+ this.getEnableCommandBlock();
+ this.p();
+ this.getSnooperEnabled();
+ this.aK();
+ this.c(this.propertyManager.getInt("max-build-height", 256));
+ this.c((this.getMaxBuildHeight() + 8) / 16 * 16);
+ this.c(MathHelper.clamp(this.getMaxBuildHeight(), 64, 256));
+ this.propertyManager.setProperty("max-build-height", this.getMaxBuildHeight());
+ DedicatedServer.LOGGER.info("Preparing level \"" + this.U() + "\"");
+ this.a(this.U(), this.U(), k, worldtype, s2);
+ long i1 = System.nanoTime() - j;
+ String s3 = String.format("%.3fs", new Object[] {(double) i1 / 1.0E9D});
+
+ DedicatedServer.LOGGER.info("Done (" + s3 + ")! For help, type \"help\" or \"?\"");
+ if (this.propertyManager.getBoolean("enable-query", false)) {
+ DedicatedServer.LOGGER.info("Starting GS4 status listener");
+ this.m = new RemoteStatusListener(this);
+ this.m.a();
+ }
+
+ if (this.propertyManager.getBoolean("enable-rcon", false)) {
+ DedicatedServer.LOGGER.info("Starting remote control listener");
+ this.n = new RemoteControlListener(this);
+ this.n.a();
+ this.remoteConsole = new org.bukkit.craftbukkit.command.CraftRemoteConsoleCommandSender(); // CraftBukkit
+ }
+
+ // CraftBukkit start
+ if (this.server.getBukkitSpawnRadius() > -1) {
+ DedicatedServer.LOGGER.info("'settings.spawn-radius' in bukkit.yml has been moved to 'spawn-protection' in server.properties. I will move your config for you.");
+ this.propertyManager.properties.remove("spawn-protection");
+ this.propertyManager.getInt("spawn-protection", this.server.getBukkitSpawnRadius());
+ this.server.removeBukkitSpawnRadius();
+ this.propertyManager.savePropertiesFile();
+ }
+ // CraftBukkit end
+
+ if (org.spigotmc.SpigotConfig.lateBind) {
+ try {
+ this.aq().bind(bindAddress); // PandaSpigot - Unix domain socket support
+ } catch (IOException ioexception) {
+ DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!");
+ DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()});
+ DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
+ return false;
+ }
+ }
+
+ if (false && this.aS() > 0L) { // Spigot - disable
+ Thread thread1 = new Thread(new ThreadWatchdog(this));
+
+ thread1.setName("Server Watchdog");
+ thread1.setDaemon(true);
+ thread1.start();
+ }
+
+ return true;
}
- if (false && this.aS() > 0L) { // Spigot - disable
- Thread thread1 = new Thread(new ThreadWatchdog(this));
-
- thread1.setName("Server Watchdog");
- thread1.setDaemon(true);
- thread1.start();
- }
-
- return true;
- }
- }
}
// CraftBukkit start
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DemoPlayerInteractManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/DemoPlayerInteractManager.java
new file mode 100644
index 0000000..15eeb6d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/DemoPlayerInteractManager.java
@@ -0,0 +1,91 @@
+package net.minecraft.server;
+
+public class DemoPlayerInteractManager extends PlayerInteractManager {
+
+ private boolean c;
+ private boolean d;
+ private int e;
+ private int f;
+
+ public DemoPlayerInteractManager(World world) {
+ super(world);
+ }
+
+ public void a() {
+ super.a();
+ ++this.f;
+ long i = this.world.getTime();
+ long j = i / 24000L + 1L;
+
+ if (!this.c && this.f > 20) {
+ this.c = true;
+ this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 0.0F));
+ }
+
+ this.d = i > 120500L;
+ if (this.d) {
+ ++this.e;
+ }
+
+ if (i % 24000L == 500L) {
+ if (j <= 6L) {
+ this.player.sendMessage(new ChatMessage("demo.day." + j, new Object[0]));
+ }
+ } else if (j == 1L) {
+ if (i == 100L) {
+ this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 101.0F));
+ } else if (i == 175L) {
+ this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 102.0F));
+ } else if (i == 250L) {
+ this.player.playerConnection.sendPacket(new PacketPlayOutGameStateChange(5, 103.0F));
+ }
+ } else if (j == 5L && i % 24000L == 22000L) {
+ this.player.sendMessage(new ChatMessage("demo.day.warning", new Object[0]));
+ }
+
+ }
+
+ private void f() {
+ if (this.e > 100) {
+ this.player.sendMessage(new ChatMessage("demo.reminder", new Object[0]));
+ this.e = 0;
+ }
+
+ }
+
+ public void a(BlockPosition blockposition, EnumDirection enumdirection) {
+ if (this.d) {
+ this.f();
+ } else {
+ super.a(blockposition, enumdirection);
+ }
+ }
+
+ public void a(BlockPosition blockposition) {
+ if (!this.d) {
+ super.a(blockposition);
+ }
+ }
+
+ public boolean breakBlock(BlockPosition blockposition) {
+ return this.d ? false : super.breakBlock(blockposition);
+ }
+
+ public boolean useItem(EntityHuman entityhuman, World world, ItemStack itemstack) {
+ if (this.d) {
+ this.f();
+ return false;
+ } else {
+ return super.useItem(entityhuman, world, itemstack);
+ }
+ }
+
+ public boolean interact(EntityHuman entityhuman, World world, ItemStack itemstack, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) {
+ if (this.d) {
+ this.f();
+ return false;
+ } else {
+ return super.interact(entityhuman, world, itemstack, blockposition, enumdirection, f, f1, f2);
+ }
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DemoWorldServer.java b/eSpigot-Server/src/main/java/net/minecraft/server/DemoWorldServer.java
new file mode 100644
index 0000000..de19f10
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/DemoWorldServer.java
@@ -0,0 +1,12 @@
+package net.minecraft.server;
+
+public class DemoWorldServer extends WorldServer {
+
+ private static final long I = (long) "North Carolina".hashCode();
+ public static final WorldSettings a = (new WorldSettings(DemoWorldServer.I, WorldSettings.EnumGamemode.SURVIVAL, true, false, WorldType.NORMAL)).a();
+
+ public DemoWorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, WorldData worlddata, int i, MethodProfiler methodprofiler, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) {
+ super(minecraftserver, idatamanager, worlddata, i, methodprofiler, env, gen);
+ this.worldData.a(DemoWorldServer.a);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/DifficultyDamageScaler.java b/eSpigot-Server/src/main/java/net/minecraft/server/DifficultyDamageScaler.java
new file mode 100644
index 0000000..a8fe1bd
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/DifficultyDamageScaler.java
@@ -0,0 +1,38 @@
+package net.minecraft.server;
+
+public class DifficultyDamageScaler {
+
+ private final EnumDifficulty a;
+ private final float b;
+
+ public DifficultyDamageScaler(EnumDifficulty enumdifficulty, long i, long j, float f) {
+ this.a = enumdifficulty;
+ this.b = this.a(enumdifficulty, i, j, f);
+ }
+
+ public float c() {
+ return this.b < 2.0F ? 0.0F : (this.b > 4.0F ? 1.0F : (this.b - 2.0F) / 2.0F);
+ }
+
+ private float a(EnumDifficulty enumdifficulty, long i, long j, float f) {
+ if (enumdifficulty == EnumDifficulty.PEACEFUL) {
+ return 0.0F;
+ } else {
+ boolean flag = enumdifficulty == EnumDifficulty.HARD;
+ float f1 = 0.75F;
+ float f2 = MathHelper.a(((float) i + -72000.0F) / 1440000.0F, 0.0F, 1.0F) * 0.25F;
+
+ f1 += f2;
+ float f3 = 0.0F;
+
+ f3 += MathHelper.a((float) j / 3600000.0F, 0.0F, 1.0F) * (flag ? 1.0F : 0.75F);
+ f3 += MathHelper.a(f * 0.25F, 0.0F, f2);
+ if (enumdifficulty == EnumDifficulty.EASY) {
+ f3 *= 0.5F;
+ }
+
+ f1 += f3;
+ return (float) enumdifficulty.a() * f1;
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java b/eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorItem.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java b/eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/DispenseBehaviorProjectile.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java b/eSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/DispenserRegistry.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EULA.java b/eSpigot-Server/src/main/java/net/minecraft/server/EULA.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EULA.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EULA.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EmptyChunk.java b/eSpigot-Server/src/main/java/net/minecraft/server/EmptyChunk.java
new file mode 100644
index 0000000..8bd79af
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EmptyChunk.java
@@ -0,0 +1,90 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.List;
+import java.util.Random;
+
+public class EmptyChunk extends Chunk {
+
+ public EmptyChunk(World world, int i, int j) {
+ super(world, i, j);
+ }
+
+ public boolean a(int i, int j) {
+ return i == this.locX && j == this.locZ;
+ }
+
+ public int b(int i, int j) {
+ return 0;
+ }
+
+ public void initLighting() {}
+
+ public Block getType(BlockPosition blockposition) {
+ return Blocks.AIR;
+ }
+
+ public int b(BlockPosition blockposition) {
+ return 255;
+ }
+
+ public int c(BlockPosition blockposition) {
+ return 0;
+ }
+
+ public int getBrightness(EnumSkyBlock enumskyblock, BlockPosition blockposition) {
+ return enumskyblock.c;
+ }
+
+ public void a(EnumSkyBlock enumskyblock, BlockPosition blockposition, int i) {}
+
+ public int a(BlockPosition blockposition, int i) {
+ return 0;
+ }
+
+ public void a(Entity entity) {}
+
+ public void b(Entity entity) {}
+
+ public void a(Entity entity, int i) {}
+
+ public boolean d(BlockPosition blockposition) {
+ return false;
+ }
+
+ public TileEntity a(BlockPosition blockposition, Chunk.EnumTileEntityState chunk_enumtileentitystate) {
+ return null;
+ }
+
+ public void a(TileEntity tileentity) {}
+
+ public void a(BlockPosition blockposition, TileEntity tileentity) {}
+
+ public void e(BlockPosition blockposition) {}
+
+ public void addEntities() {}
+
+ public void removeEntities() {}
+
+ public void e() {}
+
+ public void a(Entity entity, AxisAlignedBB axisalignedbb, List list, Predicate super Entity> predicate) {}
+
+ public void a(Class extends T> oclass, AxisAlignedBB axisalignedbb, List list, Predicate super T> predicate) {}
+
+ public boolean a(boolean flag) {
+ return false;
+ }
+
+ public Random a(long i) {
+ return new Random(this.getWorld().getSeed() + (long) (this.locX * this.locX * 4987142) + (long) (this.locX * 5947611) + (long) (this.locZ * this.locZ) * 4392871L + (long) (this.locZ * 389711) ^ i);
+ }
+
+ public boolean isEmpty() {
+ return true;
+ }
+
+ public boolean c(int i, int j) {
+ return true;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java b/eSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/Enchantment.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java
new file mode 100644
index 0000000..4750b4b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentArrowDamage extends Enchantment {
+
+ public EnchantmentArrowDamage(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.BOW);
+ this.c("arrowDamage");
+ }
+
+ public int a(int i) {
+ return 1 + (i - 1) * 10;
+ }
+
+ public int b(int i) {
+ return this.a(i) + 15;
+ }
+
+ public int getMaxLevel() {
+ return 5;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java
new file mode 100644
index 0000000..e9d3489
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentArrowKnockback extends Enchantment {
+
+ public EnchantmentArrowKnockback(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.BOW);
+ this.c("arrowKnockback");
+ }
+
+ public int a(int i) {
+ return 12 + (i - 1) * 20;
+ }
+
+ public int b(int i) {
+ return this.a(i) + 25;
+ }
+
+ public int getMaxLevel() {
+ return 2;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java
new file mode 100644
index 0000000..c6e83cb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentDepthStrider extends Enchantment {
+
+ public EnchantmentDepthStrider(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.ARMOR_FEET);
+ this.c("waterWalker");
+ }
+
+ public int a(int i) {
+ return i * 10;
+ }
+
+ public int b(int i) {
+ return this.a(i) + 15;
+ }
+
+ public int getMaxLevel() {
+ return 3;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDigging.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDigging.java
new file mode 100644
index 0000000..bd0050c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDigging.java
@@ -0,0 +1,25 @@
+package net.minecraft.server;
+
+public class EnchantmentDigging extends Enchantment {
+
+ protected EnchantmentDigging(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.DIGGER);
+ this.c("digging");
+ }
+
+ public int a(int i) {
+ return 1 + 10 * (i - 1);
+ }
+
+ public int b(int i) {
+ return super.a(i) + 50;
+ }
+
+ public int getMaxLevel() {
+ return 5;
+ }
+
+ public boolean canEnchant(ItemStack itemstack) {
+ return itemstack.getItem() == Items.SHEARS ? true : super.canEnchant(itemstack);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDurability.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDurability.java
new file mode 100644
index 0000000..fe494bb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentDurability.java
@@ -0,0 +1,31 @@
+package net.minecraft.server;
+
+import java.util.Random;
+
+public class EnchantmentDurability extends Enchantment {
+
+ protected EnchantmentDurability(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.BREAKABLE);
+ this.c("durability");
+ }
+
+ public int a(int i) {
+ return 5 + (i - 1) * 8;
+ }
+
+ public int b(int i) {
+ return super.a(i) + 50;
+ }
+
+ public int getMaxLevel() {
+ return 3;
+ }
+
+ public boolean canEnchant(ItemStack itemstack) {
+ return itemstack.e() ? true : super.canEnchant(itemstack);
+ }
+
+ public static boolean a(ItemStack itemstack, int i, Random random) {
+ return itemstack.getItem() instanceof ItemArmor && random.nextFloat() < 0.6F ? false : random.nextInt(i + 1) > 0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFire.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFire.java
new file mode 100644
index 0000000..eab6fc3
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFire.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentFire extends Enchantment {
+
+ protected EnchantmentFire(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.WEAPON);
+ this.c("fire");
+ }
+
+ public int a(int i) {
+ return 10 + 20 * (i - 1);
+ }
+
+ public int b(int i) {
+ return super.a(i) + 50;
+ }
+
+ public int getMaxLevel() {
+ return 2;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java
new file mode 100644
index 0000000..a7dc48e
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentFlameArrows extends Enchantment {
+
+ public EnchantmentFlameArrows(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.BOW);
+ this.c("arrowFire");
+ }
+
+ public int a(int i) {
+ return 20;
+ }
+
+ public int b(int i) {
+ return 50;
+ }
+
+ public int getMaxLevel() {
+ return 1;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java
new file mode 100644
index 0000000..3f88e47
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentInfiniteArrows extends Enchantment {
+
+ public EnchantmentInfiniteArrows(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.BOW);
+ this.c("arrowInfinite");
+ }
+
+ public int a(int i) {
+ return 20;
+ }
+
+ public int b(int i) {
+ return 50;
+ }
+
+ public int getMaxLevel() {
+ return 1;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentKnockback.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentKnockback.java
new file mode 100644
index 0000000..c9aeb12
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentKnockback.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentKnockback extends Enchantment {
+
+ protected EnchantmentKnockback(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.WEAPON);
+ this.c("knockback");
+ }
+
+ public int a(int i) {
+ return 5 + 20 * (i - 1);
+ }
+
+ public int b(int i) {
+ return super.a(i) + 50;
+ }
+
+ public int getMaxLevel() {
+ return 2;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLootBonus.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLootBonus.java
new file mode 100644
index 0000000..cd86a9f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLootBonus.java
@@ -0,0 +1,32 @@
+package net.minecraft.server;
+
+public class EnchantmentLootBonus extends Enchantment {
+
+ protected EnchantmentLootBonus(int i, MinecraftKey minecraftkey, int j, EnchantmentSlotType enchantmentslottype) {
+ super(i, minecraftkey, j, enchantmentslottype);
+ if (enchantmentslottype == EnchantmentSlotType.DIGGER) {
+ this.c("lootBonusDigger");
+ } else if (enchantmentslottype == EnchantmentSlotType.FISHING_ROD) {
+ this.c("lootBonusFishing");
+ } else {
+ this.c("lootBonus");
+ }
+
+ }
+
+ public int a(int i) {
+ return 15 + (i - 1) * 9;
+ }
+
+ public int b(int i) {
+ return super.a(i) + 50;
+ }
+
+ public int getMaxLevel() {
+ return 3;
+ }
+
+ public boolean a(Enchantment enchantment) {
+ return super.a(enchantment) && enchantment.id != EnchantmentLootBonus.SILK_TOUCH.id;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLure.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLure.java
new file mode 100644
index 0000000..0945deb
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentLure.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentLure extends Enchantment {
+
+ protected EnchantmentLure(int i, MinecraftKey minecraftkey, int j, EnchantmentSlotType enchantmentslottype) {
+ super(i, minecraftkey, j, enchantmentslottype);
+ this.c("fishingSpeed");
+ }
+
+ public int a(int i) {
+ return 15 + (i - 1) * 9;
+ }
+
+ public int b(int i) {
+ return super.a(i) + 50;
+ }
+
+ public int getMaxLevel() {
+ return 3;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentManager.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentOxygen.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentOxygen.java
new file mode 100644
index 0000000..b539085
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentOxygen.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentOxygen extends Enchantment {
+
+ public EnchantmentOxygen(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.ARMOR_HEAD);
+ this.c("oxygen");
+ }
+
+ public int a(int i) {
+ return 10 * i;
+ }
+
+ public int b(int i) {
+ return this.a(i) + 30;
+ }
+
+ public int getMaxLevel() {
+ return 3;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentProtection.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentProtection.java
new file mode 100644
index 0000000..4dd4f1f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentProtection.java
@@ -0,0 +1,75 @@
+package net.minecraft.server;
+
+public class EnchantmentProtection extends Enchantment {
+
+ private static final String[] E = new String[] { "all", "fire", "fall", "explosion", "projectile"};
+ private static final int[] F = new int[] { 1, 10, 5, 5, 3};
+ private static final int[] G = new int[] { 11, 8, 6, 8, 6};
+ private static final int[] H = new int[] { 20, 12, 10, 12, 15};
+ public final int a;
+
+ public EnchantmentProtection(int i, MinecraftKey minecraftkey, int j, int k) {
+ super(i, minecraftkey, j, EnchantmentSlotType.ARMOR);
+ this.a = k;
+ if (k == 2) {
+ this.slot = EnchantmentSlotType.ARMOR_FEET;
+ }
+
+ }
+
+ public int a(int i) {
+ return EnchantmentProtection.F[this.a] + (i - 1) * EnchantmentProtection.G[this.a];
+ }
+
+ public int b(int i) {
+ return this.a(i) + EnchantmentProtection.H[this.a];
+ }
+
+ public int getMaxLevel() {
+ return 4;
+ }
+
+ public int a(int i, DamageSource damagesource) {
+ if (damagesource.ignoresInvulnerability()) {
+ return 0;
+ } else {
+ float f = (float) (6 + i * i) / 3.0F;
+
+ return this.a == 0 ? MathHelper.d(f * 0.75F) : (this.a == 1 && damagesource.o() ? MathHelper.d(f * 1.25F) : (this.a == 2 && damagesource == DamageSource.FALL ? MathHelper.d(f * 2.5F) : (this.a == 3 && damagesource.isExplosion() ? MathHelper.d(f * 1.5F) : (this.a == 4 && damagesource.a() ? MathHelper.d(f * 1.5F) : 0))));
+ }
+ }
+
+ public String a() {
+ return "enchantment.protect." + EnchantmentProtection.E[this.a];
+ }
+
+ public boolean a(Enchantment enchantment) {
+ if (enchantment instanceof EnchantmentProtection) {
+ EnchantmentProtection enchantmentprotection = (EnchantmentProtection) enchantment;
+
+ return enchantmentprotection.a == this.a ? false : this.a == 2 || enchantmentprotection.a == 2;
+ } else {
+ return super.a(enchantment);
+ }
+ }
+
+ public static int a(Entity entity, int i) {
+ int j = EnchantmentManager.a(Enchantment.PROTECTION_FIRE.id, entity.getEquipment());
+
+ if (j > 0) {
+ i -= MathHelper.d((float) i * (float) j * 0.15F);
+ }
+
+ return i;
+ }
+
+ public static double a(Entity entity, double d0) {
+ int i = EnchantmentManager.a(Enchantment.PROTECTION_EXPLOSIONS.id, entity.getEquipment());
+
+ if (i > 0) {
+ d0 -= (double) MathHelper.floor(d0 * (double) ((float) i * 0.15F));
+ }
+
+ return d0;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java
new file mode 100644
index 0000000..cda4a45
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java
@@ -0,0 +1,29 @@
+package net.minecraft.server;
+
+public class EnchantmentSilkTouch extends Enchantment {
+
+ protected EnchantmentSilkTouch(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.DIGGER);
+ this.c("untouching");
+ }
+
+ public int a(int i) {
+ return 15;
+ }
+
+ public int b(int i) {
+ return super.a(i) + 50;
+ }
+
+ public int getMaxLevel() {
+ return 1;
+ }
+
+ public boolean a(Enchantment enchantment) {
+ return super.a(enchantment) && enchantment.id != EnchantmentSilkTouch.LOOT_BONUS_BLOCKS.id;
+ }
+
+ public boolean canEnchant(ItemStack itemstack) {
+ return itemstack.getItem() == Items.SHEARS ? true : super.canEnchant(itemstack);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSlotType.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSlotType.java
new file mode 100644
index 0000000..d552656
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentSlotType.java
@@ -0,0 +1,26 @@
+package net.minecraft.server;
+
+public enum EnchantmentSlotType {
+
+ ALL, ARMOR, ARMOR_FEET, ARMOR_LEGS, ARMOR_TORSO, ARMOR_HEAD, WEAPON, DIGGER, FISHING_ROD, BREAKABLE, BOW;
+
+ private EnchantmentSlotType() {}
+
+ public boolean canEnchant(Item item) {
+ if (this == EnchantmentSlotType.ALL) {
+ return true;
+ } else if (this == EnchantmentSlotType.BREAKABLE && item.usesDurability()) {
+ return true;
+ } else if (item instanceof ItemArmor) {
+ if (this == EnchantmentSlotType.ARMOR) {
+ return true;
+ } else {
+ ItemArmor itemarmor = (ItemArmor) item;
+
+ return itemarmor.b == 0 ? this == EnchantmentSlotType.ARMOR_HEAD : (itemarmor.b == 2 ? this == EnchantmentSlotType.ARMOR_LEGS : (itemarmor.b == 1 ? this == EnchantmentSlotType.ARMOR_TORSO : (itemarmor.b == 3 ? this == EnchantmentSlotType.ARMOR_FEET : false)));
+ }
+ } else {
+ return item instanceof ItemSword ? this == EnchantmentSlotType.WEAPON : (item instanceof ItemTool ? this == EnchantmentSlotType.DIGGER : (item instanceof ItemBow ? this == EnchantmentSlotType.BOW : (item instanceof ItemFishingRod ? this == EnchantmentSlotType.FISHING_ROD : false)));
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentThorns.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java
new file mode 100644
index 0000000..be8162d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java
@@ -0,0 +1,21 @@
+package net.minecraft.server;
+
+public class EnchantmentWaterWorker extends Enchantment {
+
+ public EnchantmentWaterWorker(int i, MinecraftKey minecraftkey, int j) {
+ super(i, minecraftkey, j, EnchantmentSlotType.ARMOR_HEAD);
+ this.c("waterWorker");
+ }
+
+ public int a(int i) {
+ return 1;
+ }
+
+ public int b(int i) {
+ return this.a(i) + 40;
+ }
+
+ public int getMaxLevel() {
+ return 1;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java
new file mode 100644
index 0000000..8545190
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java
@@ -0,0 +1,56 @@
+package net.minecraft.server;
+
+public class EnchantmentWeaponDamage extends Enchantment {
+
+ private static final String[] E = new String[] { "all", "undead", "arthropods"};
+ private static final int[] F = new int[] { 1, 5, 5};
+ private static final int[] G = new int[] { 11, 8, 8};
+ private static final int[] H = new int[] { 20, 20, 20};
+ public final int a;
+
+ public EnchantmentWeaponDamage(int i, MinecraftKey minecraftkey, int j, int k) {
+ super(i, minecraftkey, j, EnchantmentSlotType.WEAPON);
+ this.a = k;
+ }
+
+ public int a(int i) {
+ return EnchantmentWeaponDamage.F[this.a] + (i - 1) * EnchantmentWeaponDamage.G[this.a];
+ }
+
+ public int b(int i) {
+ return this.a(i) + EnchantmentWeaponDamage.H[this.a];
+ }
+
+ public int getMaxLevel() {
+ return 5;
+ }
+
+ public float a(int i, EnumMonsterType enummonstertype) {
+ return this.a == 0 ? (float) i * 1.25F : (this.a == 1 && enummonstertype == EnumMonsterType.UNDEAD ? (float) i * 2.5F : (this.a == 2 && enummonstertype == EnumMonsterType.ARTHROPOD ? (float) i * 2.5F : 0.0F));
+ }
+
+ public String a() {
+ return "enchantment.damage." + EnchantmentWeaponDamage.E[this.a];
+ }
+
+ public boolean a(Enchantment enchantment) {
+ return !(enchantment instanceof EnchantmentWeaponDamage);
+ }
+
+ public boolean canEnchant(ItemStack itemstack) {
+ return itemstack.getItem() instanceof ItemAxe ? true : super.canEnchant(itemstack);
+ }
+
+ public void a(EntityLiving entityliving, Entity entity, int i) {
+ if (entity instanceof EntityLiving) {
+ EntityLiving entityliving1 = (EntityLiving) entity;
+
+ if (this.a == 2 && entityliving1.getMonsterType() == EnumMonsterType.ARTHROPOD) {
+ int j = 20 + entityliving.bc().nextInt(10 * i);
+
+ entityliving1.addEffect(new MobEffect(MobEffectList.SLOWER_MOVEMENT.id, j, 3));
+ }
+ }
+
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/Entity.java b/eSpigot-Server/src/main/java/net/minecraft/server/Entity.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/Entity.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/Entity.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityAIBodyControl.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAIBodyControl.java
new file mode 100644
index 0000000..10fd66a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAIBodyControl.java
@@ -0,0 +1,54 @@
+package net.minecraft.server;
+
+public class EntityAIBodyControl {
+
+ private EntityLiving a;
+ private int b;
+ private float c;
+
+ public EntityAIBodyControl(EntityLiving entityliving) {
+ this.a = entityliving;
+ }
+
+ public void a() {
+ double d0 = this.a.locX - this.a.lastX;
+ double d1 = this.a.locZ - this.a.lastZ;
+
+ if (d0 * d0 + d1 * d1 > 2.500000277905201E-7D) {
+ this.a.aI = this.a.yaw;
+ this.a.aK = this.a(this.a.aI, this.a.aK, 75.0F);
+ this.c = this.a.aK;
+ this.b = 0;
+ } else {
+ float f = 75.0F;
+
+ if (Math.abs(this.a.aK - this.c) > 15.0F) {
+ this.b = 0;
+ this.c = this.a.aK;
+ } else {
+ ++this.b;
+ boolean flag = true;
+
+ if (this.b > 10) {
+ f = Math.max(1.0F - (float) (this.b - 10) / 10.0F, 0.0F) * 75.0F;
+ }
+ }
+
+ this.a.aI = this.a(this.a.aK, this.a.aI, f);
+ }
+ }
+
+ private float a(float f, float f1, float f2) {
+ float f3 = MathHelper.g(f - f1);
+
+ if (f3 < -f2) {
+ f3 = -f2;
+ }
+
+ if (f3 >= f2) {
+ f3 = f2;
+ }
+
+ return f - f3;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityAgeable.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityAmbient.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAmbient.java
new file mode 100644
index 0000000..df1e00d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAmbient.java
@@ -0,0 +1,16 @@
+package net.minecraft.server;
+
+public abstract class EntityAmbient extends EntityInsentient implements IAnimal {
+
+ public EntityAmbient(World world) {
+ super(world);
+ }
+
+ public boolean cb() {
+ return false;
+ }
+
+ protected boolean a(EntityHuman entityhuman) {
+ return false;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityAnimal.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityArmorStand.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityArrow.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityBat.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBat.java
new file mode 100644
index 0000000..5241620
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBat.java
@@ -0,0 +1,186 @@
+package net.minecraft.server;
+
+import java.util.Calendar;
+
+public class EntityBat extends EntityAmbient {
+
+ private BlockPosition a;
+
+ public EntityBat(World world) {
+ super(world);
+ this.setSize(0.5F, 0.9F);
+ this.setAsleep(true);
+ }
+
+ protected void h() {
+ super.h();
+ this.datawatcher.a(16, new Byte((byte) 0));
+ }
+
+ protected float bB() {
+ return 0.1F;
+ }
+
+ protected float bC() {
+ return super.bC() * 0.95F;
+ }
+
+ protected String z() {
+ return this.isAsleep() && this.random.nextInt(4) != 0 ? null : "mob.bat.idle";
+ }
+
+ protected String bo() {
+ return "mob.bat.hurt";
+ }
+
+ protected String bp() {
+ return "mob.bat.death";
+ }
+
+ public boolean ae() {
+ return false;
+ }
+
+ protected void s(Entity entity) {}
+
+ protected void bL() {}
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.maxHealth).setValue(6.0D);
+ }
+
+ public boolean isAsleep() {
+ return (this.datawatcher.getByte(16) & 1) != 0;
+ }
+
+ public void setAsleep(boolean flag) {
+ byte b0 = this.datawatcher.getByte(16);
+
+ if (flag) {
+ this.datawatcher.watch(16, Byte.valueOf((byte) (b0 | 1)));
+ } else {
+ this.datawatcher.watch(16, Byte.valueOf((byte) (b0 & -2)));
+ }
+
+ }
+
+ public void t_() {
+ super.t_();
+ if (this.isAsleep()) {
+ this.motX = this.motY = this.motZ = 0.0D;
+ this.locY = (double) MathHelper.floor(this.locY) + 1.0D - (double) this.length;
+ } else {
+ this.motY *= 0.6000000238418579D;
+ }
+
+ }
+
+ protected void E() {
+ super.E();
+ BlockPosition blockposition = new BlockPosition(this);
+ BlockPosition blockposition1 = blockposition.up();
+
+ if (this.isAsleep()) {
+ if (!this.world.getType(blockposition1).getBlock().isOccluding()) {
+ this.setAsleep(false);
+ this.world.a((EntityHuman) null, 1015, blockposition, 0);
+ } else {
+ if (this.random.nextInt(200) == 0) {
+ this.aK = (float) this.random.nextInt(360);
+ }
+
+ if (this.world.findNearbyPlayer(this, 4.0D) != null) {
+ this.setAsleep(false);
+ this.world.a((EntityHuman) null, 1015, blockposition, 0);
+ }
+ }
+ } else {
+ if (this.a != null && (!this.world.isEmpty(this.a) || this.a.getY() < 1)) {
+ this.a = null;
+ }
+
+ if (this.a == null || this.random.nextInt(30) == 0 || this.a.c((double) ((int) this.locX), (double) ((int) this.locY), (double) ((int) this.locZ)) < 4.0D) {
+ this.a = new BlockPosition((int) this.locX + this.random.nextInt(7) - this.random.nextInt(7), (int) this.locY + this.random.nextInt(6) - 2, (int) this.locZ + this.random.nextInt(7) - this.random.nextInt(7));
+ }
+
+ double d0 = (double) this.a.getX() + 0.5D - this.locX;
+ double d1 = (double) this.a.getY() + 0.1D - this.locY;
+ double d2 = (double) this.a.getZ() + 0.5D - this.locZ;
+
+ this.motX += (Math.signum(d0) * 0.5D - this.motX) * 0.10000000149011612D;
+ this.motY += (Math.signum(d1) * 0.699999988079071D - this.motY) * 0.10000000149011612D;
+ this.motZ += (Math.signum(d2) * 0.5D - this.motZ) * 0.10000000149011612D;
+ float f = (float) (MathHelper.b(this.motZ, this.motX) * 180.0D / 3.1415927410125732D) - 90.0F;
+ float f1 = MathHelper.g(f - this.yaw);
+
+ this.ba = 0.5F;
+ this.yaw += f1;
+ if (this.random.nextInt(100) == 0 && this.world.getType(blockposition1).getBlock().isOccluding()) {
+ this.setAsleep(true);
+ }
+ }
+
+ }
+
+ protected boolean s_() {
+ return false;
+ }
+
+ public void e(float f, float f1) {}
+
+ protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {}
+
+ public boolean aI() {
+ return true;
+ }
+
+ public boolean damageEntity(DamageSource damagesource, float f) {
+ if (this.isInvulnerable(damagesource)) {
+ return false;
+ } else {
+ if (!this.world.isClientSide && this.isAsleep()) {
+ this.setAsleep(false);
+ }
+
+ return super.damageEntity(damagesource, f);
+ }
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ this.datawatcher.watch(16, Byte.valueOf(nbttagcompound.getByte("BatFlags")));
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ nbttagcompound.setByte("BatFlags", this.datawatcher.getByte(16));
+ }
+
+ public boolean bR() {
+ BlockPosition blockposition = new BlockPosition(this.locX, this.getBoundingBox().b, this.locZ);
+
+ if (blockposition.getY() >= this.world.F()) {
+ return false;
+ } else {
+ int i = this.world.getLightLevel(blockposition);
+ byte b0 = 4;
+
+ if (this.a(this.world.Y())) {
+ b0 = 7;
+ } else if (this.random.nextBoolean()) {
+ return false;
+ }
+
+ return i > this.random.nextInt(b0) ? false : super.bR();
+ }
+ }
+
+ private boolean a(Calendar calendar) {
+ return calendar.get(2) + 1 == 10 && calendar.get(5) >= 20 || calendar.get(2) + 1 == 11 && calendar.get(5) <= 3;
+ }
+
+ public float getHeadHeight() {
+ return this.length / 2.0F;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityBlaze.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBlaze.java
new file mode 100644
index 0000000..c6b7113
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBlaze.java
@@ -0,0 +1,207 @@
+package net.minecraft.server;
+
+public class EntityBlaze extends EntityMonster {
+
+ private float a = 0.5F;
+ private int b;
+
+ public EntityBlaze(World world) {
+ super(world);
+ this.fireProof = true;
+ this.b_ = 10;
+ this.goalSelector.a(4, new EntityBlaze.PathfinderGoalBlazeFireball(this));
+ this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D));
+ this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.0D));
+ this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
+ this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
+ this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[0]));
+ this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, true));
+ }
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(6.0D);
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.23000000417232513D);
+ this.getAttributeInstance(GenericAttributes.FOLLOW_RANGE).setValue(48.0D);
+ }
+
+ protected void h() {
+ super.h();
+ this.datawatcher.a(16, new Byte((byte) 0));
+ }
+
+ protected String z() {
+ return "mob.blaze.breathe";
+ }
+
+ protected String bo() {
+ return "mob.blaze.hit";
+ }
+
+ protected String bp() {
+ return "mob.blaze.death";
+ }
+
+ public float c(float f) {
+ return 1.0F;
+ }
+
+ public void m() {
+ if (!this.onGround && this.motY < 0.0D) {
+ this.motY *= 0.6D;
+ }
+
+ if (this.world.isClientSide) {
+ if (this.random.nextInt(24) == 0 && !this.R()) {
+ this.world.a(this.locX + 0.5D, this.locY + 0.5D, this.locZ + 0.5D, "fire.fire", 1.0F + this.random.nextFloat(), this.random.nextFloat() * 0.7F + 0.3F, false);
+ }
+
+ for (int i = 0; i < 2; ++i) {
+ this.world.addParticle(EnumParticle.SMOKE_LARGE, this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width, this.locY + this.random.nextDouble() * (double) this.length, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width, 0.0D, 0.0D, 0.0D, new int[0]);
+ }
+ }
+
+ super.m();
+ }
+
+ protected void E() {
+ if (this.U()) {
+ this.damageEntity(DamageSource.DROWN, 1.0F);
+ }
+
+ --this.b;
+ if (this.b <= 0) {
+ this.b = 100;
+ this.a = 0.5F + (float) this.random.nextGaussian() * 3.0F;
+ }
+
+ EntityLiving entityliving = this.getGoalTarget();
+
+ if (entityliving != null && entityliving.locY + (double) entityliving.getHeadHeight() > this.locY + (double) this.getHeadHeight() + (double) this.a) {
+ this.motY += (0.30000001192092896D - this.motY) * 0.30000001192092896D;
+ this.ai = true;
+ }
+
+ super.E();
+ }
+
+ public void e(float f, float f1) {}
+
+ protected Item getLoot() {
+ return Items.BLAZE_ROD;
+ }
+
+ public boolean isBurning() {
+ return this.n();
+ }
+
+ protected void dropDeathLoot(boolean flag, int i) {
+ if (flag) {
+ int j = this.random.nextInt(2 + i);
+
+ for (int k = 0; k < j; ++k) {
+ this.a(Items.BLAZE_ROD, 1);
+ }
+ }
+
+ }
+
+ public boolean n() {
+ return (this.datawatcher.getByte(16) & 1) != 0;
+ }
+
+ public void a(boolean flag) {
+ byte b0 = this.datawatcher.getByte(16);
+
+ if (flag) {
+ b0 = (byte) (b0 | 1);
+ } else {
+ b0 &= -2;
+ }
+
+ this.datawatcher.watch(16, Byte.valueOf(b0));
+ }
+
+ protected boolean n_() {
+ return true;
+ }
+
+ static class PathfinderGoalBlazeFireball extends PathfinderGoal {
+
+ private EntityBlaze a;
+ private int b;
+ private int c;
+
+ public PathfinderGoalBlazeFireball(EntityBlaze entityblaze) {
+ this.a = entityblaze;
+ this.a(3);
+ }
+
+ public boolean a() {
+ EntityLiving entityliving = this.a.getGoalTarget();
+
+ return entityliving != null && entityliving.isAlive();
+ }
+
+ public void c() {
+ this.b = 0;
+ }
+
+ public void d() {
+ this.a.a(false);
+ }
+
+ public void e() {
+ --this.c;
+ EntityLiving entityliving = this.a.getGoalTarget();
+ double d0 = this.a.h(entityliving);
+
+ if (d0 < 4.0D) {
+ if (this.c <= 0) {
+ this.c = 20;
+ this.a.r(entityliving);
+ }
+
+ this.a.getControllerMove().a(entityliving.locX, entityliving.locY, entityliving.locZ, 1.0D);
+ } else if (d0 < 256.0D) {
+ double d1 = entityliving.locX - this.a.locX;
+ double d2 = entityliving.getBoundingBox().b + (double) (entityliving.length / 2.0F) - (this.a.locY + (double) (this.a.length / 2.0F));
+ double d3 = entityliving.locZ - this.a.locZ;
+
+ if (this.c <= 0) {
+ ++this.b;
+ if (this.b == 1) {
+ this.c = 60;
+ this.a.a(true);
+ } else if (this.b <= 4) {
+ this.c = 6;
+ } else {
+ this.c = 100;
+ this.b = 0;
+ this.a.a(false);
+ }
+
+ if (this.b > 1) {
+ float f = MathHelper.c(MathHelper.sqrt(d0)) * 0.5F;
+
+ this.a.world.a((EntityHuman) null, 1009, new BlockPosition((int) this.a.locX, (int) this.a.locY, (int) this.a.locZ), 0);
+
+ for (int i = 0; i < 1; ++i) {
+ EntitySmallFireball entitysmallfireball = new EntitySmallFireball(this.a.world, this.a, d1 + this.a.bc().nextGaussian() * (double) f, d2, d3 + this.a.bc().nextGaussian() * (double) f);
+
+ entitysmallfireball.locY = this.a.locY + (double) (this.a.length / 2.0F) + 0.5D;
+ this.a.world.addEntity(entitysmallfireball);
+ }
+ }
+ }
+
+ this.a.getControllerLook().a(entityliving, 10.0F, 10.0F);
+ } else {
+ this.a.getNavigation().n();
+ this.a.getControllerMove().a(entityliving.locX, entityliving.locY, entityliving.locZ, 1.0D);
+ }
+
+ super.e();
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityBoat.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityCaveSpider.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCaveSpider.java
new file mode 100644
index 0000000..f26d52a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCaveSpider.java
@@ -0,0 +1,44 @@
+package net.minecraft.server;
+
+public class EntityCaveSpider extends EntitySpider {
+
+ public EntityCaveSpider(World world) {
+ super(world);
+ this.setSize(0.7F, 0.5F);
+ }
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.maxHealth).setValue(12.0D);
+ }
+
+ public boolean r(Entity entity) {
+ if (super.r(entity)) {
+ if (entity instanceof EntityLiving) {
+ byte b0 = 0;
+
+ if (this.world.getDifficulty() == EnumDifficulty.NORMAL) {
+ b0 = 7;
+ } else if (this.world.getDifficulty() == EnumDifficulty.HARD) {
+ b0 = 15;
+ }
+
+ if (b0 > 0) {
+ ((EntityLiving) entity).addEffect(new MobEffect(MobEffectList.POISON.id, b0 * 20, 0));
+ }
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public GroupDataEntity prepare(DifficultyDamageScaler difficultydamagescaler, GroupDataEntity groupdataentity) {
+ return groupdataentity;
+ }
+
+ public float getHeadHeight() {
+ return 0.45F;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityChicken.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityComplexPart.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityComplexPart.java
new file mode 100644
index 0000000..8addf6f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityComplexPart.java
@@ -0,0 +1,32 @@
+package net.minecraft.server;
+
+public class EntityComplexPart extends Entity {
+
+ public final IComplex owner;
+ public final String b;
+
+ public EntityComplexPart(IComplex icomplex, String s, float f, float f1) {
+ super(icomplex.a());
+ this.setSize(f, f1);
+ this.owner = icomplex;
+ this.b = s;
+ }
+
+ protected void h() {}
+
+ protected void a(NBTTagCompound nbttagcompound) {}
+
+ protected void b(NBTTagCompound nbttagcompound) {}
+
+ public boolean ad() {
+ return true;
+ }
+
+ public boolean damageEntity(DamageSource damagesource, float f) {
+ return this.isInvulnerable(damagesource) ? false : this.owner.a(this, damagesource, f);
+ }
+
+ public boolean k(Entity entity) {
+ return this == entity || this.owner == entity;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityCow.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityCreature.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityCreeper.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSource.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSource.java
new file mode 100644
index 0000000..b4b5a3f
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSource.java
@@ -0,0 +1,37 @@
+package net.minecraft.server;
+
+public class EntityDamageSource extends DamageSource {
+
+ protected Entity q;
+ private boolean r = false;
+
+ public EntityDamageSource(String s, Entity entity) {
+ super(s);
+ this.q = entity;
+ }
+
+ public EntityDamageSource v() {
+ this.r = true;
+ return this;
+ }
+
+ public boolean w() {
+ return this.r;
+ }
+
+ public Entity getEntity() {
+ return this.q;
+ }
+
+ public IChatBaseComponent getLocalizedDeathMessage(EntityLiving entityliving) {
+ ItemStack itemstack = this.q instanceof EntityLiving ? ((EntityLiving) this.q).bA() : null;
+ String s = "death.attack." + this.translationIndex;
+ String s1 = s + ".item";
+
+ return itemstack != null && itemstack.hasName() && LocaleI18n.c(s1) ? new ChatMessage(s1, new Object[] { entityliving.getScoreboardDisplayName(), this.q.getScoreboardDisplayName(), itemstack.C()}) : new ChatMessage(s, new Object[] { entityliving.getScoreboardDisplayName(), this.q.getScoreboardDisplayName()});
+ }
+
+ public boolean r() {
+ return this.q != null && this.q instanceof EntityLiving && !(this.q instanceof EntityHuman);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEgg.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderCrystal.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderDragon.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderPearl.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderSignal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderSignal.java
new file mode 100644
index 0000000..1e4188c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderSignal.java
@@ -0,0 +1,134 @@
+package net.minecraft.server;
+
+public class EntityEnderSignal extends Entity {
+
+ private double a;
+ private double b;
+ private double c;
+ private int d;
+ private boolean e;
+
+ public EntityEnderSignal(World world) {
+ super(world);
+ this.setSize(0.25F, 0.25F);
+ }
+
+ protected void h() {}
+
+ public EntityEnderSignal(World world, double d0, double d1, double d2) {
+ super(world);
+ this.d = 0;
+ this.setSize(0.25F, 0.25F);
+ this.setPosition(d0, d1, d2);
+ }
+
+ public void a(BlockPosition blockposition) {
+ double d0 = (double) blockposition.getX();
+ int i = blockposition.getY();
+ double d1 = (double) blockposition.getZ();
+ double d2 = d0 - this.locX;
+ double d3 = d1 - this.locZ;
+ float f = MathHelper.sqrt(d2 * d2 + d3 * d3);
+
+ if (f > 12.0F) {
+ this.a = this.locX + d2 / (double) f * 12.0D;
+ this.c = this.locZ + d3 / (double) f * 12.0D;
+ this.b = this.locY + 8.0D;
+ } else {
+ this.a = d0;
+ this.b = (double) i;
+ this.c = d1;
+ }
+
+ this.d = 0;
+ this.e = this.random.nextInt(5) > 0;
+ }
+
+ public void t_() {
+ this.P = this.locX;
+ this.Q = this.locY;
+ this.R = this.locZ;
+ super.t_();
+ this.locX += this.motX;
+ this.locY += this.motY;
+ this.locZ += this.motZ;
+ float f = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ);
+
+ this.yaw = (float) (MathHelper.b(this.motX, this.motZ) * 180.0D / 3.1415927410125732D);
+
+ for (this.pitch = (float) (MathHelper.b(this.motY, (double) f) * 180.0D / 3.1415927410125732D); this.pitch - this.lastPitch < -180.0F; this.lastPitch -= 360.0F) {
+ ;
+ }
+
+ while (this.pitch - this.lastPitch >= 180.0F) {
+ this.lastPitch += 360.0F;
+ }
+
+ while (this.yaw - this.lastYaw < -180.0F) {
+ this.lastYaw -= 360.0F;
+ }
+
+ while (this.yaw - this.lastYaw >= 180.0F) {
+ this.lastYaw += 360.0F;
+ }
+
+ this.pitch = this.lastPitch + (this.pitch - this.lastPitch) * 0.2F;
+ this.yaw = this.lastYaw + (this.yaw - this.lastYaw) * 0.2F;
+ if (!this.world.isClientSide) {
+ double d0 = this.a - this.locX;
+ double d1 = this.c - this.locZ;
+ float f1 = (float) Math.sqrt(d0 * d0 + d1 * d1);
+ float f2 = (float) MathHelper.b(d1, d0);
+ double d2 = (double) f + (double) (f1 - f) * 0.0025D;
+
+ if (f1 < 1.0F) {
+ d2 *= 0.8D;
+ this.motY *= 0.8D;
+ }
+
+ this.motX = Math.cos((double) f2) * d2;
+ this.motZ = Math.sin((double) f2) * d2;
+ if (this.locY < this.b) {
+ this.motY += (1.0D - this.motY) * 0.014999999664723873D;
+ } else {
+ this.motY += (-1.0D - this.motY) * 0.014999999664723873D;
+ }
+ }
+
+ float f3 = 0.25F;
+
+ if (this.V()) {
+ for (int i = 0; i < 4; ++i) {
+ this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX - this.motX * (double) f3, this.locY - this.motY * (double) f3, this.locZ - this.motZ * (double) f3, this.motX, this.motY, this.motZ, new int[0]);
+ }
+ } else {
+ this.world.addParticle(EnumParticle.PORTAL, this.locX - this.motX * (double) f3 + this.random.nextDouble() * 0.6D - 0.3D, this.locY - this.motY * (double) f3 - 0.5D, this.locZ - this.motZ * (double) f3 + this.random.nextDouble() * 0.6D - 0.3D, this.motX, this.motY, this.motZ, new int[0]);
+ }
+
+ if (!this.world.isClientSide) {
+ this.setPosition(this.locX, this.locY, this.locZ);
+ ++this.d;
+ if (this.d > 80 && !this.world.isClientSide) {
+ this.die();
+ if (this.e) {
+ this.world.addEntity(new EntityItem(this.world, this.locX, this.locY, this.locZ, new ItemStack(Items.ENDER_EYE)));
+ } else {
+ this.world.triggerEffect(2003, new BlockPosition(this), 0);
+ }
+ }
+ }
+
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {}
+
+ public void a(NBTTagCompound nbttagcompound) {}
+
+ public float c(float f) {
+ return 1.0F;
+ }
+
+ public boolean aD() {
+ return false;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityEnderman.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityEndermite.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEndermite.java
new file mode 100644
index 0000000..be2bf9c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityEndermite.java
@@ -0,0 +1,116 @@
+package net.minecraft.server;
+
+public class EntityEndermite extends EntityMonster {
+
+ private int a = 0;
+ private boolean b = false;
+
+ public EntityEndermite(World world) {
+ super(world);
+ this.b_ = 3;
+ this.setSize(0.4F, 0.3F);
+ this.goalSelector.a(1, new PathfinderGoalFloat(this));
+ this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, 1.0D, false));
+ this.goalSelector.a(3, new PathfinderGoalRandomStroll(this, 1.0D));
+ this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
+ this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
+ this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[0]));
+ this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, true));
+ }
+
+ public float getHeadHeight() {
+ return 0.1F;
+ }
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.maxHealth).setValue(8.0D);
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.25D);
+ this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(2.0D);
+ }
+
+ protected boolean s_() {
+ return false;
+ }
+
+ protected String z() {
+ return "mob.silverfish.say";
+ }
+
+ protected String bo() {
+ return "mob.silverfish.hit";
+ }
+
+ protected String bp() {
+ return "mob.silverfish.kill";
+ }
+
+ protected void a(BlockPosition blockposition, Block block) {
+ this.makeSound("mob.silverfish.step", 0.15F, 1.0F);
+ }
+
+ protected Item getLoot() {
+ return null;
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ this.a = nbttagcompound.getInt("Lifetime");
+ this.b = nbttagcompound.getBoolean("PlayerSpawned");
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ nbttagcompound.setInt("Lifetime", this.a);
+ nbttagcompound.setBoolean("PlayerSpawned", this.b);
+ }
+
+ public void t_() {
+ this.aI = this.yaw;
+ super.t_();
+ }
+
+ public boolean n() {
+ return this.b;
+ }
+
+ public void a(boolean flag) {
+ this.b = flag;
+ }
+
+ public void m() {
+ super.m();
+ if (this.world.isClientSide) {
+ for (int i = 0; i < 2; ++i) {
+ this.world.addParticle(EnumParticle.PORTAL, this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width, this.locY + this.random.nextDouble() * (double) this.length, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width, (this.random.nextDouble() - 0.5D) * 2.0D, -this.random.nextDouble(), (this.random.nextDouble() - 0.5D) * 2.0D, new int[0]);
+ }
+ } else {
+ if (!this.isPersistent()) {
+ ++this.a;
+ }
+
+ if (this.a >= 2400) {
+ this.die();
+ }
+ }
+
+ }
+
+ protected boolean n_() {
+ return true;
+ }
+
+ public boolean bR() {
+ if (super.bR()) {
+ EntityHuman entityhuman = this.world.findNearbyPlayer(this, 5.0D);
+
+ return entityhuman == null;
+ } else {
+ return false;
+ }
+ }
+
+ public EnumMonsterType getMonsterType() {
+ return EnumMonsterType.ARTHROPOD;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityExperienceOrb.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFallingBlock.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFireball.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFireworks.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityFishingHook.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityFlying.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFlying.java
new file mode 100644
index 0000000..b60d080
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityFlying.java
@@ -0,0 +1,63 @@
+package net.minecraft.server;
+
+public abstract class EntityFlying extends EntityInsentient {
+
+ public EntityFlying(World world) {
+ super(world);
+ }
+
+ public void e(float f, float f1) {}
+
+ protected void a(double d0, boolean flag, Block block, BlockPosition blockposition) {}
+
+ public void g(float f, float f1) {
+ if (this.V()) {
+ this.a(f, f1, 0.02F);
+ this.move(this.motX, this.motY, this.motZ);
+ this.motX *= 0.800000011920929D;
+ this.motY *= 0.800000011920929D;
+ this.motZ *= 0.800000011920929D;
+ } else if (this.ab()) {
+ this.a(f, f1, 0.02F);
+ this.move(this.motX, this.motY, this.motZ);
+ this.motX *= 0.5D;
+ this.motY *= 0.5D;
+ this.motZ *= 0.5D;
+ } else {
+ float f2 = 0.91F;
+
+ if (this.onGround) {
+ f2 = this.world.getType(new BlockPosition(MathHelper.floor(this.locX), MathHelper.floor(this.getBoundingBox().b) - 1, MathHelper.floor(this.locZ))).getBlock().frictionFactor * 0.91F;
+ }
+
+ float f3 = 0.16277136F / (f2 * f2 * f2);
+
+ this.a(f, f1, this.onGround ? 0.1F * f3 : 0.02F);
+ f2 = 0.91F;
+ if (this.onGround) {
+ f2 = this.world.getType(new BlockPosition(MathHelper.floor(this.locX), MathHelper.floor(this.getBoundingBox().b) - 1, MathHelper.floor(this.locZ))).getBlock().frictionFactor * 0.91F;
+ }
+
+ this.move(this.motX, this.motY, this.motZ);
+ this.motX *= (double) f2;
+ this.motY *= (double) f2;
+ this.motZ *= (double) f2;
+ }
+
+ this.aA = this.aB;
+ double d0 = this.locX - this.lastX;
+ double d1 = this.locZ - this.lastZ;
+ float f4 = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F;
+
+ if (f4 > 1.0F) {
+ f4 = 1.0F;
+ }
+
+ this.aB += (f4 - this.aB) * 0.4F;
+ this.aC += this.aB;
+ }
+
+ public boolean k_() {
+ return false;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityGhast.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityGiantZombie.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGiantZombie.java
new file mode 100644
index 0000000..558b3a6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGiantZombie.java
@@ -0,0 +1,24 @@
+package net.minecraft.server;
+
+public class EntityGiantZombie extends EntityMonster {
+
+ public EntityGiantZombie(World world) {
+ super(world);
+ this.setSize(this.width * 6.0F, this.length * 6.0F);
+ }
+
+ public float getHeadHeight() {
+ return 10.440001F;
+ }
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.maxHealth).setValue(100.0D);
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.5D);
+ this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(50.0D);
+ }
+
+ public float a(BlockPosition blockposition) {
+ return this.world.o(blockposition) - 0.5F;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityGolem.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGolem.java
new file mode 100644
index 0000000..7952295
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGolem.java
@@ -0,0 +1,30 @@
+package net.minecraft.server;
+
+public abstract class EntityGolem extends EntityCreature implements IAnimal {
+
+ public EntityGolem(World world) {
+ super(world);
+ }
+
+ public void e(float f, float f1) {}
+
+ protected String z() {
+ return "none";
+ }
+
+ protected String bo() {
+ return "none";
+ }
+
+ protected String bp() {
+ return "none";
+ }
+
+ public int w() {
+ return 120;
+ }
+
+ protected boolean isTypeNotPersistent() {
+ return false;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityGuardian.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGuardian.java
new file mode 100644
index 0000000..4dfe5a6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityGuardian.java
@@ -0,0 +1,523 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import java.util.Iterator;
+import java.util.List;
+
+public class EntityGuardian extends EntityMonster {
+
+ private float a;
+ private float b;
+ private float c;
+ private float bm;
+ private float bn;
+ private EntityLiving bo;
+ private int bp;
+ private boolean bq;
+ public PathfinderGoalRandomStroll goalRandomStroll;
+
+ public EntityGuardian(World world) {
+ super(world);
+ this.b_ = 10;
+ this.setSize(0.85F, 0.85F);
+ this.goalSelector.a(4, new EntityGuardian.PathfinderGoalGuardianAttack(this));
+ PathfinderGoalMoveTowardsRestriction pathfindergoalmovetowardsrestriction;
+
+ this.goalSelector.a(5, pathfindergoalmovetowardsrestriction = new PathfinderGoalMoveTowardsRestriction(this, 1.0D));
+ this.goalSelector.a(7, this.goalRandomStroll = new PathfinderGoalRandomStroll(this, 1.0D, 80));
+ this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
+ this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityGuardian.class, 12.0F, 0.01F));
+ this.goalSelector.a(9, new PathfinderGoalRandomLookaround(this));
+ this.goalRandomStroll.a(3);
+ pathfindergoalmovetowardsrestriction.a(3);
+ this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget(this, EntityLiving.class, 10, true, false, new EntityGuardian.EntitySelectorGuardianTargetHumanSquid(this)));
+ this.moveController = new EntityGuardian.ControllerMoveGuardian(this);
+ this.b = this.a = this.random.nextFloat();
+ }
+
+ public void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(6.0D);
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.5D);
+ this.getAttributeInstance(GenericAttributes.FOLLOW_RANGE).setValue(16.0D);
+ this.getAttributeInstance(GenericAttributes.maxHealth).setValue(30.0D);
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ this.setElder(nbttagcompound.getBoolean("Elder"));
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ nbttagcompound.setBoolean("Elder", this.isElder());
+ }
+
+ protected NavigationAbstract b(World world) {
+ return new NavigationGuardian(this, world);
+ }
+
+ protected void h() {
+ super.h();
+ this.datawatcher.a(16, Integer.valueOf(0));
+ this.datawatcher.a(17, Integer.valueOf(0));
+ }
+
+ private boolean a(int i) {
+ return (this.datawatcher.getInt(16) & i) != 0;
+ }
+
+ private void a(int i, boolean flag) {
+ int j = this.datawatcher.getInt(16);
+
+ if (flag) {
+ this.datawatcher.watch(16, Integer.valueOf(j | i));
+ } else {
+ this.datawatcher.watch(16, Integer.valueOf(j & ~i));
+ }
+
+ }
+
+ public boolean n() {
+ return this.a(2);
+ }
+
+ private void l(boolean flag) {
+ this.a(2, flag);
+ }
+
+ public int cm() {
+ return this.isElder() ? 60 : 80;
+ }
+
+ public boolean isElder() {
+ return this.a(4);
+ }
+
+ public void setElder(boolean flag) {
+ this.a(4, flag);
+ if (flag) {
+ this.setSize(1.9975F, 1.9975F);
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.30000001192092896D);
+ this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(8.0D);
+ this.getAttributeInstance(GenericAttributes.maxHealth).setValue(80.0D);
+ this.bX();
+ this.goalRandomStroll.setTimeBetweenMovement(400);
+ }
+
+ }
+
+ private void b(int i) {
+ this.datawatcher.watch(17, Integer.valueOf(i));
+ }
+
+ public boolean cp() {
+ return this.datawatcher.getInt(17) != 0;
+ }
+
+ public EntityLiving cq() {
+ if (!this.cp()) {
+ return null;
+ } else if (this.world.isClientSide) {
+ if (this.bo != null) {
+ return this.bo;
+ } else {
+ Entity entity = this.world.a(this.datawatcher.getInt(17));
+
+ if (entity instanceof EntityLiving) {
+ this.bo = (EntityLiving) entity;
+ return this.bo;
+ } else {
+ return null;
+ }
+ }
+ } else {
+ return this.getGoalTarget();
+ }
+ }
+
+ public void i(int i) {
+ super.i(i);
+ if (i == 16) {
+ if (this.isElder() && this.width < 1.0F) {
+ this.setSize(1.9975F, 1.9975F);
+ }
+ } else if (i == 17) {
+ this.bp = 0;
+ this.bo = null;
+ }
+
+ }
+
+ public int w() {
+ return 160;
+ }
+
+ protected String z() {
+ return !this.V() ? "mob.guardian.land.idle" : (this.isElder() ? "mob.guardian.elder.idle" : "mob.guardian.idle");
+ }
+
+ protected String bo() {
+ return !this.V() ? "mob.guardian.land.hit" : (this.isElder() ? "mob.guardian.elder.hit" : "mob.guardian.hit");
+ }
+
+ protected String bp() {
+ return !this.V() ? "mob.guardian.land.death" : (this.isElder() ? "mob.guardian.elder.death" : "mob.guardian.death");
+ }
+
+ protected boolean s_() {
+ return false;
+ }
+
+ public float getHeadHeight() {
+ return this.length * 0.5F;
+ }
+
+ public float a(BlockPosition blockposition) {
+ return this.world.getType(blockposition).getBlock().getMaterial() == Material.WATER ? 10.0F + this.world.o(blockposition) - 0.5F : super.a(blockposition);
+ }
+
+ public void m() {
+ if (this.world.isClientSide) {
+ this.b = this.a;
+ if (!this.V()) {
+ this.c = 2.0F;
+ if (this.motY > 0.0D && this.bq && !this.R()) {
+ this.world.a(this.locX, this.locY, this.locZ, "mob.guardian.flop", 1.0F, 1.0F, false);
+ }
+
+ this.bq = this.motY < 0.0D && this.world.d((new BlockPosition(this)).down(), false);
+ } else if (this.n()) {
+ if (this.c < 0.5F) {
+ this.c = 4.0F;
+ } else {
+ this.c += (0.5F - this.c) * 0.1F;
+ }
+ } else {
+ this.c += (0.125F - this.c) * 0.2F;
+ }
+
+ this.a += this.c;
+ this.bn = this.bm;
+ if (!this.V()) {
+ this.bm = this.random.nextFloat();
+ } else if (this.n()) {
+ this.bm += (0.0F - this.bm) * 0.25F;
+ } else {
+ this.bm += (1.0F - this.bm) * 0.06F;
+ }
+
+ if (this.n() && this.V()) {
+ Vec3D vec3d = this.d(0.0F);
+
+ for (int i = 0; i < 2; ++i) {
+ this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width - vec3d.a * 1.5D, this.locY + this.random.nextDouble() * (double) this.length - vec3d.b * 1.5D, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width - vec3d.c * 1.5D, 0.0D, 0.0D, 0.0D, new int[0]);
+ }
+ }
+
+ if (this.cp()) {
+ if (this.bp < this.cm()) {
+ ++this.bp;
+ }
+
+ EntityLiving entityliving = this.cq();
+
+ if (entityliving != null) {
+ this.getControllerLook().a(entityliving, 90.0F, 90.0F);
+ this.getControllerLook().a();
+ double d0 = (double) this.q(0.0F);
+ double d1 = entityliving.locX - this.locX;
+ double d2 = entityliving.locY + (double) (entityliving.length * 0.5F) - (this.locY + (double) this.getHeadHeight());
+ double d3 = entityliving.locZ - this.locZ;
+ double d4 = Math.sqrt(d1 * d1 + d2 * d2 + d3 * d3);
+
+ d1 /= d4;
+ d2 /= d4;
+ d3 /= d4;
+ double d5 = this.random.nextDouble();
+
+ while (d5 < d4) {
+ d5 += 1.8D - d0 + this.random.nextDouble() * (1.7D - d0);
+ this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + d1 * d5, this.locY + d2 * d5 + (double) this.getHeadHeight(), this.locZ + d3 * d5, 0.0D, 0.0D, 0.0D, new int[0]);
+ }
+ }
+ }
+ }
+
+ if (this.inWater) {
+ this.setAirTicks(300);
+ } else if (this.onGround) {
+ this.motY += 0.5D;
+ this.motX += (double) ((this.random.nextFloat() * 2.0F - 1.0F) * 0.4F);
+ this.motZ += (double) ((this.random.nextFloat() * 2.0F - 1.0F) * 0.4F);
+ this.yaw = this.random.nextFloat() * 360.0F;
+ this.onGround = false;
+ this.ai = true;
+ }
+
+ if (this.cp()) {
+ this.yaw = this.aK;
+ }
+
+ super.m();
+ }
+
+ public float q(float f) {
+ return ((float) this.bp + f) / (float) this.cm();
+ }
+
+ protected void E() {
+ super.E();
+ if (this.isElder()) {
+ boolean flag = true;
+ boolean flag1 = true;
+ boolean flag2 = true;
+ boolean flag3 = true;
+
+ if ((this.ticksLived + this.getId()) % 1200 == 0) {
+ MobEffectList mobeffectlist = MobEffectList.SLOWER_DIG;
+ List list = this.world.b(EntityPlayer.class, new Predicate() {
+ public boolean a(EntityPlayer entityplayer) {
+ return EntityGuardian.this.h(entityplayer) < 2500.0D && entityplayer.playerInteractManager.c();
+ }
+
+ public boolean apply(Object object) {
+ return this.a((EntityPlayer) object);
+ }
+ });
+ Iterator iterator = list.iterator();
+
+ while (iterator.hasNext()) {
+ EntityPlayer entityplayer = (EntityPlayer) iterator.next();
+
+ if (!entityplayer.hasEffect(mobeffectlist) || entityplayer.getEffect(mobeffectlist).getAmplifier() < 2 || entityplayer.getEffect(mobeffectlist).getDuration() < 1200) {
+ entityplayer.playerConnection.sendPacket(new PacketPlayOutGameStateChange(10, 0.0F));
+ entityplayer.addEffect(new MobEffect(mobeffectlist.id, 6000, 2));
+ }
+ }
+ }
+
+ if (!this.ck()) {
+ this.a(new BlockPosition(this), 16);
+ }
+ }
+
+ }
+
+ protected void dropDeathLoot(boolean flag, int i) {
+ int j = this.random.nextInt(3) + this.random.nextInt(i + 1);
+
+ if (j > 0) {
+ this.a(new ItemStack(Items.PRISMARINE_SHARD, j, 0), 1.0F);
+ }
+
+ if (this.random.nextInt(3 + i) > 1) {
+ this.a(new ItemStack(Items.FISH, 1, ItemFish.EnumFish.COD.a()), 1.0F);
+ } else if (this.random.nextInt(3 + i) > 1) {
+ this.a(new ItemStack(Items.PRISMARINE_CRYSTALS, 1, 0), 1.0F);
+ }
+
+ if (flag && this.isElder()) {
+ this.a(new ItemStack(Blocks.SPONGE, 1, 1), 1.0F);
+ }
+
+ }
+
+ protected void getRareDrop() {
+ ItemStack itemstack = ((PossibleFishingResult) WeightedRandom.a(this.random, EntityFishingHook.j())).a(this.random);
+
+ this.a(itemstack, 1.0F);
+ }
+
+ protected boolean n_() {
+ return true;
+ }
+
+ public boolean canSpawn() {
+ return this.world.a(this.getBoundingBox(), (Entity) this) && this.world.getCubes(this, this.getBoundingBox()).isEmpty();
+ }
+
+ public boolean bR() {
+ return (this.random.nextInt(20) == 0 || !this.world.j(new BlockPosition(this))) && super.bR();
+ }
+
+ public boolean damageEntity(DamageSource damagesource, float f) {
+ if (!this.n() && !damagesource.isMagic() && damagesource.i() instanceof EntityLiving) {
+ EntityLiving entityliving = (EntityLiving) damagesource.i();
+
+ if (!damagesource.isExplosion()) {
+ entityliving.damageEntity(DamageSource.a(this), 2.0F);
+ entityliving.makeSound("damage.thorns", 0.5F, 1.0F);
+ }
+ }
+
+ this.goalRandomStroll.f();
+ return super.damageEntity(damagesource, f);
+ }
+
+ public int bQ() {
+ return 180;
+ }
+
+ public void g(float f, float f1) {
+ if (this.bM()) {
+ if (this.V()) {
+ this.a(f, f1, 0.1F);
+ this.move(this.motX, this.motY, this.motZ);
+ this.motX *= 0.8999999761581421D;
+ this.motY *= 0.8999999761581421D;
+ this.motZ *= 0.8999999761581421D;
+ if (!this.n() && this.getGoalTarget() == null) {
+ this.motY -= 0.005D;
+ }
+ } else {
+ super.g(f, f1);
+ }
+ } else {
+ super.g(f, f1);
+ }
+
+ }
+
+ static class ControllerMoveGuardian extends ControllerMove {
+
+ private EntityGuardian g;
+
+ public ControllerMoveGuardian(EntityGuardian entityguardian) {
+ super(entityguardian);
+ this.g = entityguardian;
+ }
+
+ public void c() {
+ if (this.f && !this.g.getNavigation().m()) {
+ double d0 = this.b - this.g.locX;
+ double d1 = this.c - this.g.locY;
+ double d2 = this.d - this.g.locZ;
+ double d3 = d0 * d0 + d1 * d1 + d2 * d2;
+
+ d3 = (double) MathHelper.sqrt(d3);
+ d1 /= d3;
+ float f = (float) (MathHelper.b(d2, d0) * 180.0D / 3.1415927410125732D) - 90.0F;
+
+ this.g.yaw = this.a(this.g.yaw, f, 30.0F);
+ this.g.aI = this.g.yaw;
+ float f1 = (float) (this.e * this.g.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue());
+
+ this.g.k(this.g.bI() + (f1 - this.g.bI()) * 0.125F);
+ double d4 = Math.sin((double) (this.g.ticksLived + this.g.getId()) * 0.5D) * 0.05D;
+ double d5 = Math.cos((double) (this.g.yaw * 3.1415927F / 180.0F));
+ double d6 = Math.sin((double) (this.g.yaw * 3.1415927F / 180.0F));
+
+ this.g.motX += d4 * d5;
+ this.g.motZ += d4 * d6;
+ d4 = Math.sin((double) (this.g.ticksLived + this.g.getId()) * 0.75D) * 0.05D;
+ this.g.motY += d4 * (d6 + d5) * 0.25D;
+ this.g.motY += (double) this.g.bI() * d1 * 0.1D;
+ ControllerLook controllerlook = this.g.getControllerLook();
+ double d7 = this.g.locX + d0 / d3 * 2.0D;
+ double d8 = (double) this.g.getHeadHeight() + this.g.locY + d1 / d3 * 1.0D;
+ double d9 = this.g.locZ + d2 / d3 * 2.0D;
+ double d10 = controllerlook.e();
+ double d11 = controllerlook.f();
+ double d12 = controllerlook.g();
+
+ if (!controllerlook.b()) {
+ d10 = d7;
+ d11 = d8;
+ d12 = d9;
+ }
+
+ this.g.getControllerLook().a(d10 + (d7 - d10) * 0.125D, d11 + (d8 - d11) * 0.125D, d12 + (d9 - d12) * 0.125D, 10.0F, 40.0F);
+ this.g.l(true);
+ } else {
+ this.g.k(0.0F);
+ this.g.l(false);
+ }
+ }
+ }
+
+ static class PathfinderGoalGuardianAttack extends PathfinderGoal {
+
+ private EntityGuardian a;
+ private int b;
+
+ public PathfinderGoalGuardianAttack(EntityGuardian entityguardian) {
+ this.a = entityguardian;
+ this.a(3);
+ }
+
+ public boolean a() {
+ EntityLiving entityliving = this.a.getGoalTarget();
+
+ return entityliving != null && entityliving.isAlive();
+ }
+
+ public boolean b() {
+ return super.b() && (this.a.isElder() || this.a.h(this.a.getGoalTarget()) > 9.0D);
+ }
+
+ public void c() {
+ this.b = -10;
+ this.a.getNavigation().n();
+ this.a.getControllerLook().a(this.a.getGoalTarget(), 90.0F, 90.0F);
+ this.a.ai = true;
+ }
+
+ public void d() {
+ this.a.b(0);
+ this.a.setGoalTarget((EntityLiving) null);
+ this.a.goalRandomStroll.f();
+ }
+
+ public void e() {
+ EntityLiving entityliving = this.a.getGoalTarget();
+
+ this.a.getNavigation().n();
+ this.a.getControllerLook().a(entityliving, 90.0F, 90.0F);
+ if (!this.a.hasLineOfSight(entityliving)) {
+ this.a.setGoalTarget((EntityLiving) null);
+ } else {
+ ++this.b;
+ if (this.b == 0) {
+ this.a.b(this.a.getGoalTarget().getId());
+ this.a.world.broadcastEntityEffect(this.a, (byte) 21);
+ } else if (this.b >= this.a.cm()) {
+ float f = 1.0F;
+
+ if (this.a.world.getDifficulty() == EnumDifficulty.HARD) {
+ f += 2.0F;
+ }
+
+ if (this.a.isElder()) {
+ f += 2.0F;
+ }
+
+ entityliving.damageEntity(DamageSource.b(this.a, this.a), f);
+ entityliving.damageEntity(DamageSource.mobAttack(this.a), (float) this.a.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).getValue());
+ this.a.setGoalTarget((EntityLiving) null);
+ } else if (this.b >= 60 && this.b % 20 == 0) {
+ ;
+ }
+
+ super.e();
+ }
+ }
+ }
+
+ static class EntitySelectorGuardianTargetHumanSquid implements Predicate {
+
+ private EntityGuardian a;
+
+ public EntitySelectorGuardianTargetHumanSquid(EntityGuardian entityguardian) {
+ this.a = entityguardian;
+ }
+
+ public boolean a(EntityLiving entityliving) {
+ return (entityliving instanceof EntityHuman || entityliving instanceof EntitySquid) && entityliving.h(this.a) > 9.0D;
+ }
+
+ public boolean apply(EntityLiving object) {
+ return this.a(object);
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityHanging.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityHorse.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityHuman.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityInsentient.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityIronGolem.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityItem.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityItemFrame.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLargeFireball.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLeash.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLightning.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMagmaCube.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMagmaCube.java
new file mode 100644
index 0000000..4647895
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMagmaCube.java
@@ -0,0 +1,99 @@
+package net.minecraft.server;
+
+public class EntityMagmaCube extends EntitySlime {
+
+ public EntityMagmaCube(World world) {
+ super(world);
+ this.fireProof = true;
+ }
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.20000000298023224D);
+ }
+
+ public boolean bR() {
+ return this.world.getDifficulty() != EnumDifficulty.PEACEFUL;
+ }
+
+ public boolean canSpawn() {
+ return this.world.a(this.getBoundingBox(), (Entity) this) && this.world.getCubes(this, this.getBoundingBox()).isEmpty() && !this.world.containsLiquid(this.getBoundingBox());
+ }
+
+ public int br() {
+ return this.getSize() * 3;
+ }
+
+ public float c(float f) {
+ return 1.0F;
+ }
+
+ protected EnumParticle n() {
+ return EnumParticle.FLAME;
+ }
+
+ protected EntitySlime cf() {
+ return new EntityMagmaCube(this.world);
+ }
+
+ protected Item getLoot() {
+ return Items.MAGMA_CREAM;
+ }
+
+ protected void dropDeathLoot(boolean flag, int i) {
+ Item item = this.getLoot();
+
+ if (item != null && this.getSize() > 1) {
+ int j = this.random.nextInt(4) - 2;
+
+ if (i > 0) {
+ j += this.random.nextInt(i + 1);
+ }
+
+ for (int k = 0; k < j; ++k) {
+ this.a(item, 1);
+ }
+ }
+
+ }
+
+ public boolean isBurning() {
+ return false;
+ }
+
+ protected int cg() {
+ return super.cg() * 4;
+ }
+
+ protected void ch() {
+ this.a *= 0.9F;
+ }
+
+ protected void bF() {
+ this.motY = (double) (0.42F + (float) this.getSize() * 0.1F);
+ this.ai = true;
+ }
+
+ protected void bH() {
+ this.motY = (double) (0.22F + (float) this.getSize() * 0.05F);
+ this.ai = true;
+ }
+
+ public void e(float f, float f1) {}
+
+ protected boolean ci() {
+ return true;
+ }
+
+ protected int cj() {
+ return super.cj() + 2;
+ }
+
+ protected String ck() {
+ return this.getSize() > 1 ? "mob.magmacube.big" : "mob.magmacube.small";
+ }
+
+ protected boolean cl() {
+ return true;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartChest.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartChest.java
new file mode 100644
index 0000000..dcee0df
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartChest.java
@@ -0,0 +1,44 @@
+package net.minecraft.server;
+
+public class EntityMinecartChest extends EntityMinecartContainer {
+
+ public EntityMinecartChest(World world) {
+ super(world);
+ }
+
+ public EntityMinecartChest(World world, double d0, double d1, double d2) {
+ super(world, d0, d1, d2);
+ }
+
+ public void a(DamageSource damagesource) {
+ super.a(damagesource);
+ if (this.world.getGameRules().getBoolean("doEntityDrops")) {
+ this.a(Item.getItemOf(Blocks.CHEST), 1, 0.0F);
+ }
+
+ }
+
+ public int getSize() {
+ return 27;
+ }
+
+ public EntityMinecartAbstract.EnumMinecartType s() {
+ return EntityMinecartAbstract.EnumMinecartType.CHEST;
+ }
+
+ public IBlockData u() {
+ return Blocks.CHEST.getBlockData().set(BlockChest.FACING, EnumDirection.NORTH);
+ }
+
+ public int w() {
+ return 8;
+ }
+
+ public String getContainerName() {
+ return "minecraft:chest";
+ }
+
+ public Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman) {
+ return new ContainerChest(playerinventory, this, entityhuman);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartCommandBlock.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartContainer.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartFurnace.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartHopper.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartHopper.java
new file mode 100644
index 0000000..eefbdc6
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartHopper.java
@@ -0,0 +1,147 @@
+package net.minecraft.server;
+
+import java.util.List;
+
+public class EntityMinecartHopper extends EntityMinecartContainer implements IHopper {
+
+ private boolean a = true;
+ private int b = -1;
+ private BlockPosition c;
+
+ public EntityMinecartHopper(World world) {
+ super(world);
+ this.c = BlockPosition.ZERO;
+ }
+
+ public EntityMinecartHopper(World world, double d0, double d1, double d2) {
+ super(world, d0, d1, d2);
+ this.c = BlockPosition.ZERO;
+ }
+
+ public EntityMinecartAbstract.EnumMinecartType s() {
+ return EntityMinecartAbstract.EnumMinecartType.HOPPER;
+ }
+
+ public IBlockData u() {
+ return Blocks.HOPPER.getBlockData();
+ }
+
+ public int w() {
+ return 1;
+ }
+
+ public int getSize() {
+ return 5;
+ }
+
+ public boolean e(EntityHuman entityhuman) {
+ if (!this.world.isClientSide) {
+ entityhuman.openContainer(this);
+ }
+
+ return true;
+ }
+
+ public void a(int i, int j, int k, boolean flag) {
+ boolean flag1 = !flag;
+
+ if (flag1 != this.y()) {
+ this.i(flag1);
+ }
+
+ }
+
+ public boolean y() {
+ return this.a;
+ }
+
+ public void i(boolean flag) {
+ this.a = flag;
+ }
+
+ public World getWorld() {
+ return this.world;
+ }
+
+ public double A() {
+ return this.locX;
+ }
+
+ public double B() {
+ return this.locY + 0.5D;
+ }
+
+ public double C() {
+ return this.locZ;
+ }
+
+ public void t_() {
+ super.t_();
+ if (!this.world.isClientSide && this.isAlive() && this.y()) {
+ BlockPosition blockposition = new BlockPosition(this);
+
+ if (blockposition.equals(this.c)) {
+ --this.b;
+ } else {
+ this.m(0);
+ }
+
+ if (!this.E()) {
+ this.m(0);
+ if (this.D()) {
+ this.m(4);
+ this.update();
+ }
+ }
+ }
+
+ }
+
+ public boolean D() {
+ if (TileEntityHopper.a((IHopper) this)) {
+ return true;
+ } else {
+ List list = this.world.a(EntityItem.class, this.getBoundingBox().grow(0.25D, 0.0D, 0.25D), IEntitySelector.a);
+
+ if (list.size() > 0) {
+ TileEntityHopper.a((IInventory) this, (EntityItem) list.get(0));
+ }
+
+ return false;
+ }
+ }
+
+ public void a(DamageSource damagesource) {
+ super.a(damagesource);
+ if (this.world.getGameRules().getBoolean("doEntityDrops")) {
+ this.a(Item.getItemOf(Blocks.HOPPER), 1, 0.0F);
+ }
+
+ }
+
+ protected void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ nbttagcompound.setInt("TransferCooldown", this.b);
+ }
+
+ protected void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ this.b = nbttagcompound.getInt("TransferCooldown");
+ }
+
+ public void m(int i) {
+ this.b = i;
+ }
+
+ public boolean E() {
+ return this.b > 0;
+ }
+
+ public String getContainerName() {
+ return "minecraft:hopper";
+ }
+
+ public Container createContainer(PlayerInventory playerinventory, EntityHuman entityhuman) {
+ return new ContainerHopper(playerinventory, this, entityhuman);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartMobSpawner.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartMobSpawner.java
new file mode 100644
index 0000000..1a8dc6b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartMobSpawner.java
@@ -0,0 +1,49 @@
+package net.minecraft.server;
+
+public class EntityMinecartMobSpawner extends EntityMinecartAbstract {
+
+ private final MobSpawnerAbstract a = new MobSpawnerAbstract() {
+ public void a(int i) {
+ EntityMinecartMobSpawner.this.world.broadcastEntityEffect(EntityMinecartMobSpawner.this, (byte) i);
+ }
+
+ public World a() {
+ return EntityMinecartMobSpawner.this.world;
+ }
+
+ public BlockPosition b() {
+ return new BlockPosition(EntityMinecartMobSpawner.this);
+ }
+ };
+
+ public EntityMinecartMobSpawner(World world) {
+ super(world);
+ }
+
+ public EntityMinecartMobSpawner(World world, double d0, double d1, double d2) {
+ super(world, d0, d1, d2);
+ }
+
+ public EntityMinecartAbstract.EnumMinecartType s() {
+ return EntityMinecartAbstract.EnumMinecartType.SPAWNER;
+ }
+
+ public IBlockData u() {
+ return Blocks.MOB_SPAWNER.getBlockData();
+ }
+
+ protected void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ this.a.a(nbttagcompound);
+ }
+
+ protected void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ this.a.b(nbttagcompound);
+ }
+
+ public void t_() {
+ super.t_();
+ this.a.c();
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartRideable.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartRideable.java
new file mode 100644
index 0000000..bcd9f62
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartRideable.java
@@ -0,0 +1,46 @@
+package net.minecraft.server;
+
+public class EntityMinecartRideable extends EntityMinecartAbstract {
+
+ public EntityMinecartRideable(World world) {
+ super(world);
+ }
+
+ public EntityMinecartRideable(World world, double d0, double d1, double d2) {
+ super(world, d0, d1, d2);
+ }
+
+ public boolean e(EntityHuman entityhuman) {
+ if (this.passenger != null && this.passenger instanceof EntityHuman && this.passenger != entityhuman) {
+ return true;
+ } else if (this.passenger != null && this.passenger != entityhuman) {
+ return false;
+ } else {
+ if (!this.world.isClientSide) {
+ entityhuman.mount(this);
+ }
+
+ return true;
+ }
+ }
+
+ public void a(int i, int j, int k, boolean flag) {
+ if (flag) {
+ if (this.passenger != null) {
+ this.passenger.mount((Entity) null);
+ }
+
+ if (this.getType() == 0) {
+ this.k(-this.r());
+ this.j(10);
+ this.setDamage(50.0F);
+ this.ac();
+ }
+ }
+
+ }
+
+ public EntityMinecartAbstract.EnumMinecartType s() {
+ return EntityMinecartAbstract.EnumMinecartType.RIDEABLE;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartTNT.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartTNT.java
new file mode 100644
index 0000000..98d3217
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMinecartTNT.java
@@ -0,0 +1,136 @@
+package net.minecraft.server;
+
+public class EntityMinecartTNT extends EntityMinecartAbstract {
+
+ private int a = -1;
+
+ public EntityMinecartTNT(World world) {
+ super(world);
+ }
+
+ public EntityMinecartTNT(World world, double d0, double d1, double d2) {
+ super(world, d0, d1, d2);
+ }
+
+ public EntityMinecartAbstract.EnumMinecartType s() {
+ return EntityMinecartAbstract.EnumMinecartType.TNT;
+ }
+
+ public IBlockData u() {
+ return Blocks.TNT.getBlockData();
+ }
+
+ public void t_() {
+ super.t_();
+ if (this.a > 0) {
+ --this.a;
+ this.world.addParticle(EnumParticle.SMOKE_NORMAL, this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D, new int[0]);
+ } else if (this.a == 0) {
+ this.b(this.motX * this.motX + this.motZ * this.motZ);
+ }
+
+ if (this.positionChanged) {
+ double d0 = this.motX * this.motX + this.motZ * this.motZ;
+
+ if (d0 >= 0.009999999776482582D) {
+ this.b(d0);
+ }
+ }
+
+ }
+
+ public boolean damageEntity(DamageSource damagesource, float f) {
+ Entity entity = damagesource.i();
+
+ if (entity instanceof EntityArrow) {
+ EntityArrow entityarrow = (EntityArrow) entity;
+
+ if (entityarrow.isBurning()) {
+ this.b(entityarrow.motX * entityarrow.motX + entityarrow.motY * entityarrow.motY + entityarrow.motZ * entityarrow.motZ);
+ }
+ }
+
+ return super.damageEntity(damagesource, f);
+ }
+
+ public void a(DamageSource damagesource) {
+ super.a(damagesource);
+ double d0 = this.motX * this.motX + this.motZ * this.motZ;
+
+ if (!damagesource.isExplosion() && this.world.getGameRules().getBoolean("doEntityDrops")) {
+ this.a(new ItemStack(Blocks.TNT, 1), 0.0F);
+ }
+
+ if (damagesource.o() || damagesource.isExplosion() || d0 >= 0.009999999776482582D) {
+ this.b(d0);
+ }
+
+ }
+
+ protected void b(double d0) {
+ if (!this.world.isClientSide) {
+ double d1 = Math.sqrt(d0);
+
+ if (d1 > 5.0D) {
+ d1 = 5.0D;
+ }
+
+ this.world.explode(this, this.locX, this.locY, this.locZ, (float) (4.0D + this.random.nextDouble() * 1.5D * d1), true);
+ this.die();
+ }
+
+ }
+
+ public void e(float f, float f1) {
+ if (f >= 3.0F) {
+ float f2 = f / 10.0F;
+
+ this.b((double) (f2 * f2));
+ }
+
+ super.e(f, f1);
+ }
+
+ public void a(int i, int j, int k, boolean flag) {
+ if (flag && this.a < 0) {
+ this.j();
+ }
+
+ }
+
+ public void j() {
+ this.a = 80;
+ if (!this.world.isClientSide) {
+ this.world.broadcastEntityEffect(this, (byte) 10);
+ if (!this.R()) {
+ this.world.makeSound(this, "game.tnt.primed", 1.0F, 1.0F);
+ }
+ }
+
+ }
+
+ public boolean y() {
+ return this.a > -1;
+ }
+
+ public float a(Explosion explosion, World world, BlockPosition blockposition, IBlockData iblockdata) {
+ return this.y() && (BlockMinecartTrackAbstract.d(iblockdata) || BlockMinecartTrackAbstract.e(world, blockposition.up())) ? 0.0F : super.a(explosion, world, blockposition, iblockdata);
+ }
+
+ public boolean a(Explosion explosion, World world, BlockPosition blockposition, IBlockData iblockdata, float f) {
+ return this.y() && (BlockMinecartTrackAbstract.d(iblockdata) || BlockMinecartTrackAbstract.e(world, blockposition.up())) ? false : super.a(explosion, world, blockposition, iblockdata, f);
+ }
+
+ protected void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ if (nbttagcompound.hasKeyOfType("TNTFuse", 99)) {
+ this.a = nbttagcompound.getInt("TNTFuse");
+ }
+
+ }
+
+ protected void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ nbttagcompound.setInt("TNTFuse", this.a);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMonster.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityMushroomCow.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityOcelot.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityOwnable.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityOwnable.java
new file mode 100644
index 0000000..c5d6620
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityOwnable.java
@@ -0,0 +1,8 @@
+package net.minecraft.server;
+
+public interface EntityOwnable {
+
+ String getOwnerUUID();
+
+ Entity getOwner();
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPainting.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPig.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityPigZombie.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPigZombie.java
new file mode 100644
index 0000000..10f363a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPigZombie.java
@@ -0,0 +1,206 @@
+package net.minecraft.server;
+
+import java.util.UUID;
+
+public class EntityPigZombie extends EntityZombie {
+
+ private static final UUID b = UUID.fromString("49455A49-7EC5-45BA-B886-3B90B23A1718");
+ private static final AttributeModifier c = (new AttributeModifier(EntityPigZombie.b, "Attacking speed boost", 0.05D, 0)).a(false);
+ public int angerLevel;
+ private int soundDelay;
+ private UUID hurtBy;
+
+ public EntityPigZombie(World world) {
+ super(world);
+ this.fireProof = true;
+ }
+
+ public void b(EntityLiving entityliving) {
+ super.b(entityliving);
+ if (entityliving != null) {
+ this.hurtBy = entityliving.getUniqueID();
+ }
+
+ }
+
+ protected void n() {
+ this.targetSelector.a(1, new EntityPigZombie.PathfinderGoalAngerOther(this));
+ this.targetSelector.a(2, new EntityPigZombie.PathfinderGoalAnger(this));
+ }
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(EntityPigZombie.a).setValue(0.0D);
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.23000000417232513D);
+ this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(5.0D);
+ }
+
+ public void t_() {
+ super.t_();
+ }
+
+ protected void E() {
+ AttributeInstance attributeinstance = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED);
+
+ if (this.cm()) {
+ if (!this.isBaby() && !attributeinstance.a(EntityPigZombie.c)) {
+ attributeinstance.b(EntityPigZombie.c);
+ }
+
+ --this.angerLevel;
+ } else if (attributeinstance.a(EntityPigZombie.c)) {
+ attributeinstance.c(EntityPigZombie.c);
+ }
+
+ if (this.soundDelay > 0 && --this.soundDelay == 0) {
+ this.makeSound("mob.zombiepig.zpigangry", this.bB() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F);
+ }
+
+ if (this.angerLevel > 0 && this.hurtBy != null && this.getLastDamager() == null) {
+ EntityHuman entityhuman = this.world.b(this.hurtBy);
+
+ this.b((EntityLiving) entityhuman);
+ this.killer = entityhuman;
+ this.lastDamageByPlayerTime = this.be();
+ }
+
+ super.E();
+ }
+
+ public boolean bR() {
+ return this.world.getDifficulty() != EnumDifficulty.PEACEFUL;
+ }
+
+ public boolean canSpawn() {
+ return this.world.a(this.getBoundingBox(), (Entity) this) && this.world.getCubes(this, this.getBoundingBox()).isEmpty() && !this.world.containsLiquid(this.getBoundingBox());
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ nbttagcompound.setShort("Anger", (short) this.angerLevel);
+ if (this.hurtBy != null) {
+ nbttagcompound.setString("HurtBy", this.hurtBy.toString());
+ } else {
+ nbttagcompound.setString("HurtBy", "");
+ }
+
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ this.angerLevel = nbttagcompound.getShort("Anger");
+ String s = nbttagcompound.getString("HurtBy");
+
+ if (s.length() > 0) {
+ this.hurtBy = UUID.fromString(s);
+ EntityHuman entityhuman = this.world.b(this.hurtBy);
+
+ this.b((EntityLiving) entityhuman);
+ if (entityhuman != null) {
+ this.killer = entityhuman;
+ this.lastDamageByPlayerTime = this.be();
+ }
+ }
+
+ }
+
+ public boolean damageEntity(DamageSource damagesource, float f) {
+ if (this.isInvulnerable(damagesource)) {
+ return false;
+ } else {
+ Entity entity = damagesource.getEntity();
+
+ if (entity instanceof EntityHuman) {
+ this.b(entity);
+ }
+
+ return super.damageEntity(damagesource, f);
+ }
+ }
+
+ private void b(Entity entity) {
+ this.angerLevel = 400 + this.random.nextInt(400);
+ this.soundDelay = this.random.nextInt(40);
+ if (entity instanceof EntityLiving) {
+ this.b((EntityLiving) entity);
+ }
+
+ }
+
+ public boolean cm() {
+ return this.angerLevel > 0;
+ }
+
+ protected String z() {
+ return "mob.zombiepig.zpig";
+ }
+
+ protected String bo() {
+ return "mob.zombiepig.zpighurt";
+ }
+
+ protected String bp() {
+ return "mob.zombiepig.zpigdeath";
+ }
+
+ protected void dropDeathLoot(boolean flag, int i) {
+ int j = this.random.nextInt(2 + i);
+
+ int k;
+
+ for (k = 0; k < j; ++k) {
+ this.a(Items.ROTTEN_FLESH, 1);
+ }
+
+ j = this.random.nextInt(2 + i);
+
+ for (k = 0; k < j; ++k) {
+ this.a(Items.GOLD_NUGGET, 1);
+ }
+
+ }
+
+ public boolean a(EntityHuman entityhuman) {
+ return false;
+ }
+
+ protected void getRareDrop() {
+ this.a(Items.GOLD_INGOT, 1);
+ }
+
+ protected void a(DifficultyDamageScaler difficultydamagescaler) {
+ this.setEquipment(0, new ItemStack(Items.GOLDEN_SWORD));
+ }
+
+ public GroupDataEntity prepare(DifficultyDamageScaler difficultydamagescaler, GroupDataEntity groupdataentity) {
+ super.prepare(difficultydamagescaler, groupdataentity);
+ this.setVillager(false);
+ return groupdataentity;
+ }
+
+ static class PathfinderGoalAnger extends PathfinderGoalNearestAttackableTarget {
+
+ public PathfinderGoalAnger(EntityPigZombie entitypigzombie) {
+ super(entitypigzombie, EntityHuman.class, true);
+ }
+
+ public boolean a() {
+ return ((EntityPigZombie) this.e).cm() && super.a();
+ }
+ }
+
+ static class PathfinderGoalAngerOther extends PathfinderGoalHurtByTarget {
+
+ public PathfinderGoalAngerOther(EntityPigZombie entitypigzombie) {
+ super(entitypigzombie, true, new Class[0]);
+ }
+
+ protected void a(EntityCreature entitycreature, EntityLiving entityliving) {
+ super.a(entitycreature, entityliving);
+ if (entitycreature instanceof EntityPigZombie) {
+ ((EntityPigZombie) entitycreature).b((Entity) entityliving);
+ }
+
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java
similarity index 99%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java
index 2f15a6f..01f3ce4 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -218,7 +218,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
while (!this.removeQueue.isEmpty()) {
int i = Math.min(this.removeQueue.size(), Integer.MAX_VALUE);
int[] aint = new int[i];
- Iterator iterator = this.removeQueue.iterator();
+ //Iterator iterator = this.removeQueue.iterator(); // PandaSpigot
int j = 0;
// Paper start
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityPositionTypes.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPositionTypes.java
new file mode 100644
index 0000000..9dbc596
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPositionTypes.java
@@ -0,0 +1,48 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Maps;
+import java.util.HashMap;
+
+public class EntityPositionTypes {
+
+ private static final HashMap a = Maps.newHashMap();
+
+ public static EntityInsentient.EnumEntityPositionType a(Class oclass) {
+ return (EntityInsentient.EnumEntityPositionType) EntityPositionTypes.a.get(oclass);
+ }
+
+ static {
+ EntityPositionTypes.a.put(EntityBat.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityChicken.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityCow.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityHorse.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityMushroomCow.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityOcelot.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityPig.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityRabbit.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntitySheep.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntitySnowman.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntitySquid.class, EntityInsentient.EnumEntityPositionType.IN_WATER);
+ EntityPositionTypes.a.put(EntityIronGolem.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityWolf.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityVillager.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityEnderDragon.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityWither.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityBlaze.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityCaveSpider.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityCreeper.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityEnderman.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityEndermite.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityGhast.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityGiantZombie.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityGuardian.class, EntityInsentient.EnumEntityPositionType.IN_WATER);
+ EntityPositionTypes.a.put(EntityMagmaCube.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityPigZombie.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntitySilverfish.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntitySkeleton.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntitySlime.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntitySpider.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityWitch.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ EntityPositionTypes.a.put(EntityZombie.class, EntityInsentient.EnumEntityPositionType.ON_GROUND);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityPotion.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityProjectile.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityRabbit.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntitySenses.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySenses.java
new file mode 100644
index 0000000..141a1ef
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySenses.java
@@ -0,0 +1,40 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import java.util.List;
+
+public class EntitySenses {
+
+ EntityInsentient a;
+ List b = Lists.newArrayList();
+ List c = Lists.newArrayList();
+
+ public EntitySenses(EntityInsentient entityinsentient) {
+ this.a = entityinsentient;
+ }
+
+ public void a() {
+ this.b.clear();
+ this.c.clear();
+ }
+
+ public boolean a(Entity entity) {
+ if (this.b.contains(entity)) {
+ return true;
+ } else if (this.c.contains(entity)) {
+ return false;
+ } else {
+ this.a.world.methodProfiler.a("canSee");
+ boolean flag = this.a.hasLineOfSight(entity);
+
+ this.a.world.methodProfiler.b();
+ if (flag) {
+ this.b.add(entity);
+ } else {
+ this.c.add(entity);
+ }
+
+ return flag;
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySheep.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySilverfish.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySkeleton.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java
similarity index 91%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java
index cd678d9..b56b3d0 100644
--- a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySlice.java
@@ -4,11 +4,8 @@ import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import java.util.AbstractSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+
+import java.util.*;
public class EntitySlice extends AbstractSet {
@@ -106,7 +103,7 @@ public class EntitySlice extends AbstractSet {
List list = EntitySlice.this.b.get(EntitySlice.this.b(oclass));
if (list == null) {
- return Iterators.emptyIterator();
+ return Collections.emptyIterator();
} else {
Iterator iterator = list.iterator();
@@ -116,7 +113,7 @@ public class EntitySlice extends AbstractSet {
}
public Iterator iterator() {
- return this.e.isEmpty() ? Iterators.emptyIterator() : Iterators.unmodifiableIterator(this.e.iterator());
+ return this.e.isEmpty() ? Collections.emptyIterator() : Iterators.unmodifiableIterator(this.e.iterator());
}
public int size() {
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySlime.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySmallFireball.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowball.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowball.java
new file mode 100644
index 0000000..dade83b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowball.java
@@ -0,0 +1,37 @@
+package net.minecraft.server;
+
+public class EntitySnowball extends EntityProjectile {
+
+ public EntitySnowball(World world) {
+ super(world);
+ }
+
+ public EntitySnowball(World world, EntityLiving entityliving) {
+ super(world, entityliving);
+ }
+
+ public EntitySnowball(World world, double d0, double d1, double d2) {
+ super(world, d0, d1, d2);
+ }
+
+ protected void a(MovingObjectPosition movingobjectposition) {
+ if (movingobjectposition.entity != null) {
+ byte b0 = 0;
+
+ if (movingobjectposition.entity instanceof EntityBlaze) {
+ b0 = 3;
+ }
+
+ movingobjectposition.entity.damageEntity(DamageSource.projectile(this, this.getShooter()), (float) b0);
+ }
+
+ for (int i = 0; i < 8; ++i) {
+ this.world.addParticle(EnumParticle.SNOWBALL, this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D, new int[0]);
+ }
+
+ if (!this.world.isClientSide) {
+ this.die();
+ }
+
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySnowman.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySpider.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntitySquid.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityTNTPrimed.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityTameableAnimal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTameableAnimal.java
new file mode 100644
index 0000000..1cc087d
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTameableAnimal.java
@@ -0,0 +1,167 @@
+package net.minecraft.server;
+
+import java.util.UUID;
+
+public abstract class EntityTameableAnimal extends EntityAnimal implements EntityOwnable {
+
+ protected PathfinderGoalSit bm = new PathfinderGoalSit(this);
+
+ public EntityTameableAnimal(World world) {
+ super(world);
+ this.cm();
+ }
+
+ protected void h() {
+ super.h();
+ this.datawatcher.a(16, Byte.valueOf((byte) 0));
+ this.datawatcher.a(17, "");
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ if (this.getOwnerUUID() == null) {
+ nbttagcompound.setString("OwnerUUID", "");
+ } else {
+ nbttagcompound.setString("OwnerUUID", this.getOwnerUUID());
+ }
+
+ nbttagcompound.setBoolean("Sitting", this.isSitting());
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ String s = "";
+
+ if (nbttagcompound.hasKeyOfType("OwnerUUID", 8)) {
+ s = nbttagcompound.getString("OwnerUUID");
+ } else {
+ String s1 = nbttagcompound.getString("Owner");
+
+ s = NameReferencingFileConverter.a(s1);
+ }
+
+ if (s.length() > 0) {
+ this.setOwnerUUID(s);
+ this.setTamed(true);
+ }
+
+ this.bm.setSitting(nbttagcompound.getBoolean("Sitting"));
+ this.setSitting(nbttagcompound.getBoolean("Sitting"));
+ }
+
+ protected void l(boolean flag) {
+ EnumParticle enumparticle = EnumParticle.HEART;
+
+ if (!flag) {
+ enumparticle = EnumParticle.SMOKE_NORMAL;
+ }
+
+ for (int i = 0; i < 7; ++i) {
+ double d0 = this.random.nextGaussian() * 0.02D;
+ double d1 = this.random.nextGaussian() * 0.02D;
+ double d2 = this.random.nextGaussian() * 0.02D;
+
+ this.world.addParticle(enumparticle, this.locX + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width, this.locY + 0.5D + (double) (this.random.nextFloat() * this.length), this.locZ + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width, d0, d1, d2, new int[0]);
+ }
+
+ }
+
+ public boolean isTamed() {
+ return (this.datawatcher.getByte(16) & 4) != 0;
+ }
+
+ public void setTamed(boolean flag) {
+ byte b0 = this.datawatcher.getByte(16);
+
+ if (flag) {
+ this.datawatcher.watch(16, Byte.valueOf((byte) (b0 | 4)));
+ } else {
+ this.datawatcher.watch(16, Byte.valueOf((byte) (b0 & -5)));
+ }
+
+ this.cm();
+ }
+
+ protected void cm() {}
+
+ public boolean isSitting() {
+ return (this.datawatcher.getByte(16) & 1) != 0;
+ }
+
+ public void setSitting(boolean flag) {
+ byte b0 = this.datawatcher.getByte(16);
+
+ if (flag) {
+ this.datawatcher.watch(16, Byte.valueOf((byte) (b0 | 1)));
+ } else {
+ this.datawatcher.watch(16, Byte.valueOf((byte) (b0 & -2)));
+ }
+
+ }
+
+ public String getOwnerUUID() {
+ return this.datawatcher.getString(17);
+ }
+
+ public void setOwnerUUID(String s) {
+ this.datawatcher.watch(17, s);
+ }
+
+ public EntityLiving getOwner() {
+ try {
+ UUID uuid = UUID.fromString(this.getOwnerUUID());
+
+ return uuid == null ? null : this.world.b(uuid);
+ } catch (IllegalArgumentException illegalargumentexception) {
+ return null;
+ }
+ }
+
+ public boolean e(EntityLiving entityliving) {
+ return entityliving == this.getOwner();
+ }
+
+ public PathfinderGoalSit getGoalSit() {
+ return this.bm;
+ }
+
+ public boolean a(EntityLiving entityliving, EntityLiving entityliving1) {
+ return true;
+ }
+
+ public ScoreboardTeamBase getScoreboardTeam() {
+ if (this.isTamed()) {
+ EntityLiving entityliving = this.getOwner();
+
+ if (entityliving != null) {
+ return entityliving.getScoreboardTeam();
+ }
+ }
+
+ return super.getScoreboardTeam();
+ }
+
+ public boolean c(EntityLiving entityliving) {
+ if (this.isTamed()) {
+ EntityLiving entityliving1 = this.getOwner();
+
+ if (entityliving == entityliving1) {
+ return true;
+ }
+
+ if (entityliving1 != null) {
+ return entityliving1.c(entityliving);
+ }
+ }
+
+ return super.c(entityliving);
+ }
+
+ public void die(DamageSource damagesource) {
+ if (!this.world.isClientSide && this.world.getGameRules().getBoolean("showDeathMessages") && this.hasCustomName() && this.getOwner() instanceof EntityPlayer) {
+ ((EntityPlayer) this.getOwner()).sendMessage(this.bs().b());
+ }
+
+ super.die(damagesource);
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityThrownExpBottle.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityTracker.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityTrackerEntry.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityTypes.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTypes.java
new file mode 100644
index 0000000..064d0b2
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityTypes.java
@@ -0,0 +1,244 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class EntityTypes {
+
+ private static final Logger b = LogManager.getLogger();
+ private static final Map> c = Maps.newHashMap();
+ private static final Map, String> d = Maps.newHashMap();
+ private static final Map> e = Maps.newHashMap();
+ private static final Map, Integer> f = Maps.newHashMap();
+ private static final Map g = Maps.newHashMap();
+ public static final Map eggInfo = Maps.newLinkedHashMap();
+
+ private static void a(Class extends Entity> oclass, String s, int i) {
+ if (EntityTypes.c.containsKey(s)) {
+ throw new IllegalArgumentException("ID is already registered: " + s);
+ } else if (EntityTypes.e.containsKey(Integer.valueOf(i))) {
+ throw new IllegalArgumentException("ID is already registered: " + i);
+ } else if (i == 0) {
+ throw new IllegalArgumentException("Cannot register to reserved id: " + i);
+ } else if (oclass == null) {
+ throw new IllegalArgumentException("Cannot register null clazz for id: " + i);
+ } else {
+ EntityTypes.c.put(s, oclass);
+ EntityTypes.d.put(oclass, s);
+ EntityTypes.e.put(Integer.valueOf(i), oclass);
+ EntityTypes.f.put(oclass, Integer.valueOf(i));
+ EntityTypes.g.put(s, Integer.valueOf(i));
+ }
+ }
+
+ private static void a(Class extends Entity> oclass, String s, int i, int j, int k) {
+ a(oclass, s, i);
+ EntityTypes.eggInfo.put(Integer.valueOf(i), new EntityTypes.MonsterEggInfo(i, j, k));
+ }
+
+ public static Entity createEntityByName(String s, World world) {
+ Entity entity = null;
+
+ try {
+ Class oclass = (Class) EntityTypes.c.get(s);
+
+ if (oclass != null) {
+ entity = (Entity) oclass.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world});
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+
+ return entity;
+ }
+
+ public static Entity a(NBTTagCompound nbttagcompound, World world) {
+ Entity entity = null;
+
+ if ("Minecart".equals(nbttagcompound.getString("id"))) {
+ nbttagcompound.setString("id", EntityMinecartAbstract.EnumMinecartType.a(nbttagcompound.getInt("Type")).b());
+ nbttagcompound.remove("Type");
+ }
+
+ try {
+ Class oclass = (Class) EntityTypes.c.get(nbttagcompound.getString("id"));
+
+ if (oclass != null) {
+ entity = (Entity) oclass.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world});
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+
+ if (entity != null) {
+ entity.f(nbttagcompound);
+ } else {
+ EntityTypes.b.warn("Skipping Entity with id " + nbttagcompound.getString("id"));
+ }
+
+ return entity;
+ }
+
+ public static Entity a(int i, World world) {
+ Entity entity = null;
+
+ try {
+ Class oclass = a(i);
+
+ if (oclass != null) {
+ entity = (Entity) oclass.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world});
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+
+ if (entity == null) {
+ EntityTypes.b.warn("Skipping Entity with id " + i);
+ }
+
+ return entity;
+ }
+
+ public static int a(Entity entity) {
+ Integer integer = (Integer) EntityTypes.f.get(entity.getClass());
+
+ return integer == null ? 0 : integer.intValue();
+ }
+
+ public static Class extends Entity> a(int i) {
+ return (Class) EntityTypes.e.get(Integer.valueOf(i));
+ }
+
+ public static String b(Entity entity) {
+ return (String) EntityTypes.d.get(entity.getClass());
+ }
+
+ public static String b(int i) {
+ return (String) EntityTypes.d.get(a(i));
+ }
+
+ public static void a() {}
+
+ public static List b() {
+ Set set = EntityTypes.c.keySet();
+ ArrayList arraylist = Lists.newArrayList();
+ Iterator iterator = set.iterator();
+
+ while (iterator.hasNext()) {
+ String s = (String) iterator.next();
+ Class oclass = (Class) EntityTypes.c.get(s);
+
+ if ((oclass.getModifiers() & 1024) != 1024) {
+ arraylist.add(s);
+ }
+ }
+
+ arraylist.add("LightningBolt");
+ return arraylist;
+ }
+
+ public static boolean a(Entity entity, String s) {
+ String s1 = b(entity);
+
+ if (s1 == null && entity instanceof EntityHuman) {
+ s1 = "Player";
+ } else if (s1 == null && entity instanceof EntityLightning) {
+ s1 = "LightningBolt";
+ }
+
+ return s.equals(s1);
+ }
+
+ public static boolean b(String s) {
+ return "Player".equals(s) || b().contains(s);
+ }
+
+ static {
+ a(EntityItem.class, "Item", 1);
+ a(EntityExperienceOrb.class, "XPOrb", 2);
+ a(EntityEgg.class, "ThrownEgg", 7);
+ a(EntityLeash.class, "LeashKnot", 8);
+ a(EntityPainting.class, "Painting", 9);
+ a(EntityArrow.class, "Arrow", 10);
+ a(EntitySnowball.class, "Snowball", 11);
+ a(EntityLargeFireball.class, "Fireball", 12);
+ a(EntitySmallFireball.class, "SmallFireball", 13);
+ a(EntityEnderPearl.class, "ThrownEnderpearl", 14);
+ a(EntityEnderSignal.class, "EyeOfEnderSignal", 15);
+ a(EntityPotion.class, "ThrownPotion", 16);
+ a(EntityThrownExpBottle.class, "ThrownExpBottle", 17);
+ a(EntityItemFrame.class, "ItemFrame", 18);
+ a(EntityWitherSkull.class, "WitherSkull", 19);
+ a(EntityTNTPrimed.class, "PrimedTnt", 20);
+ a(EntityFallingBlock.class, "FallingSand", 21);
+ a(EntityFireworks.class, "FireworksRocketEntity", 22);
+ a(EntityArmorStand.class, "ArmorStand", 30);
+ a(EntityBoat.class, "Boat", 41);
+ a(EntityMinecartRideable.class, EntityMinecartAbstract.EnumMinecartType.RIDEABLE.b(), 42);
+ a(EntityMinecartChest.class, EntityMinecartAbstract.EnumMinecartType.CHEST.b(), 43);
+ a(EntityMinecartFurnace.class, EntityMinecartAbstract.EnumMinecartType.FURNACE.b(), 44);
+ a(EntityMinecartTNT.class, EntityMinecartAbstract.EnumMinecartType.TNT.b(), 45);
+ a(EntityMinecartHopper.class, EntityMinecartAbstract.EnumMinecartType.HOPPER.b(), 46);
+ a(EntityMinecartMobSpawner.class, EntityMinecartAbstract.EnumMinecartType.SPAWNER.b(), 47);
+ a(EntityMinecartCommandBlock.class, EntityMinecartAbstract.EnumMinecartType.COMMAND_BLOCK.b(), 40);
+ a(EntityInsentient.class, "Mob", 48);
+ a(EntityMonster.class, "Monster", 49);
+ a(EntityCreeper.class, "Creeper", 50, 894731, 0);
+ a(EntitySkeleton.class, "Skeleton", 51, 12698049, 4802889);
+ a(EntitySpider.class, "Spider", 52, 3419431, 11013646);
+ a(EntityGiantZombie.class, "Giant", 53);
+ a(EntityZombie.class, "Zombie", 54, '\uafaf', 7969893);
+ a(EntitySlime.class, "Slime", 55, 5349438, 8306542);
+ a(EntityGhast.class, "Ghast", 56, 16382457, 12369084);
+ a(EntityPigZombie.class, "PigZombie", 57, 15373203, 5009705);
+ a(EntityEnderman.class, "Enderman", 58, 1447446, 0);
+ a(EntityCaveSpider.class, "CaveSpider", 59, 803406, 11013646);
+ a(EntitySilverfish.class, "Silverfish", 60, 7237230, 3158064);
+ a(EntityBlaze.class, "Blaze", 61, 16167425, 16775294);
+ a(EntityMagmaCube.class, "LavaSlime", 62, 3407872, 16579584);
+ a(EntityEnderDragon.class, "EnderDragon", 63);
+ a(EntityWither.class, "WitherBoss", 64);
+ a(EntityBat.class, "Bat", 65, 4996656, 986895);
+ a(EntityWitch.class, "Witch", 66, 3407872, 5349438);
+ a(EntityEndermite.class, "Endermite", 67, 1447446, 7237230);
+ a(EntityGuardian.class, "Guardian", 68, 5931634, 15826224);
+ a(EntityPig.class, "Pig", 90, 15771042, 14377823);
+ a(EntitySheep.class, "Sheep", 91, 15198183, 16758197);
+ a(EntityCow.class, "Cow", 92, 4470310, 10592673);
+ a(EntityChicken.class, "Chicken", 93, 10592673, 16711680);
+ a(EntitySquid.class, "Squid", 94, 2243405, 7375001);
+ a(EntityWolf.class, "Wolf", 95, 14144467, 13545366);
+ a(EntityMushroomCow.class, "MushroomCow", 96, 10489616, 12040119);
+ a(EntitySnowman.class, "SnowMan", 97);
+ a(EntityOcelot.class, "Ozelot", 98, 15720061, 5653556);
+ a(EntityIronGolem.class, "VillagerGolem", 99);
+ a(EntityHorse.class, "EntityHorse", 100, 12623485, 15656192);
+ a(EntityRabbit.class, "Rabbit", 101, 10051392, 7555121);
+ a(EntityVillager.class, "Villager", 120, 5651507, 12422002);
+ a(EntityEnderCrystal.class, "EnderCrystal", 200);
+ }
+
+ public static class MonsterEggInfo {
+
+ public final int a;
+ public final int b;
+ public final int c;
+ public final Statistic killEntityStatistic;
+ public final Statistic e;
+
+ public MonsterEggInfo(int i, int j, int k) {
+ this.a = i;
+ this.b = j;
+ this.c = k;
+ this.killEntityStatistic = StatisticList.a(this);
+ this.e = StatisticList.b(this);
+ }
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityVillager.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityWaterAnimal.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWaterAnimal.java
new file mode 100644
index 0000000..0337aba
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWaterAnimal.java
@@ -0,0 +1,53 @@
+package net.minecraft.server;
+
+public abstract class EntityWaterAnimal extends EntityInsentient implements IAnimal {
+
+ public EntityWaterAnimal(World world) {
+ super(world);
+ }
+
+ public boolean aY() {
+ return true;
+ }
+
+ public boolean bR() {
+ return true;
+ }
+
+ public boolean canSpawn() {
+ return this.world.a(this.getBoundingBox(), (Entity) this);
+ }
+
+ public int w() {
+ return 120;
+ }
+
+ protected boolean isTypeNotPersistent() {
+ return true;
+ }
+
+ protected int getExpValue(EntityHuman entityhuman) {
+ return 1 + this.world.random.nextInt(3);
+ }
+
+ public void K() {
+ int i = this.getAirTicks();
+
+ super.K();
+ if (this.isAlive() && !this.V()) {
+ --i;
+ this.setAirTicks(i);
+ if (this.getAirTicks() == -20) {
+ this.setAirTicks(0);
+ this.damageEntity(DamageSource.DROWN, 2.0F);
+ }
+ } else {
+ this.setAirTicks(300);
+ }
+
+ }
+
+ public boolean aL() {
+ return false;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityWeather.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWeather.java
new file mode 100644
index 0000000..03ff54c
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWeather.java
@@ -0,0 +1,8 @@
+package net.minecraft.server;
+
+public abstract class EntityWeather extends Entity {
+
+ public EntityWeather(World world) {
+ super(world);
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitch.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitch.java
new file mode 100644
index 0000000..d59d779
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitch.java
@@ -0,0 +1,173 @@
+package net.minecraft.server;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+
+public class EntityWitch extends EntityMonster implements IRangedEntity {
+
+ private static final UUID a = UUID.fromString("5CD17E52-A79A-43D3-A529-90FDE04B181E");
+ private static final AttributeModifier b = (new AttributeModifier(EntityWitch.a, "Drinking speed penalty", -0.25D, 0)).a(false);
+ private static final Item[] c = new Item[] { Items.GLOWSTONE_DUST, Items.SUGAR, Items.REDSTONE, Items.SPIDER_EYE, Items.GLASS_BOTTLE, Items.GUNPOWDER, Items.STICK, Items.STICK};
+ private int bm;
+
+ public EntityWitch(World world) {
+ super(world);
+ this.setSize(0.6F, 1.95F);
+ this.goalSelector.a(1, new PathfinderGoalFloat(this));
+ this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, 1.0D, 60, 10.0F));
+ this.goalSelector.a(2, new PathfinderGoalRandomStroll(this, 1.0D));
+ this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
+ this.goalSelector.a(3, new PathfinderGoalRandomLookaround(this));
+ this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, false, new Class[0]));
+ this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, true));
+ }
+
+ protected void h() {
+ super.h();
+ this.getDataWatcher().a(21, Byte.valueOf((byte) 0));
+ }
+
+ protected String z() {
+ return null;
+ }
+
+ protected String bo() {
+ return null;
+ }
+
+ protected String bp() {
+ return null;
+ }
+
+ public void a(boolean flag) {
+ this.getDataWatcher().watch(21, Byte.valueOf((byte) (flag ? 1 : 0)));
+ }
+
+ public boolean n() {
+ return this.getDataWatcher().getByte(21) == 1;
+ }
+
+ protected void initAttributes() {
+ super.initAttributes();
+ this.getAttributeInstance(GenericAttributes.maxHealth).setValue(26.0D);
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.25D);
+ }
+
+ public void m() {
+ if (!this.world.isClientSide) {
+ if (this.n()) {
+ if (this.bm-- <= 0) {
+ this.a(false);
+ ItemStack itemstack = this.bA();
+
+ this.setEquipment(0, (ItemStack) null);
+ if (itemstack != null && itemstack.getItem() == Items.POTION) {
+ List list = Items.POTION.h(itemstack);
+
+ if (list != null) {
+ Iterator iterator = list.iterator();
+
+ while (iterator.hasNext()) {
+ MobEffect mobeffect = (MobEffect) iterator.next();
+
+ this.addEffect(new MobEffect(mobeffect));
+ }
+ }
+ }
+
+ this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).c(EntityWitch.b);
+ }
+ } else {
+ short short0 = -1;
+
+ if (this.random.nextFloat() < 0.15F && this.a(Material.WATER) && !this.hasEffect(MobEffectList.WATER_BREATHING)) {
+ short0 = 8237;
+ } else if (this.random.nextFloat() < 0.15F && this.isBurning() && !this.hasEffect(MobEffectList.FIRE_RESISTANCE)) {
+ short0 = 16307;
+ } else if (this.random.nextFloat() < 0.05F && this.getHealth() < this.getMaxHealth()) {
+ short0 = 16341;
+ } else if (this.random.nextFloat() < 0.25F && this.getGoalTarget() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.getGoalTarget().h(this) > 121.0D) {
+ short0 = 16274;
+ } else if (this.random.nextFloat() < 0.25F && this.getGoalTarget() != null && !this.hasEffect(MobEffectList.FASTER_MOVEMENT) && this.getGoalTarget().h(this) > 121.0D) {
+ short0 = 16274;
+ }
+
+ if (short0 > -1) {
+ this.setEquipment(0, new ItemStack(Items.POTION, 1, short0));
+ this.bm = this.bA().l();
+ this.a(true);
+ AttributeInstance attributeinstance = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED);
+
+ attributeinstance.c(EntityWitch.b);
+ attributeinstance.b(EntityWitch.b);
+ }
+ }
+
+ if (this.random.nextFloat() < 7.5E-4F) {
+ this.world.broadcastEntityEffect(this, (byte) 15);
+ }
+ }
+
+ super.m();
+ }
+
+ protected float applyMagicModifier(DamageSource damagesource, float f) {
+ f = super.applyMagicModifier(damagesource, f);
+ if (damagesource.getEntity() == this) {
+ f = 0.0F;
+ }
+
+ if (damagesource.isMagic()) {
+ f = (float) ((double) f * 0.15D);
+ }
+
+ return f;
+ }
+
+ protected void dropDeathLoot(boolean flag, int i) {
+ int j = this.random.nextInt(3) + 1;
+
+ for (int k = 0; k < j; ++k) {
+ int l = this.random.nextInt(3);
+ Item item = EntityWitch.c[this.random.nextInt(EntityWitch.c.length)];
+
+ if (i > 0) {
+ l += this.random.nextInt(i + 1);
+ }
+
+ for (int i1 = 0; i1 < l; ++i1) {
+ this.a(item, 1);
+ }
+ }
+
+ }
+
+ public void a(EntityLiving entityliving, float f) {
+ if (!this.n()) {
+ EntityPotion entitypotion = new EntityPotion(this.world, this, 32732);
+ double d0 = entityliving.locY + (double) entityliving.getHeadHeight() - 1.100000023841858D;
+
+ entitypotion.pitch -= -20.0F;
+ double d1 = entityliving.locX + entityliving.motX - this.locX;
+ double d2 = d0 - this.locY;
+ double d3 = entityliving.locZ + entityliving.motZ - this.locZ;
+ float f1 = MathHelper.sqrt(d1 * d1 + d3 * d3);
+
+ if (f1 >= 8.0F && !entityliving.hasEffect(MobEffectList.SLOWER_MOVEMENT)) {
+ entitypotion.setPotionValue(32698);
+ } else if (entityliving.getHealth() >= 8.0F && !entityliving.hasEffect(MobEffectList.POISON)) {
+ entitypotion.setPotionValue(32660);
+ } else if (f1 <= 3.0F && !entityliving.hasEffect(MobEffectList.WEAKNESS) && this.random.nextFloat() < 0.25F) {
+ entitypotion.setPotionValue(32696);
+ }
+
+ entitypotion.shoot(d1, d2 + (double) (f1 * 0.2F), d3, 0.75F, 8.0F);
+ this.world.addEntity(entitypotion);
+ }
+ }
+
+ public float getHeadHeight() {
+ return 1.62F;
+ }
+}
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityWither.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityWitherSkull.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityWolf.java
diff --git a/TacoSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java
similarity index 100%
rename from TacoSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java
rename to eSpigot-Server/src/main/java/net/minecraft/server/EntityZombie.java
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumAnimation.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumAnimation.java
new file mode 100644
index 0000000..8c0088a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumAnimation.java
@@ -0,0 +1,8 @@
+package net.minecraft.server;
+
+public enum EnumAnimation {
+
+ NONE, EAT, DRINK, BLOCK, BOW;
+
+ private EnumAnimation() {}
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumChatFormat.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumChatFormat.java
new file mode 100644
index 0000000..f0382a5
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumChatFormat.java
@@ -0,0 +1,116 @@
+package net.minecraft.server;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+public enum EnumChatFormat {
+
+ BLACK("BLACK", '0', 0), DARK_BLUE("DARK_BLUE", '1', 1), DARK_GREEN("DARK_GREEN", '2', 2), DARK_AQUA("DARK_AQUA", '3', 3), DARK_RED("DARK_RED", '4', 4), DARK_PURPLE("DARK_PURPLE", '5', 5), GOLD("GOLD", '6', 6), GRAY("GRAY", '7', 7), DARK_GRAY("DARK_GRAY", '8', 8), BLUE("BLUE", '9', 9), GREEN("GREEN", 'a', 10), AQUA("AQUA", 'b', 11), RED("RED", 'c', 12), LIGHT_PURPLE("LIGHT_PURPLE", 'd', 13), YELLOW("YELLOW", 'e', 14), WHITE("WHITE", 'f', 15), OBFUSCATED("OBFUSCATED", 'k', true), BOLD("BOLD", 'l', true), STRIKETHROUGH("STRIKETHROUGH", 'm', true), UNDERLINE("UNDERLINE", 'n', true), ITALIC("ITALIC", 'o', true), RESET("RESET", 'r', -1);
+
+ private static final Map w = Maps.newHashMap();
+ private static final Pattern x = Pattern.compile("(?i)" + String.valueOf('\u00a7') + "[0-9A-FK-OR]");
+ private final String y;
+ private final char z;
+ private final boolean A;
+ private final String B;
+ private final int C;
+
+ private static String c(String s) {
+ return s.toLowerCase().replaceAll("[^a-z]", "");
+ }
+
+ private EnumChatFormat(String s, char c0, int i) {
+ this(s, c0, false, i);
+ }
+
+ private EnumChatFormat(String s, char c0, boolean flag) {
+ this(s, c0, flag, -1);
+ }
+
+ private EnumChatFormat(String s, char c0, boolean flag, int i) {
+ this.y = s;
+ this.z = c0;
+ this.A = flag;
+ this.C = i;
+ this.B = "\u00a7" + c0;
+ }
+
+ public int b() {
+ return this.C;
+ }
+
+ public boolean isFormat() {
+ return this.A;
+ }
+
+ public boolean d() {
+ return !this.A && this != EnumChatFormat.RESET;
+ }
+
+ public String e() {
+ return this.name().toLowerCase();
+ }
+
+ public String toString() {
+ return this.B;
+ }
+
+ public static String a(String s) {
+ return s == null ? null : EnumChatFormat.x.matcher(s).replaceAll("");
+ }
+
+ public static EnumChatFormat b(String s) {
+ return s == null ? null : (EnumChatFormat) EnumChatFormat.w.get(c(s));
+ }
+
+ public static EnumChatFormat a(int i) {
+ if (i < 0) {
+ return EnumChatFormat.RESET;
+ } else {
+ EnumChatFormat[] aenumchatformat = values();
+ int j = aenumchatformat.length;
+
+ for (int k = 0; k < j; ++k) {
+ EnumChatFormat enumchatformat = aenumchatformat[k];
+
+ if (enumchatformat.b() == i) {
+ return enumchatformat;
+ }
+ }
+
+ return null;
+ }
+ }
+
+ public static Collection a(boolean flag, boolean flag1) {
+ ArrayList arraylist = Lists.newArrayList();
+ EnumChatFormat[] aenumchatformat = values();
+ int i = aenumchatformat.length;
+
+ for (int j = 0; j < i; ++j) {
+ EnumChatFormat enumchatformat = aenumchatformat[j];
+
+ if ((!enumchatformat.d() || flag) && (!enumchatformat.isFormat() || flag1)) {
+ arraylist.add(enumchatformat.e());
+ }
+ }
+
+ return arraylist;
+ }
+
+ static {
+ EnumChatFormat[] aenumchatformat = values();
+ int i = aenumchatformat.length;
+
+ for (int j = 0; j < i; ++j) {
+ EnumChatFormat enumchatformat = aenumchatformat[j];
+
+ EnumChatFormat.w.put(c(enumchatformat.y), enumchatformat);
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumColor.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumColor.java
new file mode 100644
index 0000000..2bdaa0b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumColor.java
@@ -0,0 +1,77 @@
+package net.minecraft.server;
+
+public enum EnumColor implements INamable {
+
+ WHITE(0, 15, "white", "white", MaterialMapColor.j, EnumChatFormat.WHITE), ORANGE(1, 14, "orange", "orange", MaterialMapColor.q, EnumChatFormat.GOLD), MAGENTA(2, 13, "magenta", "magenta", MaterialMapColor.r, EnumChatFormat.AQUA), LIGHT_BLUE(3, 12, "light_blue", "lightBlue", MaterialMapColor.s, EnumChatFormat.BLUE), YELLOW(4, 11, "yellow", "yellow", MaterialMapColor.t, EnumChatFormat.YELLOW), LIME(5, 10, "lime", "lime", MaterialMapColor.u, EnumChatFormat.GREEN), PINK(6, 9, "pink", "pink", MaterialMapColor.v, EnumChatFormat.LIGHT_PURPLE), GRAY(7, 8, "gray", "gray", MaterialMapColor.w, EnumChatFormat.DARK_GRAY), SILVER(8, 7, "silver", "silver", MaterialMapColor.x, EnumChatFormat.GRAY), CYAN(9, 6, "cyan", "cyan", MaterialMapColor.y, EnumChatFormat.DARK_AQUA), PURPLE(10, 5, "purple", "purple", MaterialMapColor.z, EnumChatFormat.DARK_PURPLE), BLUE(11, 4, "blue", "blue", MaterialMapColor.A, EnumChatFormat.DARK_BLUE), BROWN(12, 3, "brown", "brown", MaterialMapColor.B, EnumChatFormat.GOLD), GREEN(13, 2, "green", "green", MaterialMapColor.C, EnumChatFormat.DARK_GREEN), RED(14, 1, "red", "red", MaterialMapColor.D, EnumChatFormat.DARK_RED), BLACK(15, 0, "black", "black", MaterialMapColor.E, EnumChatFormat.BLACK);
+
+ private static final EnumColor[] q = new EnumColor[values().length];
+ private static final EnumColor[] r = new EnumColor[values().length];
+ private final int s;
+ private final int t;
+ private final String u;
+ private final String v;
+ private final MaterialMapColor w;
+ private final EnumChatFormat x;
+
+ private EnumColor(int i, int j, String s, String s1, MaterialMapColor materialmapcolor, EnumChatFormat enumchatformat) {
+ this.s = i;
+ this.t = j;
+ this.u = s;
+ this.v = s1;
+ this.w = materialmapcolor;
+ this.x = enumchatformat;
+ }
+
+ public int getColorIndex() {
+ return this.s;
+ }
+
+ public int getInvColorIndex() {
+ return this.t;
+ }
+
+ public String d() {
+ return this.v;
+ }
+
+ public MaterialMapColor e() {
+ return this.w;
+ }
+
+ public static EnumColor fromInvColorIndex(int i) {
+ if (i < 0 || i >= EnumColor.r.length) {
+ i = 0;
+ }
+
+ return EnumColor.r[i];
+ }
+
+ public static EnumColor fromColorIndex(int i) {
+ if (i < 0 || i >= EnumColor.q.length) {
+ i = 0;
+ }
+
+ return EnumColor.q[i];
+ }
+
+ public String toString() {
+ return this.v;
+ }
+
+ public String getName() {
+ return this.u;
+ }
+
+ static {
+ EnumColor[] aenumcolor = values();
+ int i = aenumcolor.length;
+
+ for (int j = 0; j < i; ++j) {
+ EnumColor enumcolor = aenumcolor[j];
+
+ EnumColor.q[enumcolor.getColorIndex()] = enumcolor;
+ EnumColor.r[enumcolor.getInvColorIndex()] = enumcolor;
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumCreatureType.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumCreatureType.java
new file mode 100644
index 0000000..18d6f3a
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumCreatureType.java
@@ -0,0 +1,36 @@
+package net.minecraft.server;
+
+public enum EnumCreatureType {
+
+ MONSTER(IMonster.class, 70, Material.AIR, false, false), CREATURE(EntityAnimal.class, 10, Material.AIR, true, true), AMBIENT(EntityAmbient.class, 15, Material.AIR, true, false), WATER_CREATURE(EntityWaterAnimal.class, 5, Material.WATER, true, false);
+
+ private final Class extends IAnimal> e;
+ private final int f;
+ private final Material g;
+ private final boolean h;
+ private final boolean i;
+
+ EnumCreatureType(Class oclass, int i, Material material, boolean flag, boolean flag1) {
+ this.e = oclass;
+ this.f = i;
+ this.g = material;
+ this.h = flag;
+ this.i = flag1;
+ }
+
+ public Class extends IAnimal> a() {
+ return this.e;
+ }
+
+ public int b() {
+ return this.f;
+ }
+
+ public boolean d() {
+ return this.h;
+ }
+
+ public boolean e() {
+ return this.i;
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumDifficulty.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDifficulty.java
new file mode 100644
index 0000000..7671000
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDifficulty.java
@@ -0,0 +1,39 @@
+package net.minecraft.server;
+
+public enum EnumDifficulty {
+
+ PEACEFUL(0, "options.difficulty.peaceful"), EASY(1, "options.difficulty.easy"), NORMAL(2, "options.difficulty.normal"), HARD(3, "options.difficulty.hard");
+
+ private static final EnumDifficulty[] e = new EnumDifficulty[values().length];
+ private final int f;
+ private final String g;
+
+ private EnumDifficulty(int i, String s) {
+ this.f = i;
+ this.g = s;
+ }
+
+ public int a() {
+ return this.f;
+ }
+
+ public static EnumDifficulty getById(int i) {
+ return EnumDifficulty.e[i % EnumDifficulty.e.length];
+ }
+
+ public String b() {
+ return this.g;
+ }
+
+ static {
+ EnumDifficulty[] aenumdifficulty = values();
+ int i = aenumdifficulty.length;
+
+ for (int j = 0; j < i; ++j) {
+ EnumDifficulty enumdifficulty = aenumdifficulty[j];
+
+ EnumDifficulty.e[enumdifficulty.f] = enumdifficulty;
+ }
+
+ }
+}
diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EnumDirection.java b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDirection.java
new file mode 100644
index 0000000..938769b
--- /dev/null
+++ b/eSpigot-Server/src/main/java/net/minecraft/server/EnumDirection.java
@@ -0,0 +1,361 @@
+package net.minecraft.server;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Maps;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Random;
+
+public enum EnumDirection implements INamable {
+
+ DOWN(0, 1, -1, "down", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.Y, new BaseBlockPosition(0, -1, 0)), UP(1, 0, -1, "up", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.Y, new BaseBlockPosition(0, 1, 0)), NORTH(2, 3, 2, "north", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.Z, new BaseBlockPosition(0, 0, -1)), SOUTH(3, 2, 0, "south", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.Z, new BaseBlockPosition(0, 0, 1)), WEST(4, 5, 1, "west", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.X, new BaseBlockPosition(-1, 0, 0)), EAST(5, 4, 3, "east", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.X, new BaseBlockPosition(1, 0, 0));
+
+ private final int g;
+ private final int h;
+ private final int i;
+ private final String j;
+ private final EnumDirection.EnumAxis k;
+ private final EnumDirection.EnumAxisDirection l;
+ private final BaseBlockPosition m;
+ private static final EnumDirection[] n = new EnumDirection[6];
+ private static final EnumDirection[] o = new EnumDirection[4];
+ private static final Map p = Maps.newHashMap();
+
+ private EnumDirection(int i, int j, int k, String s, EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis, BaseBlockPosition baseblockposition) {
+ this.g = i;
+ this.i = k;
+ this.h = j;
+ this.j = s;
+ this.k = enumdirection_enumaxis;
+ this.l = enumdirection_enumaxisdirection;
+ this.m = baseblockposition;
+ }
+
+ public int a() {
+ return this.g;
+ }
+
+ public int b() {
+ return this.i;
+ }
+
+ public EnumDirection.EnumAxisDirection c() {
+ return this.l;
+ }
+
+ public EnumDirection opposite() {
+ return fromType1(this.h);
+ }
+
+ public EnumDirection e() {
+ switch (EnumDirection.SyntheticClass_1.b[this.ordinal()]) {
+ case 1:
+ return EnumDirection.EAST;
+
+ case 2:
+ return EnumDirection.SOUTH;
+
+ case 3:
+ return EnumDirection.WEST;
+
+ case 4:
+ return EnumDirection.NORTH;
+
+ default:
+ throw new IllegalStateException("Unable to get Y-rotated facing of " + this);
+ }
+ }
+
+ public EnumDirection f() {
+ switch (EnumDirection.SyntheticClass_1.b[this.ordinal()]) {
+ case 1:
+ return EnumDirection.WEST;
+
+ case 2:
+ return EnumDirection.NORTH;
+
+ case 3:
+ return EnumDirection.EAST;
+
+ case 4:
+ return EnumDirection.SOUTH;
+
+ default:
+ throw new IllegalStateException("Unable to get CCW facing of " + this);
+ }
+ }
+
+ public int getAdjacentX() {
+ return this.k == EnumDirection.EnumAxis.X ? this.l.a() : 0;
+ }
+
+ public int getAdjacentY() {
+ return this.k == EnumDirection.EnumAxis.Y ? this.l.a() : 0;
+ }
+
+ public int getAdjacentZ() {
+ return this.k == EnumDirection.EnumAxis.Z ? this.l.a() : 0;
+ }
+
+ public String j() {
+ return this.j;
+ }
+
+ public EnumDirection.EnumAxis k() {
+ return this.k;
+ }
+
+ public static EnumDirection fromType1(int i) {
+ return EnumDirection.n[MathHelper.a(i % EnumDirection.n.length)];
+ }
+
+ public static EnumDirection fromType2(int i) {
+ return EnumDirection.o[MathHelper.a(i % EnumDirection.o.length)];
+ }
+
+ public static EnumDirection fromAngle(double d0) {
+ return fromType2(MathHelper.floor(d0 / 90.0D + 0.5D) & 3);
+ }
+
+ public static EnumDirection a(Random random) {
+ return values()[random.nextInt(values().length)];
+ }
+
+ public String toString() {
+ return this.j;
+ }
+
+ public String getName() {
+ return this.j;
+ }
+
+ public static EnumDirection a(EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis) {
+ EnumDirection[] aenumdirection = values();
+ int i = aenumdirection.length;
+
+ for (int j = 0; j < i; ++j) {
+ EnumDirection enumdirection = aenumdirection[j];
+
+ if (enumdirection.c() == enumdirection_enumaxisdirection && enumdirection.k() == enumdirection_enumaxis) {
+ return enumdirection;
+ }
+ }
+
+ throw new IllegalArgumentException("No such direction: " + enumdirection_enumaxisdirection + " " + enumdirection_enumaxis);
+ }
+
+ static {
+ EnumDirection[] aenumdirection = values();
+ int i = aenumdirection.length;
+
+ for (int j = 0; j < i; ++j) {
+ EnumDirection enumdirection = aenumdirection[j];
+
+ EnumDirection.n[enumdirection.g] = enumdirection;
+ if (enumdirection.k().c()) {
+ EnumDirection.o[enumdirection.i] = enumdirection;
+ }
+
+ EnumDirection.p.put(enumdirection.j().toLowerCase(), enumdirection);
+ }
+
+ }
+
+ static class SyntheticClass_1 {
+
+ static final int[] a;
+ static final int[] b;
+ static final int[] c = new int[EnumDirection.EnumDirectionLimit.values().length];
+
+ static {
+ try {
+ EnumDirection.SyntheticClass_1.c[EnumDirection.EnumDirectionLimit.HORIZONTAL.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.c[EnumDirection.EnumDirectionLimit.VERTICAL.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror1) {
+ ;
+ }
+
+ b = new int[EnumDirection.values().length];
+
+ try {
+ EnumDirection.SyntheticClass_1.b[EnumDirection.NORTH.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror2) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.b[EnumDirection.EAST.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror3) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.b[EnumDirection.SOUTH.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror4) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.b[EnumDirection.WEST.ordinal()] = 4;
+ } catch (NoSuchFieldError nosuchfielderror5) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.b[EnumDirection.UP.ordinal()] = 5;
+ } catch (NoSuchFieldError nosuchfielderror6) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.b[EnumDirection.DOWN.ordinal()] = 6;
+ } catch (NoSuchFieldError nosuchfielderror7) {
+ ;
+ }
+
+ a = new int[EnumDirection.EnumAxis.values().length];
+
+ try {
+ EnumDirection.SyntheticClass_1.a[EnumDirection.EnumAxis.X.ordinal()] = 1;
+ } catch (NoSuchFieldError nosuchfielderror8) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.a[EnumDirection.EnumAxis.Y.ordinal()] = 2;
+ } catch (NoSuchFieldError nosuchfielderror9) {
+ ;
+ }
+
+ try {
+ EnumDirection.SyntheticClass_1.a[EnumDirection.EnumAxis.Z.ordinal()] = 3;
+ } catch (NoSuchFieldError nosuchfielderror10) {
+ ;
+ }
+
+ }
+ }
+
+ public static enum EnumDirectionLimit implements Predicate, Iterable