SharedConfig & NachoSpigot optimizations
This commit is contained in:
parent
3763d622fd
commit
be7deb2637
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -112,7 +112,14 @@ class TimingHandler implements Timing {
|
|||||||
start = 0;
|
start = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
addDiff(System.nanoTime() - start);
|
try
|
||||||
|
{
|
||||||
|
addDiff(System.nanoTime() - start);
|
||||||
|
}
|
||||||
|
catch (ArrayIndexOutOfBoundsException ex)
|
||||||
|
{
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
start = 0;
|
start = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,13 +550,6 @@ public final class Bukkit {
|
|||||||
return server.createMap(world);
|
return server.createMap(world);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Reloads the server, refreshing settings and plugin information.
|
|
||||||
*/
|
|
||||||
public static void reload() {
|
|
||||||
server.reload();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the primary logger associated with this server instance.
|
* Returns the primary logger associated with this server instance.
|
||||||
*
|
*
|
||||||
|
@ -452,11 +452,6 @@ public interface Server extends PluginMessageRecipient {
|
|||||||
*/
|
*/
|
||||||
MapView createMap(World world);
|
MapView createMap(World world);
|
||||||
|
|
||||||
/**
|
|
||||||
* Reloads the server, refreshing settings and plugin information.
|
|
||||||
*/
|
|
||||||
void reload();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the primary logger associated with this server instance.
|
* Returns the primary logger associated with this server instance.
|
||||||
*
|
*
|
||||||
|
@ -30,7 +30,6 @@ public class SimpleCommandMap implements CommandMap {
|
|||||||
|
|
||||||
private void setDefaultCommands() {
|
private void setDefaultCommands() {
|
||||||
register("bukkit", new VersionCommand("version"));
|
register("bukkit", new VersionCommand("version"));
|
||||||
register("bukkit", new ReloadCommand("reload"));
|
|
||||||
register("bukkit", new PluginsCommand("plugins"));
|
register("bukkit", new PluginsCommand("plugins"));
|
||||||
register("bukkit", new co.aikar.timings.TimingsCommand("timings")); // Spigot
|
register("bukkit", new co.aikar.timings.TimingsCommand("timings")); // Spigot
|
||||||
}
|
}
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
package org.bukkit.command.defaults;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
public class ReloadCommand extends BukkitCommand {
|
|
||||||
public ReloadCommand(String name) {
|
|
||||||
super(name);
|
|
||||||
this.description = "Reloads the server configuration and plugins";
|
|
||||||
this.usageMessage = "/reload";
|
|
||||||
this.setPermission("bukkit.command.reload");
|
|
||||||
this.setAliases(Collections.singletonList("rl"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
|
|
||||||
if (!testPermission(sender)) return true;
|
|
||||||
|
|
||||||
Command.broadcastCommandMessage(sender, ChatColor.RED + "Please note that this command is not supported and may cause issues when using some plugins.");
|
|
||||||
Command.broadcastCommandMessage(sender, ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server.");
|
|
||||||
Bukkit.reload();
|
|
||||||
Command.broadcastCommandMessage(sender, ChatColor.GREEN + "Reload complete.");
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Spigot Start
|
|
||||||
@Override
|
|
||||||
public java.util.List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException
|
|
||||||
{
|
|
||||||
return java.util.Collections.emptyList();
|
|
||||||
}
|
|
||||||
// Spigot End
|
|
||||||
}
|
|
@ -49,6 +49,7 @@ dependencies {
|
|||||||
implementation("com.github.luben:zstd-jni:1.5.2-3")
|
implementation("com.github.luben:zstd-jni:1.5.2-3")
|
||||||
implementation("net.openhft:affinity:3.20.0")
|
implementation("net.openhft:affinity:3.20.0")
|
||||||
implementation("net.jafama:jafama:2.3.2")
|
implementation("net.jafama:jafama:2.3.2")
|
||||||
|
implementation("com.eatthepath:fast-uuid:0.2.0")
|
||||||
|
|
||||||
|
|
||||||
testImplementation("junit:junit:4.11")
|
testImplementation("junit:junit:4.11")
|
||||||
|
@ -0,0 +1,128 @@
|
|||||||
|
package com.elevatemc.spigot.config;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class BukkitConfig {
|
||||||
|
|
||||||
|
public static YamlConfiguration config;
|
||||||
|
static Map<String, Command> commands;
|
||||||
|
|
||||||
|
public static void init()
|
||||||
|
{
|
||||||
|
config = SharedConfig.config;
|
||||||
|
commands = SharedConfig.commands;
|
||||||
|
SharedConfig.readConfig( BukkitConfig.class, null );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean getBoolean(String path, boolean def)
|
||||||
|
{
|
||||||
|
path = "bukkit." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getBoolean( path, config.getBoolean( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double getDouble(String path, double def)
|
||||||
|
{
|
||||||
|
path = "bukkit." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getDouble( path, config.getDouble( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getInt(String path, int def)
|
||||||
|
{
|
||||||
|
path = "bukkit." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getInt( path, config.getInt( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <T> List getList(String path, T def)
|
||||||
|
{
|
||||||
|
path = "bukkit." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getList( path, config.getList( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getString(String path, String def)
|
||||||
|
{
|
||||||
|
path = "bukkit." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getString( path, config.getString( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ConfigurationSection getConfigurationSection(String path) {
|
||||||
|
return config.getConfigurationSection("bukkit." + path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean allowEnd = true;
|
||||||
|
public static boolean warnOnOverlaod = true;
|
||||||
|
public static String permissionsFile = "permissions.yml";
|
||||||
|
public static String updateFolder = "update";
|
||||||
|
public static boolean pluginProfiling = false;
|
||||||
|
public static int connectionThrottle = 4000;
|
||||||
|
public static boolean queryPlugins = true;
|
||||||
|
public static String deprecatedVerbose = "default";
|
||||||
|
public static String shutdownMessage = "Server closed";
|
||||||
|
public static String permissionMessage = ChatColor.RED + "I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error.";
|
||||||
|
public static boolean useExactLoginLocation = false;
|
||||||
|
public static String worldContainer = ".";
|
||||||
|
private static void settings() {
|
||||||
|
allowEnd = getBoolean("settings.allow-end", allowEnd);
|
||||||
|
warnOnOverlaod = getBoolean("settings.warn-on-overload", warnOnOverlaod);
|
||||||
|
permissionsFile = getString("settings.update-folder", updateFolder);
|
||||||
|
pluginProfiling = getBoolean("settings.plugin-profilling", pluginProfiling);
|
||||||
|
connectionThrottle = getInt("settings.connection-throttle", connectionThrottle);
|
||||||
|
queryPlugins = getBoolean("settings.query-plugins", queryPlugins);
|
||||||
|
deprecatedVerbose = getString("settings.deprecated-verbose", deprecatedVerbose);
|
||||||
|
shutdownMessage = getString("settings.shutdown-message", shutdownMessage);
|
||||||
|
permissionMessage = getString("settings.permission-message", permissionMessage);
|
||||||
|
useExactLoginLocation = getBoolean("settings.use-exact-login-location", useExactLoginLocation);
|
||||||
|
worldContainer = getString("settings.world-container", worldContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int monsterSpawnLimit = 70;
|
||||||
|
public static int animalSpawnLimit = 15;
|
||||||
|
public static int waterAnimalSpawnLimit = 5;
|
||||||
|
public static int ambientSpawnLimit = 15;
|
||||||
|
private static void spawnLimits() {
|
||||||
|
monsterSpawnLimit = getInt("spawn-limits.monsters", monsterSpawnLimit);
|
||||||
|
animalSpawnLimit = getInt("spawn-limits.animals", animalSpawnLimit);
|
||||||
|
waterAnimalSpawnLimit = getInt("spawn-limits.water-animals", waterAnimalSpawnLimit);
|
||||||
|
ambientSpawnLimit = getInt("spawn-limits.ambient", ambientSpawnLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int chunkGCPeriodInTicks = 600;
|
||||||
|
public static int chunkGCLoadThreshold = 0;
|
||||||
|
private static void chunkGC() {
|
||||||
|
chunkGCPeriodInTicks = getInt("chunk-gc.period-in-ticks", chunkGCPeriodInTicks);
|
||||||
|
chunkGCLoadThreshold = getInt("chunk-gc.load-threshold", chunkGCLoadThreshold);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int ticksPerAnimalSpawn = 400;
|
||||||
|
public static int ticksPerMonsterSpawn = 1;
|
||||||
|
public static int ticksPerAutosave = 6000;
|
||||||
|
private static void ticksPer() {
|
||||||
|
ticksPerAnimalSpawn = getInt("ticks-per.animal-spawns", ticksPerAnimalSpawn);
|
||||||
|
ticksPerMonsterSpawn = getInt("ticks-per.monster-spawns", ticksPerMonsterSpawn);
|
||||||
|
ticksPerAutosave = getInt("ticks-per.autosave", ticksPerAutosave);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String databaseUsername = "bukkit";
|
||||||
|
public static String databaseIsolation = "SERIALIZABLE";
|
||||||
|
public static String databaseDriver = "org.sqlite.JDBC";
|
||||||
|
public static String databasePassword = "walrus";
|
||||||
|
public static String databaseUrl = "jdbc:sqlite:{DIR}{NAME}.db";
|
||||||
|
private static void database() {
|
||||||
|
databaseUsername = getString("database.username", databaseUsername);
|
||||||
|
databaseIsolation = getString("database.isolation", databaseIsolation);
|
||||||
|
databaseDriver = getString("database.driver", databaseDriver);
|
||||||
|
databasePassword = getString("database.password", databasePassword);
|
||||||
|
databaseUrl = getString("database.url", databaseUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
package com.elevatemc.spigot.config;
|
||||||
|
|
||||||
|
import com.google.common.base.Throwables;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.github.paperspigot.PaperSpigotConfig;
|
||||||
|
import org.github.paperspigot.PaperSpigotWorldConfig;
|
||||||
|
import org.spigotmc.SpigotConfig;
|
||||||
|
import org.spigotmc.SpigotWorldConfig;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class SharedConfig {
|
||||||
|
|
||||||
|
private static File CONFIG_FILE;
|
||||||
|
private static final String HEADER = "This is the main configuration file for eSpigot.\n"
|
||||||
|
+ "Command aliases also go in this file, just put what you would normally put in commands.yml under a commands: tag";
|
||||||
|
|
||||||
|
/*========================================================================*/
|
||||||
|
public static YamlConfiguration config;
|
||||||
|
public static Map<String, Command> commands;
|
||||||
|
/*========================================================================*/
|
||||||
|
|
||||||
|
public static void init(File configFile) {
|
||||||
|
CONFIG_FILE = configFile;
|
||||||
|
config = new YamlConfiguration();
|
||||||
|
try {
|
||||||
|
config.load (CONFIG_FILE);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
} catch (InvalidConfigurationException ex) {
|
||||||
|
Bukkit.getLogger().log(Level.SEVERE, "Could not load sportpaper.yml, please correct your syntax errors", ex);
|
||||||
|
throw Throwables.propagate(ex);
|
||||||
|
}
|
||||||
|
config.options().header(HEADER);
|
||||||
|
config.options().copyDefaults(true);
|
||||||
|
|
||||||
|
commands = new HashMap<String, Command>();
|
||||||
|
|
||||||
|
eSpigotConfig.init();
|
||||||
|
BukkitConfig.init();
|
||||||
|
SpigotConfig.init();
|
||||||
|
PaperSpigotConfig.init();
|
||||||
|
SpigotWorldConfig.init();
|
||||||
|
PaperSpigotWorldConfig.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerCommands() {
|
||||||
|
for (Map.Entry<String, Command> entry : commands.entrySet()) {
|
||||||
|
MinecraftServer.
|
||||||
|
getServer().
|
||||||
|
server.
|
||||||
|
getCommandMap().
|
||||||
|
register(entry.getKey(), "eSpigot", entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void readConfig(Class<?> clazz, Object instance) {
|
||||||
|
for (Method method : clazz.getDeclaredMethods()) {
|
||||||
|
if (Modifier.isPrivate(method.getModifiers())) {
|
||||||
|
if (method.getParameterTypes().length == 0 && method.getReturnType() == Void.TYPE) {
|
||||||
|
try {
|
||||||
|
method.setAccessible(true);
|
||||||
|
method.invoke(instance);
|
||||||
|
} catch (InvocationTargetException ex) {
|
||||||
|
throw Throwables.propagate(ex.getCause());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Bukkit.getLogger().log(Level.SEVERE, "Error invoking " + method, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
config.save(CONFIG_FILE);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
Bukkit.getLogger().log(Level.SEVERE, "Could not save " + CONFIG_FILE, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,109 @@
|
|||||||
|
package com.elevatemc.spigot.config;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
public class eSpigotConfig
|
||||||
|
{
|
||||||
|
|
||||||
|
public static YamlConfiguration config;
|
||||||
|
static Map<String, Command> commands;
|
||||||
|
|
||||||
|
public static void init()
|
||||||
|
{
|
||||||
|
config = SharedConfig.config;
|
||||||
|
commands = SharedConfig.commands;
|
||||||
|
SharedConfig.readConfig( eSpigotConfig.class, null );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean getBoolean(String path, boolean def)
|
||||||
|
{
|
||||||
|
path = "espigot." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getBoolean( path, config.getBoolean( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double getDouble(String path, double def)
|
||||||
|
{
|
||||||
|
path = "espigot." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getDouble( path, config.getDouble( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getInt(String path, int def)
|
||||||
|
{
|
||||||
|
path = "espigot." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getInt( path, config.getInt( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <T> List getList(String path, T def)
|
||||||
|
{
|
||||||
|
path = "espigot." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getList( path, config.getList( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getString(String path, String def)
|
||||||
|
{
|
||||||
|
path = "espigot." + path;
|
||||||
|
config.addDefault( path, def );
|
||||||
|
return config.getString( path, config.getString( path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean entityCollisions;
|
||||||
|
private static void entityCollisions()
|
||||||
|
{
|
||||||
|
entityCollisions = getBoolean( "settings.entity-collisions", false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean villageTicking;
|
||||||
|
private static void villageTicking()
|
||||||
|
{
|
||||||
|
villageTicking = getBoolean( "settings.village-ticking", false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean enchantmentTableTicking;
|
||||||
|
private static void enchantmentTableTicking()
|
||||||
|
{
|
||||||
|
enchantmentTableTicking = getBoolean( "settings.enchantment-table-ticking", false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean dayLightCycle;
|
||||||
|
private static void dayLightCycle()
|
||||||
|
{
|
||||||
|
dayLightCycle = getBoolean( "settings.day-light-cycle", false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean naturalMobSpawning;
|
||||||
|
private static void naterualMobSpawning()
|
||||||
|
{
|
||||||
|
naturalMobSpawning = getBoolean( "settings.natural-mob-spawning", false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean showHiddenPlayersInTab;
|
||||||
|
private static void showHiddenPlayersInTab()
|
||||||
|
{
|
||||||
|
showHiddenPlayersInTab = getBoolean( "settings.show-hidden-players-in-tab", true );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean mobAI;
|
||||||
|
private static void mobAI()
|
||||||
|
{
|
||||||
|
mobAI = getBoolean( "settings.mob-ai", false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean fixSprintEatExploit;
|
||||||
|
private static void fixSprintEatExploit()
|
||||||
|
{
|
||||||
|
fixSprintEatExploit = getBoolean( "settings.fix-sprint-eat-exploit", true );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean obfuscatePlayerHealth;
|
||||||
|
private static void obfuscatePlayerHealth()
|
||||||
|
{
|
||||||
|
obfuscatePlayerHealth = getBoolean( "settings.obfuscate-player-health", true );
|
||||||
|
}
|
||||||
|
}
|
@ -28,20 +28,16 @@ public class eSpigot {
|
|||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final YamlConfig config, knockbackConfig;
|
private final YamlConfig knockbackConfig;
|
||||||
private final KnockbackHandler knockbackHandler;
|
private final KnockbackHandler knockbackHandler;
|
||||||
|
|
||||||
public eSpigot(CraftServer server) {
|
public eSpigot(CraftServer server) {
|
||||||
// Set instance of the server
|
// Set instance of the server
|
||||||
instance = this;
|
instance = this;
|
||||||
config = new YamlConfig("espigot.yml");
|
|
||||||
knockbackConfig = new YamlConfig("knockback.yml");
|
knockbackConfig = new YamlConfig("knockback.yml");
|
||||||
|
|
||||||
knockbackHandler = new KnockbackHandler();
|
knockbackHandler = new KnockbackHandler();
|
||||||
|
|
||||||
for (eSpigotFeature eSpigotFeature : eSpigotFeature.values())
|
|
||||||
eSpigotFeature.reload(config);
|
|
||||||
|
|
||||||
for (Command command : Arrays.asList(new KnockbackCommand(), new TicksPerSecondCommand()))
|
for (Command command : Arrays.asList(new KnockbackCommand(), new TicksPerSecondCommand()))
|
||||||
server.getCommandMap()
|
server.getCommandMap()
|
||||||
.register(command.getLabel(), "eSpigot", command);
|
.register(command.getLabel(), "eSpigot", command);
|
||||||
@ -67,11 +63,6 @@ public class eSpigot {
|
|||||||
return this.packetHandlers;
|
return this.packetHandlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public YamlConfig getConfig() {
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
|
|
||||||
public YamlConfig getKnockbackConfig() {
|
public YamlConfig getKnockbackConfig() {
|
||||||
return knockbackConfig;
|
return knockbackConfig;
|
||||||
}
|
}
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
package com.elevatemc.spigot;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
import com.elevatemc.spigot.util.YamlConfig;
|
|
||||||
|
|
||||||
public enum eSpigotFeature {
|
|
||||||
|
|
||||||
ENTITY_COLLISION(false),
|
|
||||||
VILLAGE_TICKING(false),
|
|
||||||
DAY_LIGHT_CYCLE(false),
|
|
||||||
NATURAL_MOB_SPAWNING(false),
|
|
||||||
SHOW_HIDDEN_PLAYERS_IN_TAB(true),
|
|
||||||
MOB_AI(false),
|
|
||||||
FIX_SPRINT_EAT_EXPLOIT(true),
|
|
||||||
OBFUSCATE_HEALTH(true);
|
|
||||||
|
|
||||||
private boolean enabled;
|
|
||||||
|
|
||||||
eSpigotFeature(boolean enabled) {
|
|
||||||
this.enabled = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void reload(YamlConfig yamlConfig) {
|
|
||||||
yamlConfig.reload();
|
|
||||||
YamlConfiguration config = yamlConfig.getConfig();
|
|
||||||
|
|
||||||
if (config != null) {
|
|
||||||
enabled = config.getBoolean("features." + name().toLowerCase(), enabled);
|
|
||||||
config.set("features." + name().toLowerCase(), enabled);
|
|
||||||
yamlConfig.saveAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
|
||||||
this.enabled = enabled;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// Original source: velocity
|
||||||
package com.elevatemc.spigot.network;
|
package com.elevatemc.spigot.network;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.elevatemc.spigot.util;
|
||||||
|
|
||||||
|
public class Constants
|
||||||
|
{
|
||||||
|
public static final int[] EMPTY_ARRAY = new int[0];
|
||||||
|
}
|
@ -2,6 +2,7 @@ package net.minecraft.server;
|
|||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.event.block.BlockFromToEvent; // CraftBukkit
|
import org.bukkit.event.block.BlockFromToEvent; // CraftBukkit
|
||||||
|
|
||||||
public class BlockDragonEgg extends Block {
|
public class BlockDragonEgg extends Block {
|
||||||
@ -87,7 +88,7 @@ public class BlockDragonEgg extends Block {
|
|||||||
double d2 = (double) blockposition1.getY() + (double) (blockposition.getY() - blockposition1.getY()) * d0 + world.random.nextDouble() * 1.0D - 0.5D;
|
double d2 = (double) blockposition1.getY() + (double) (blockposition.getY() - blockposition1.getY()) * d0 + world.random.nextDouble() * 1.0D - 0.5D;
|
||||||
double d3 = (double) blockposition1.getZ() + (double) (blockposition.getZ() - blockposition1.getZ()) * d0 + (world.random.nextDouble() - 0.5D) * 1.0D + 0.5D;
|
double d3 = (double) blockposition1.getZ() + (double) (blockposition.getZ() - blockposition1.getZ()) * d0 + (world.random.nextDouble() - 0.5D) * 1.0D + 0.5D;
|
||||||
|
|
||||||
world.addParticle(EnumParticle.PORTAL, d1, d2, d3, f, f1, f2, new int[0]);
|
world.addParticle(EnumParticle.PORTAL, d1, d2, d3, f, f1, f2, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
world.setTypeAndData(blockposition1, iblockdata, 2);
|
world.setTypeAndData(blockposition1, iblockdata, 2);
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@ -171,7 +173,7 @@ public abstract class BlockFluids extends Block {
|
|||||||
world.makeSound(d0 + 0.5D, d1 + 0.5D, d2 + 0.5D, "random.fizz", 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
|
world.makeSound(d0 + 0.5D, d1 + 0.5D, d2 + 0.5D, "random.fizz", 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
|
||||||
|
|
||||||
for (int i = 0; i < 8; ++i) {
|
for (int i = 0; i < 8; ++i) {
|
||||||
world.addParticle(EnumParticle.SMOKE_LARGE, d0 + Math.random(), d1 + 1.2D, d2 + Math.random(), 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(EnumParticle.SMOKE_LARGE, d0 + Math.random(), d1 + 1.2D, d2 + Math.random(), 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public class BlockGrass extends Block implements IBlockFragilePlantElement {
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
} else {
|
} else {
|
||||||
if (world.tacoSpigotConfig.grassIgnoresLight || world.getLightLevel(blockposition.up()) >= 9) { // TacoSpigot - add an option to ignore light
|
if (world.paperSpigotConfig.grassIgnoresLight || world.getLightLevel(blockposition.up()) >= 9) { // TacoSpigot - add an option to ignore light
|
||||||
for (int i = 0; i < Math.min(4, Math.max(20, (int) (4 * 100F / world.growthOdds))); ++i) { // Spigot
|
for (int i = 0; i < Math.min(4, Math.max(20, (int) (4 * 100F / world.growthOdds))); ++i) { // Spigot
|
||||||
BlockPosition blockposition1 = blockposition.a(random.nextInt(3) - 1, random.nextInt(5) - 3, random.nextInt(3) - 1);
|
BlockPosition blockposition1 = blockposition.a(random.nextInt(3) - 1, random.nextInt(5) - 3, random.nextInt(3) - 1);
|
||||||
Block block = world.getType(blockposition1.up()).getBlock();
|
Block block = world.getType(blockposition1.up()).getBlock();
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -76,7 +77,7 @@ public class BlockNote extends BlockContainer {
|
|||||||
float f = (float) Math.pow(2.0D, (double) (j - 12) / 12.0D);
|
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.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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
@ -65,7 +66,7 @@ public class BlockPumpkin extends BlockDirectional {
|
|||||||
blockList.updateList();
|
blockList.updateList();
|
||||||
|
|
||||||
for (j = 0; j < 120; ++j) {
|
for (j = 0; j < 120; ++j) {
|
||||||
world.addParticle(EnumParticle.SNOW_SHOVEL, (double) blockposition1.getX() + world.random.nextDouble(), (double) blockposition1.getY() + world.random.nextDouble() * 2.5D, (double) blockposition1.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(EnumParticle.SNOW_SHOVEL, (double) blockposition1.getX() + world.random.nextDouble(), (double) blockposition1.getY() + world.random.nextDouble() * 2.5D, (double) blockposition1.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < this.getDetectorSnowGolem().b(); ++j) {
|
for (j = 0; j < this.getDetectorSnowGolem().b(); ++j) {
|
||||||
@ -97,7 +98,7 @@ public class BlockPumpkin extends BlockDirectional {
|
|||||||
blockList.updateList();
|
blockList.updateList();
|
||||||
|
|
||||||
for (j = 0; j < 120; ++j) {
|
for (j = 0; j < 120; ++j) {
|
||||||
world.addParticle(EnumParticle.SNOWBALL, (double) blockposition2.getX() + world.random.nextDouble(), (double) blockposition2.getY() + world.random.nextDouble() * 3.9D, (double) blockposition2.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(EnumParticle.SNOWBALL, (double) blockposition2.getX() + world.random.nextDouble(), (double) blockposition2.getY() + world.random.nextDouble() * 3.9D, (double) blockposition2.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < this.getDetectorIronGolem().c(); ++j) {
|
for (j = 0; j < this.getDetectorIronGolem().c(); ++j) {
|
||||||
|
@ -3,6 +3,7 @@ package net.minecraft.server;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||||
import org.bukkit.event.entity.EntityInteractEvent;
|
import org.bukkit.event.entity.EntityInteractEvent;
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@ -147,7 +148,7 @@ public class BlockRedstoneOre extends Block {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (d1 < (double) blockposition.getX() || d1 > (double) (blockposition.getX() + 1) || d2 < 0.0D || d2 > (double) (blockposition.getY() + 1) || d3 < (double) blockposition.getZ() || d3 > (double) (blockposition.getZ() + 1)) {
|
if (d1 < (double) blockposition.getX() || d1 > (double) (blockposition.getX() + 1) || d2 < 0.0D || d2 > (double) (blockposition.getY() + 1) || d3 < (double) blockposition.getZ() || d3 > (double) (blockposition.getZ() + 1)) {
|
||||||
world.addParticle(EnumParticle.REDSTONE, d1, d2, d3, 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(EnumParticle.REDSTONE, d1, d2, d3, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package net.minecraft.server;
|
|||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit
|
import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit
|
||||||
|
|
||||||
public class BlockRedstoneTorch extends BlockTorch {
|
public class BlockRedstoneTorch extends BlockTorch {
|
||||||
@ -152,7 +153,7 @@ public class BlockRedstoneTorch extends BlockTorch {
|
|||||||
double d1 = blockposition.getY() + random.nextDouble() * 0.6D + 0.2D;
|
double d1 = blockposition.getY() + random.nextDouble() * 0.6D + 0.2D;
|
||||||
double d2 = blockposition.getZ() + random.nextDouble() * 0.6D + 0.2D;
|
double d2 = blockposition.getZ() + random.nextDouble() * 0.6D + 0.2D;
|
||||||
|
|
||||||
world.addParticle(EnumParticle.SMOKE_NORMAL, d0, d1, d2, 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(EnumParticle.SMOKE_NORMAL, d0, d1, d2, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
world.a(blockposition, world.getType(blockposition).getBlock(), 160);
|
world.a(blockposition, world.getType(blockposition).getBlock(), 160);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@ -208,7 +209,7 @@ public class BlockSkull extends BlockContainer {
|
|||||||
int k;
|
int k;
|
||||||
|
|
||||||
for (k = 0; k < 120; ++k) {
|
for (k = 0; k < 120; ++k) {
|
||||||
world.addParticle(EnumParticle.SNOWBALL, (double) blockposition1.getX() + world.random.nextDouble(), (double) (blockposition1.getY() - 2) + world.random.nextDouble() * 3.9D, (double) blockposition1.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(EnumParticle.SNOWBALL, (double) blockposition1.getX() + world.random.nextDouble(), (double) (blockposition1.getY() - 2) + world.random.nextDouble() * 3.9D, (double) blockposition1.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (k = 0; k < shapedetector.c(); ++k) {
|
for (k = 0; k < shapedetector.c(); ++k) {
|
||||||
|
@ -26,7 +26,7 @@ import com.google.common.collect.Table;
|
|||||||
|
|
||||||
import net.techcable.tacospigot.ImmutableArrayMap;
|
import net.techcable.tacospigot.ImmutableArrayMap;
|
||||||
import net.techcable.tacospigot.ImmutableArrayTable;
|
import net.techcable.tacospigot.ImmutableArrayTable;
|
||||||
import net.techcable.tacospigot.TacoSpigotConfig;
|
import org.github.paperspigot.PaperSpigotConfig;
|
||||||
// TacoSpigot end
|
// TacoSpigot end
|
||||||
|
|
||||||
public class BlockStateList {
|
public class BlockStateList {
|
||||||
@ -126,7 +126,7 @@ public class BlockStateList {
|
|||||||
this.a = block;
|
this.a = block;
|
||||||
// TacoSpigot start
|
// TacoSpigot start
|
||||||
this.bAsImmutableMap = immutablemap;
|
this.bAsImmutableMap = immutablemap;
|
||||||
if (TacoSpigotConfig.useArraysForBlockStates) {
|
if (PaperSpigotConfig.useArraysForBlockStates) {
|
||||||
b = new ImmutableArrayMap<>(IBlockState.INDEXER, immutablemap);
|
b = new ImmutableArrayMap<>(IBlockState.INDEXER, immutablemap);
|
||||||
} else {
|
} else {
|
||||||
b = immutablemap;
|
b = immutablemap;
|
||||||
@ -195,7 +195,7 @@ public class BlockStateList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TacoSpigot start
|
// TacoSpigot start
|
||||||
if (TacoSpigotConfig.useArraysForBlockStates) {
|
if (PaperSpigotConfig.useArraysForBlockStates) {
|
||||||
this.c = new ImmutableArrayTable<IBlockState, Comparable, IBlockData> (
|
this.c = new ImmutableArrayTable<IBlockState, Comparable, IBlockData> (
|
||||||
IBlockState.INDEXER,
|
IBlockState.INDEXER,
|
||||||
(IBlockState state, Comparable value) -> state.getValueId(value),
|
(IBlockState state, Comparable value) -> state.getValueId(value),
|
||||||
|
@ -687,6 +687,44 @@ public class Chunk {
|
|||||||
return chunksection == null ? (this.d(blockposition) ? enumskyblock.c : 0) : (enumskyblock == EnumSkyBlock.SKY ? (this.world.worldProvider.o() ? 0 : chunksection.d(i, j & 15, k)) : (enumskyblock == EnumSkyBlock.BLOCK ? chunksection.e(i, j & 15, k) : enumskyblock.c));
|
return chunksection == null ? (this.d(blockposition) ? enumskyblock.c : 0) : (enumskyblock == EnumSkyBlock.SKY ? (this.world.worldProvider.o() ? 0 : chunksection.d(i, j & 15, k)) : (enumskyblock == EnumSkyBlock.BLOCK ? chunksection.e(i, j & 15, k) : enumskyblock.c));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getBrightness(EnumSkyBlock enumskyblock, int blockposition_x, int blockposition_y, int blockposition_z) {
|
||||||
|
int i = blockposition_x & 15;
|
||||||
|
int j = blockposition_y;
|
||||||
|
int k = blockposition_z & 15;
|
||||||
|
ChunkSection chunksection = this.sections[j >> 4];
|
||||||
|
|
||||||
|
if(chunksection == null)
|
||||||
|
{
|
||||||
|
if(j >= this.heightMap[(k) << 4 | (i)])
|
||||||
|
{
|
||||||
|
return enumskyblock.c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(enumskyblock == EnumSkyBlock.SKY)
|
||||||
|
{
|
||||||
|
if(!this.world.worldProvider.o())
|
||||||
|
{
|
||||||
|
return chunksection.d(i, j & 15, k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(enumskyblock == EnumSkyBlock.BLOCK)
|
||||||
|
{
|
||||||
|
return chunksection.e(i, j & 15, k);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return enumskyblock.c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
public void a(EnumSkyBlock enumskyblock, BlockPosition blockposition, int i) {
|
public void a(EnumSkyBlock enumskyblock, BlockPosition blockposition, int i) {
|
||||||
int j = blockposition.getX() & 15;
|
int j = blockposition.getX() & 15;
|
||||||
int k = blockposition.getY();
|
int k = blockposition.getY();
|
||||||
@ -838,9 +876,10 @@ public class Chunk {
|
|||||||
|
|
||||||
public boolean isBelowHeightMap(int blockposition_x, int blockposition_y, int blockposition_z) {
|
public boolean isBelowHeightMap(int blockposition_x, int blockposition_y, int blockposition_z) {
|
||||||
int i = blockposition_x & 15;
|
int i = blockposition_x & 15;
|
||||||
|
int j = blockposition_y;
|
||||||
int k = blockposition_z & 15;
|
int k = blockposition_z & 15;
|
||||||
|
|
||||||
return blockposition_y >= this.heightMap[k << 4 | i];
|
return j >= this.heightMap[k << 4 | i];
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileEntity i(BlockPosition blockposition) {
|
public TileEntity i(BlockPosition blockposition) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.common.base.Functions;
|
import com.google.common.base.Functions;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@ -139,7 +140,7 @@ public abstract class CommandAbstract implements ICommand {
|
|||||||
|
|
||||||
if (entityplayer == null) {
|
if (entityplayer == null) {
|
||||||
try {
|
try {
|
||||||
entityplayer = MinecraftServer.getServer().getPlayerList().a(UUID.fromString(s));
|
entityplayer = MinecraftServer.getServer().getPlayerList().a(FastUUID.parseUUID(s));
|
||||||
} catch (IllegalArgumentException illegalargumentexception) {
|
} catch (IllegalArgumentException illegalargumentexception) {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@ -170,7 +171,7 @@ public abstract class CommandAbstract implements ICommand {
|
|||||||
|
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
try {
|
try {
|
||||||
UUID uuid = UUID.fromString(s);
|
UUID uuid = FastUUID.parseUUID(s);
|
||||||
|
|
||||||
object = minecraftserver.a(uuid);
|
object = minecraftserver.a(uuid);
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
|
@ -475,7 +475,7 @@ public class CommandScoreboard extends CommandAbstract {
|
|||||||
|
|
||||||
for (Object o : list) {
|
for (Object o : list) {
|
||||||
Entity entity = (Entity) o;
|
Entity entity = (Entity) o;
|
||||||
if (!entity.world.tacoSpigotConfig.nonPlayerEntitiesOnScoreboards && !(entity instanceof EntityHuman))
|
if (!entity.world.paperSpigotConfig.nonPlayerEntitiesOnScoreboards && !(entity instanceof EntityHuman))
|
||||||
continue; // TacoSpigot
|
continue; // TacoSpigot
|
||||||
String s2 = e(icommandlistener, entity.getUniqueID().toString());
|
String s2 = e(icommandlistener, entity.getUniqueID().toString());
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.config.SharedConfig;
|
||||||
import com.elevatemc.spigot.console.PandaConsole;
|
import com.elevatemc.spigot.console.PandaConsole;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -159,9 +160,9 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
|||||||
// PandaSpigot - Move SpigotConfig to load earlier, so that we can check IP forwarding status here.
|
// PandaSpigot - Move SpigotConfig to load earlier, so that we can check IP forwarding status here.
|
||||||
// Spigot start
|
// Spigot start
|
||||||
this.a(new DedicatedPlayerList(this));
|
this.a(new DedicatedPlayerList(this));
|
||||||
org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings"));
|
|
||||||
org.spigotmc.SpigotConfig.registerCommands();
|
|
||||||
// Spigot end
|
// Spigot end
|
||||||
|
SharedConfig.registerCommands();
|
||||||
|
|
||||||
java.net.SocketAddress bindAddress;
|
java.net.SocketAddress bindAddress;
|
||||||
if (this.getServerIp().startsWith("unix:")) {
|
if (this.getServerIp().startsWith("unix:")) {
|
||||||
if (!io.netty.channel.epoll.Epoll.isAvailable()) {
|
if (!io.netty.channel.epoll.Epoll.isAvailable()) {
|
||||||
@ -189,12 +190,6 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
|||||||
bindAddress = new java.net.InetSocketAddress(inetaddress, this.R());
|
bindAddress = new java.net.InetSocketAddress(inetaddress, 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");
|
DedicatedServer.LOGGER.info("Generating keypair");
|
||||||
this.a(MinecraftEncryption.b());
|
this.a(MinecraftEncryption.b());
|
||||||
DedicatedServer.LOGGER.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.R());
|
DedicatedServer.LOGGER.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.R());
|
||||||
@ -295,16 +290,6 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
|||||||
this.remoteConsole = new org.bukkit.craftbukkit.command.CraftRemoteConsoleCommandSender(); // CraftBukkit
|
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) {
|
if (org.spigotmc.SpigotConfig.lateBind) {
|
||||||
try {
|
try {
|
||||||
this.aq().bind(bindAddress); // PandaSpigot - Unix domain socket support
|
this.aq().bind(bindAddress); // PandaSpigot - Unix domain socket support
|
||||||
|
@ -4,6 +4,8 @@ import java.util.*;
|
|||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.elevatemc.spigot.util.FastRandom;
|
import com.elevatemc.spigot.util.FastRandom;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -557,7 +559,7 @@ public abstract class Entity implements ICommandListener {
|
|||||||
double xLength = totalArea.d - totalArea.a;
|
double xLength = totalArea.d - totalArea.a;
|
||||||
double yLength = totalArea.e - totalArea.b;
|
double yLength = totalArea.e - totalArea.b;
|
||||||
double zLength = totalArea.f - totalArea.c;
|
double zLength = totalArea.f - totalArea.c;
|
||||||
boolean axisScan = this.world.tacoSpigotConfig.optimizeTntMovement && xLength * yLength * zLength > 10;
|
boolean axisScan = this.world.paperSpigotConfig.optimizeTntMovement && xLength * yLength * zLength > 10;
|
||||||
|
|
||||||
List list = this.world.getCubes(this, axisScan ? this.getBoundingBox().a(0, d1, 0) : totalArea);
|
List list = this.world.getCubes(this, axisScan ? this.getBoundingBox().a(0, d1, 0) : totalArea);
|
||||||
// TacoSpigot end
|
// TacoSpigot end
|
||||||
@ -577,7 +579,7 @@ public abstract class Entity implements ICommandListener {
|
|||||||
Iterator iterator1;
|
Iterator iterator1;
|
||||||
|
|
||||||
// eSpigot start - getCubesNoEntities
|
// eSpigot start - getCubesNoEntities
|
||||||
if(this.world.tacoSpigotConfig.fixEastWest && Math.abs(d0) > Math.abs(d2)) { //TacoSpigot - fix east/west cannoning by calculating the z movement before x if the x velocity is greater
|
if(this.world.paperSpigotConfig.fixEastWest && Math.abs(d0) > Math.abs(d2)) { //TacoSpigot - fix east/west cannoning by calculating the z movement before x if the x velocity is greater
|
||||||
if(axisScan) list = this.world.getCubesNoEntities(this, this.getBoundingBox().a(0, 0, d2)); // TacoSpigot - get z axis blocks
|
if(axisScan) list = this.world.getCubesNoEntities(this, this.getBoundingBox().a(0, 0, d2)); // TacoSpigot - get z axis blocks
|
||||||
|
|
||||||
for (iterator1 = list.iterator(); iterator1.hasNext(); d2 = axisalignedbb2.c(this.getBoundingBox(), d2)) {
|
for (iterator1 = list.iterator(); iterator1.hasNext(); d2 = axisalignedbb2.c(this.getBoundingBox(), d2)) {
|
||||||
@ -1053,13 +1055,13 @@ public abstract class Entity implements ICommandListener {
|
|||||||
for (i = 0; (float) i < 1.0F + this.width * 20.0F; ++i) {
|
for (i = 0; (float) i < 1.0F + this.width * 20.0F; ++i) {
|
||||||
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
||||||
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
||||||
this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + (double) f2, f1 + 1.0F, this.locZ + (double) f3, this.motX, this.motY - (double) (this.random.nextFloat() * 0.2F), this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + (double) f2, f1 + 1.0F, this.locZ + (double) f3, this.motX, this.motY - (double) (this.random.nextFloat() * 0.2F), this.motZ, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; (float) i < 1.0F + this.width * 20.0F; ++i) {
|
for (i = 0; (float) i < 1.0F + this.width * 20.0F; ++i) {
|
||||||
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
||||||
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
f3 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width;
|
||||||
this.world.addParticle(EnumParticle.WATER_SPLASH, this.locX + (double) f2, f1 + 1.0F, this.locZ + (double) f3, this.motX, this.motY, this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.WATER_SPLASH, this.locX + (double) f2, f1 + 1.0F, this.locZ + (double) f3, this.motX, this.motY, this.motZ, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1440,7 +1442,7 @@ public abstract class Entity implements ICommandListener {
|
|||||||
if (nbttagcompound.hasKeyOfType("UUIDMost", 4) && nbttagcompound.hasKeyOfType("UUIDLeast", 4)) {
|
if (nbttagcompound.hasKeyOfType("UUIDMost", 4) && nbttagcompound.hasKeyOfType("UUIDLeast", 4)) {
|
||||||
this.uniqueID = new UUID(nbttagcompound.getLong("UUIDMost"), nbttagcompound.getLong("UUIDLeast"));
|
this.uniqueID = new UUID(nbttagcompound.getLong("UUIDMost"), nbttagcompound.getLong("UUIDLeast"));
|
||||||
} else if (nbttagcompound.hasKeyOfType("UUID", 8)) {
|
} else if (nbttagcompound.hasKeyOfType("UUID", 8)) {
|
||||||
this.uniqueID = UUID.fromString(nbttagcompound.getString("UUID"));
|
this.uniqueID = FastUUID.parseUUID(nbttagcompound.getString("UUID"));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setPosition(this.locX, this.locY, this.locZ);
|
this.setPosition(this.locX, this.locY, this.locZ);
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public abstract class EntityAgeable extends EntityCreature {
|
public abstract class EntityAgeable extends EntityCreature {
|
||||||
|
|
||||||
protected int a;
|
protected int a;
|
||||||
@ -140,7 +142,7 @@ public abstract class EntityAgeable extends EntityCreature {
|
|||||||
if (this.world.isClientSide || ageLocked) { // CraftBukkit
|
if (this.world.isClientSide || ageLocked) { // CraftBukkit
|
||||||
if (this.c > 0) {
|
if (this.c > 0) {
|
||||||
if (this.c % 4 == 0) {
|
if (this.c % 4 == 0) {
|
||||||
this.world.addParticle(EnumParticle.VILLAGER_HAPPY, 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, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.VILLAGER_HAPPY, 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, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
--this.c;
|
--this.c;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public abstract class EntityAnimal extends EntityAgeable implements IAnimal {
|
public abstract class EntityAnimal extends EntityAgeable implements IAnimal {
|
||||||
|
|
||||||
protected Block bn;
|
protected Block bn;
|
||||||
@ -32,7 +34,7 @@ public abstract class EntityAnimal extends EntityAgeable implements IAnimal {
|
|||||||
double d1 = this.random.nextGaussian() * 0.02D;
|
double d1 = this.random.nextGaussian() * 0.02D;
|
||||||
double d2 = this.random.nextGaussian() * 0.02D;
|
double d2 = this.random.nextGaussian() * 0.02D;
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.HEART, 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]);
|
this.world.addParticle(EnumParticle.HEART, 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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -714,7 +714,7 @@ public class EntityArmorStand extends EntityLiving {
|
|||||||
// TacoSpigot start - add an option to make armor stands not move
|
// TacoSpigot start - add an option to make armor stands not move
|
||||||
@Override
|
@Override
|
||||||
public void move(double motX, double motY, double motZ) {
|
public void move(double motX, double motY, double motZ) {
|
||||||
if (getWorld().tacoSpigotConfig.optimizeArmorStandMovement) return;
|
if (getWorld().paperSpigotConfig.optimizeArmorStandMovement) return;
|
||||||
super.move(motX, motY, motZ);
|
super.move(motX, motY, motZ);
|
||||||
}
|
}
|
||||||
// TacoSpigot end
|
// TacoSpigot end
|
||||||
|
@ -3,6 +3,7 @@ package net.minecraft.server;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.event.entity.EntityCombustByEntityEvent;
|
import org.bukkit.event.entity.EntityCombustByEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerPickupItemEvent;
|
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||||
@ -342,7 +343,7 @@ public class EntityArrow extends Entity implements IProjectile {
|
|||||||
|
|
||||||
if (this.isCritical()) {
|
if (this.isCritical()) {
|
||||||
for (j = 0; j < 4; ++j) {
|
for (j = 0; j < 4; ++j) {
|
||||||
this.world.addParticle(EnumParticle.CRIT, this.locX + this.motX * (double) j / 4.0D, this.locY + this.motY * (double) j / 4.0D, this.locZ + this.motZ * (double) j / 4.0D, -this.motX, -this.motY + 0.2D, -this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.CRIT, this.locX + this.motX * (double) j / 4.0D, this.locY + this.motY * (double) j / 4.0D, this.locZ + this.motZ * (double) j / 4.0D, -this.motX, -this.motY + 0.2D, -this.motZ, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,7 +376,7 @@ public class EntityArrow extends Entity implements IProjectile {
|
|||||||
if (this.V()) {
|
if (this.V()) {
|
||||||
for (int l = 0; l < 4; ++l) {
|
for (int l = 0; l < 4; ++l) {
|
||||||
f3 = 0.25F;
|
f3 = 0.25F;
|
||||||
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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
f4 = 0.6F;
|
f4 = 0.6F;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class EntityBlaze extends EntityMonster {
|
public class EntityBlaze extends EntityMonster {
|
||||||
|
|
||||||
private float a = 0.5F;
|
private float a = 0.5F;
|
||||||
@ -57,7 +59,7 @@ public class EntityBlaze extends EntityMonster {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i) {
|
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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package net.minecraft.server;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||||
import org.bukkit.entity.Vehicle;
|
import org.bukkit.entity.Vehicle;
|
||||||
@ -200,11 +201,11 @@ public class EntityBoat extends Entity {
|
|||||||
if (this.random.nextBoolean()) {
|
if (this.random.nextBoolean()) {
|
||||||
d8 = this.locX - d4 * d6 * 0.8D + d5 * d7;
|
d8 = this.locX - d4 * d6 * 0.8D + d5 * d7;
|
||||||
d9 = this.locZ - d5 * d6 * 0.8D - d4 * d7;
|
d9 = this.locZ - d5 * d6 * 0.8D - d4 * d7;
|
||||||
this.world.addParticle(EnumParticle.WATER_SPLASH, d8, this.locY - 0.125D, d9, this.motX, this.motY, this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.WATER_SPLASH, d8, this.locY - 0.125D, d9, this.motX, this.motY, this.motZ, Constants.EMPTY_ARRAY);
|
||||||
} else {
|
} else {
|
||||||
d8 = this.locX + d4 + d5 * d6 * 0.7D;
|
d8 = this.locX + d4 + d5 * d6 * 0.7D;
|
||||||
d9 = this.locZ + d5 - d4 * d6 * 0.7D;
|
d9 = this.locZ + d5 - d4 * d6 * 0.7D;
|
||||||
this.world.addParticle(EnumParticle.WATER_SPLASH, d8, this.locY - 0.125D, d9, this.motX, this.motY, this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.WATER_SPLASH, d8, this.locY - 0.125D, d9, this.motX, this.motY, this.motZ, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package net.minecraft.server;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.elevatemc.spigot.pathsearch.jobs.PathSearchJob;
|
import com.elevatemc.spigot.pathsearch.jobs.PathSearchJob;
|
||||||
import com.elevatemc.spigot.pathsearch.jobs.PathSearchJobEntity;
|
import com.elevatemc.spigot.pathsearch.jobs.PathSearchJobEntity;
|
||||||
import com.elevatemc.spigot.pathsearch.jobs.PathSearchJobPosition;
|
import com.elevatemc.spigot.pathsearch.jobs.PathSearchJobPosition;
|
||||||
@ -12,7 +13,7 @@ import org.bukkit.event.entity.EntityUnleashEvent;
|
|||||||
|
|
||||||
public abstract class EntityCreature extends EntityInsentient {
|
public abstract class EntityCreature extends EntityInsentient {
|
||||||
|
|
||||||
public static final UUID bk = UUID.fromString("E199AD21-BA8A-4C53-8D13-6182D5C69D3A");
|
public static final UUID bk = FastUUID.parseUUID("E199AD21-BA8A-4C53-8D13-6182D5C69D3A");
|
||||||
public static final AttributeModifier bl = (new AttributeModifier(EntityCreature.bk, "Fleeing speed bonus", 2.0D, 2)).a(false);
|
public static final AttributeModifier bl = (new AttributeModifier(EntityCreature.bk, "Fleeing speed bonus", 2.0D, 2)).a(false);
|
||||||
private BlockPosition a;
|
private BlockPosition a;
|
||||||
private float b;
|
private float b;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -99,7 +100,7 @@ public class EntityEnderDragon extends EntityInsentient implements IComplex, IMo
|
|||||||
f = (this.random.nextFloat() - 0.5F) * 8.0F;
|
f = (this.random.nextFloat() - 0.5F) * 8.0F;
|
||||||
f1 = (this.random.nextFloat() - 0.5F) * 4.0F;
|
f1 = (this.random.nextFloat() - 0.5F) * 4.0F;
|
||||||
f2 = (this.random.nextFloat() - 0.5F) * 8.0F;
|
f2 = (this.random.nextFloat() - 0.5F) * 8.0F;
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, this.locX + (double) f, this.locY + 2.0D + (double) f1, this.locZ + (double) f2, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, this.locX + (double) f, this.locY + 2.0D + (double) f1, this.locZ + (double) f2, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
} else {
|
} else {
|
||||||
this.n();
|
this.n();
|
||||||
f = 0.2F / (MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 10.0F + 1.0F);
|
f = 0.2F / (MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 10.0F + 1.0F);
|
||||||
@ -498,7 +499,7 @@ public class EntityEnderDragon extends EntityInsentient implements IComplex, IMo
|
|||||||
double d1 = axisalignedbb.b + (axisalignedbb.e - axisalignedbb.b) * (double) this.random.nextFloat();
|
double d1 = axisalignedbb.b + (axisalignedbb.e - axisalignedbb.b) * (double) this.random.nextFloat();
|
||||||
double d2 = axisalignedbb.c + (axisalignedbb.f - axisalignedbb.c) * (double) this.random.nextFloat();
|
double d2 = axisalignedbb.c + (axisalignedbb.f - axisalignedbb.c) * (double) this.random.nextFloat();
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, d0, d1, d2, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, d0, d1, d2, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
return flag;
|
return flag;
|
||||||
@ -548,7 +549,7 @@ public class EntityEnderDragon extends EntityInsentient implements IComplex, IMo
|
|||||||
float f1 = (this.random.nextFloat() - 0.5F) * 4.0F;
|
float f1 = (this.random.nextFloat() - 0.5F) * 4.0F;
|
||||||
float f2 = (this.random.nextFloat() - 0.5F) * 8.0F;
|
float f2 = (this.random.nextFloat() - 0.5F) * 8.0F;
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_HUGE, this.locX + (double) f, this.locY + 2.0D + (double) f1, this.locZ + (double) f2, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_HUGE, this.locX + (double) f, this.locY + 2.0D + (double) f1, this.locZ + (double) f2, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean flag = this.world.getGameRules().getBoolean("doMobLoot");
|
boolean flag = this.world.getGameRules().getBoolean("doMobLoot");
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class EntityEnderSignal extends Entity {
|
public class EntityEnderSignal extends Entity {
|
||||||
|
|
||||||
private double a;
|
private double a;
|
||||||
@ -99,10 +101,10 @@ public class EntityEnderSignal extends Entity {
|
|||||||
|
|
||||||
if (this.V()) {
|
if (this.V()) {
|
||||||
for (int i = 0; i < 4; ++i) {
|
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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
} else {
|
} 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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.world.isClientSide) {
|
if (!this.world.isClientSide) {
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -15,7 +16,7 @@ import org.bukkit.event.entity.EntityTeleportEvent;
|
|||||||
|
|
||||||
public class EntityEnderman extends EntityMonster {
|
public class EntityEnderman extends EntityMonster {
|
||||||
|
|
||||||
private static final UUID a = UUID.fromString("020E0DFB-87AE-4653-9556-831010E291A0");
|
private static final UUID a = FastUUID.parseUUID("020E0DFB-87AE-4653-9556-831010E291A0");
|
||||||
private static final AttributeModifier b = (new AttributeModifier(EntityEnderman.a, "Attacking speed boost", 0.15000000596046448D, 0)).a(false);
|
private static final AttributeModifier b = (new AttributeModifier(EntityEnderman.a, "Attacking speed boost", 0.15000000596046448D, 0)).a(false);
|
||||||
private static final Set<Block> c = Sets.newIdentityHashSet();
|
private static final Set<Block> c = Sets.newIdentityHashSet();
|
||||||
private boolean bm;
|
private boolean bm;
|
||||||
@ -104,7 +105,7 @@ public class EntityEnderman extends EntityMonster {
|
|||||||
public void m() {
|
public void m() {
|
||||||
if (this.world.isClientSide) {
|
if (this.world.isClientSide) {
|
||||||
for (int i = 0; i < 2; ++i) {
|
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 - 0.25D, 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]);
|
this.world.addParticle(EnumParticle.PORTAL, this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width, this.locY + this.random.nextDouble() * (double) this.length - 0.25D, 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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,7 +215,7 @@ public class EntityEnderman extends EntityMonster {
|
|||||||
double d8 = d4 + (this.locY - d4) * d6 + this.random.nextDouble() * (double) this.length;
|
double d8 = d4 + (this.locY - d4) * d6 + this.random.nextDouble() * (double) this.length;
|
||||||
double d9 = d5 + (this.locZ - d5) * d6 + (this.random.nextDouble() - 0.5D) * (double) this.width * 2.0D;
|
double d9 = d5 + (this.locZ - d5) * d6 + (this.random.nextDouble() - 0.5D) * (double) this.width * 2.0D;
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.PORTAL, d7, d8, d9, f, f1, f2, new int[0]);
|
this.world.addParticle(EnumParticle.PORTAL, d7, d8, d9, f, f1, f2, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.world.makeSound(d3, d4, d5, "mob.endermen.portal", 1.0F, 1.0F);
|
this.world.makeSound(d3, d4, d5, "mob.endermen.portal", 1.0F, 1.0F);
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class EntityEndermite extends EntityMonster {
|
public class EntityEndermite extends EntityMonster {
|
||||||
|
|
||||||
private int a = 0;
|
private int a = 0;
|
||||||
@ -82,7 +84,7 @@ public class EntityEndermite extends EntityMonster {
|
|||||||
super.m();
|
super.m();
|
||||||
if (this.world.isClientSide) {
|
if (this.world.isClientSide) {
|
||||||
for (int i = 0; i < 2; ++i) {
|
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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!this.isPersistent()) {
|
if (!this.isPersistent()) {
|
||||||
|
@ -113,7 +113,7 @@ public class EntityFallingBlock extends Entity {
|
|||||||
if (this.world.getType(blockposition).getBlock() != Blocks.PISTON_EXTENSION) {
|
if (this.world.getType(blockposition).getBlock() != Blocks.PISTON_EXTENSION) {
|
||||||
this.die();
|
this.die();
|
||||||
if (!this.e) {
|
if (!this.e) {
|
||||||
if (this.world.a(block, blockposition, true, EnumDirection.UP, null, null) && !BlockFalling.canFall(this.world, blockposition.down()) /* mimic the false conditions of setTypeIdAndData */ && blockposition.getX() >= -30000000 && blockposition.getZ() >= -30000000 && blockposition.getX() < 30000000 && blockposition.getZ() < 30000000 && blockposition.getY() >= 0 && blockposition.getY() < (this.world.tacoSpigotConfig.disableFallingBlockStackingAt256 ? 255 : 256) && this.world.getType(blockposition) != this.block) {
|
if (this.world.a(block, blockposition, true, EnumDirection.UP, null, null) && !BlockFalling.canFall(this.world, blockposition.down()) /* mimic the false conditions of setTypeIdAndData */ && blockposition.getX() >= -30000000 && blockposition.getZ() >= -30000000 && blockposition.getX() < 30000000 && blockposition.getZ() < 30000000 && blockposition.getY() >= 0 && blockposition.getY() < (this.world.paperSpigotConfig.disableFallingBlockStackingAt256 ? 255 : 256) && this.world.getType(blockposition) != this.block) {
|
||||||
if (CraftEventFactory.callEntityChangeBlockEvent(this, blockposition.getX(), blockposition.getY(), blockposition.getZ(), this.block.getBlock(), this.block.getBlock().toLegacyData(this.block)).isCancelled()) {
|
if (CraftEventFactory.callEntityChangeBlockEvent(this, blockposition.getX(), blockposition.getY(), blockposition.getZ(), this.block.getBlock(), this.block.getBlock().toLegacyData(this.block)).isCancelled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package net.minecraft.server;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
||||||
|
|
||||||
public abstract class EntityFireball extends Entity {
|
public abstract class EntityFireball extends Entity {
|
||||||
@ -166,7 +167,7 @@ public abstract class EntityFireball extends Entity {
|
|||||||
for (int j = 0; j < 4; ++j) {
|
for (int j = 0; j < 4; ++j) {
|
||||||
float f3 = 0.25F;
|
float f3 = 0.25F;
|
||||||
|
|
||||||
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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
f2 = 0.8F;
|
f2 = 0.8F;
|
||||||
@ -178,7 +179,7 @@ public abstract class EntityFireball extends Entity {
|
|||||||
this.motX *= f2;
|
this.motX *= f2;
|
||||||
this.motY *= f2;
|
this.motY *= f2;
|
||||||
this.motZ *= f2;
|
this.motZ *= f2;
|
||||||
this.world.addParticle(EnumParticle.SMOKE_NORMAL, this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.SMOKE_NORMAL, this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
this.setPosition(this.locX, this.locY, this.locZ);
|
this.setPosition(this.locX, this.locY, this.locZ);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class EntityFireworks extends Entity {
|
public class EntityFireworks extends Entity {
|
||||||
|
|
||||||
private int ticksFlown;
|
private int ticksFlown;
|
||||||
@ -82,7 +84,7 @@ public class EntityFireworks extends Entity {
|
|||||||
|
|
||||||
++this.ticksFlown;
|
++this.ticksFlown;
|
||||||
if (this.world.isClientSide && this.ticksFlown % 2 < 2) {
|
if (this.world.isClientSide && this.ticksFlown % 2 < 2) {
|
||||||
this.world.addParticle(EnumParticle.FIREWORKS_SPARK, this.locX, this.locY - 0.3D, this.locZ, this.random.nextGaussian() * 0.05D, -this.motY * 0.5D, this.random.nextGaussian() * 0.05D, new int[0]);
|
this.world.addParticle(EnumParticle.FIREWORKS_SPARK, this.locX, this.locY - 0.3D, this.locZ, this.random.nextGaussian() * 0.05D, -this.motY * 0.5D, this.random.nextGaussian() * 0.05D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.world.isClientSide && this.ticksFlown > this.expectedLifespan) {
|
if (!this.world.isClientSide && this.ticksFlown > this.expectedLifespan) {
|
||||||
|
@ -4,6 +4,7 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Fish;
|
import org.bukkit.entity.Fish;
|
||||||
import org.bukkit.event.player.PlayerFishEvent;
|
import org.bukkit.event.player.PlayerFishEvent;
|
||||||
@ -288,8 +289,8 @@ public class EntityFishingHook extends Entity {
|
|||||||
this.motY -= 0.20000000298023224D;
|
this.motY -= 0.20000000298023224D;
|
||||||
this.makeSound("random.splash", 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
|
this.makeSound("random.splash", 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
|
||||||
f3 = (float) MathHelper.floor(this.getBoundingBox().b);
|
f3 = (float) MathHelper.floor(this.getBoundingBox().b);
|
||||||
worldserver.a(EnumParticle.WATER_BUBBLE, this.locX, f3 + 1.0F, this.locZ, (int) (1.0F + this.width * 20.0F), this.width, 0.0D, this.width, 0.20000000298023224D, new int[0]);
|
worldserver.a(EnumParticle.WATER_BUBBLE, this.locX, f3 + 1.0F, this.locZ, (int) (1.0F + this.width * 20.0F), this.width, 0.0D, this.width, 0.20000000298023224D, Constants.EMPTY_ARRAY);
|
||||||
worldserver.a(EnumParticle.WATER_WAKE, this.locX, f3 + 1.0F, this.locZ, (int) (1.0F + this.width * 20.0F), this.width, 0.0D, this.width, 0.20000000298023224D, new int[0]);
|
worldserver.a(EnumParticle.WATER_WAKE, this.locX, f3 + 1.0F, this.locZ, (int) (1.0F + this.width * 20.0F), this.width, 0.0D, this.width, 0.20000000298023224D, Constants.EMPTY_ARRAY);
|
||||||
this.av = MathHelper.nextInt(this.random, 10, 30);
|
this.av = MathHelper.nextInt(this.random, 10, 30);
|
||||||
} else {
|
} else {
|
||||||
this.ay = (float) ((double) this.ay + this.random.nextGaussian() * 4.0D);
|
this.ay = (float) ((double) this.ay + this.random.nextGaussian() * 4.0D);
|
||||||
@ -302,14 +303,14 @@ public class EntityFishingHook extends Entity {
|
|||||||
block = worldserver.getType(new BlockPosition((int) d8, (int) d12 - 1, (int) d11)).getBlock();
|
block = worldserver.getType(new BlockPosition((int) d8, (int) d12 - 1, (int) d11)).getBlock();
|
||||||
if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) {
|
if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) {
|
||||||
if (this.random.nextFloat() < 0.15F) {
|
if (this.random.nextFloat() < 0.15F) {
|
||||||
worldserver.a(EnumParticle.WATER_BUBBLE, d8, d12 - 0.10000000149011612D, d11, 1, f5, 0.1D, f4, 0.0D, new int[0]);
|
worldserver.a(EnumParticle.WATER_BUBBLE, d8, d12 - 0.10000000149011612D, d11, 1, f5, 0.1D, f4, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
float f6 = f5 * 0.04F;
|
float f6 = f5 * 0.04F;
|
||||||
float f7 = f4 * 0.04F;
|
float f7 = f4 * 0.04F;
|
||||||
|
|
||||||
worldserver.a(EnumParticle.WATER_WAKE, d8, d12, d11, 0, f7, 0.01D, -f6, 1.0D, new int[0]);
|
worldserver.a(EnumParticle.WATER_WAKE, d8, d12, d11, 0, f7, 0.01D, -f6, 1.0D, Constants.EMPTY_ARRAY);
|
||||||
worldserver.a(EnumParticle.WATER_WAKE, d8, d12, d11, 0, -f7, 0.01D, f6, 1.0D, new int[0]);
|
worldserver.a(EnumParticle.WATER_WAKE, d8, d12, d11, 0, -f7, 0.01D, f6, 1.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (this.aw > 0) {
|
} else if (this.aw > 0) {
|
||||||
@ -331,7 +332,7 @@ public class EntityFishingHook extends Entity {
|
|||||||
d11 = this.locZ + (double) (MathHelper.cos(f5) * f4 * 0.1F);
|
d11 = this.locZ + (double) (MathHelper.cos(f5) * f4 * 0.1F);
|
||||||
block = worldserver.getType(new BlockPosition((int) d8, (int) d12 - 1, (int) d11)).getBlock();
|
block = worldserver.getType(new BlockPosition((int) d8, (int) d12 - 1, (int) d11)).getBlock();
|
||||||
if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) {
|
if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) {
|
||||||
worldserver.a(EnumParticle.WATER_SPLASH, d8, d12, d11, 2 + this.random.nextInt(2), 0.10000000149011612D, 0.0D, 0.10000000149011612D, 0.0D, new int[0]);
|
worldserver.a(EnumParticle.WATER_SPLASH, d8, d12, d11, 2 + this.random.nextInt(2), 0.10000000149011612D, 0.0D, 0.10000000149011612D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -211,7 +212,7 @@ public class EntityGuardian extends EntityMonster {
|
|||||||
Vec3D vec3d = this.d(0.0F);
|
Vec3D vec3d = this.d(0.0F);
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i) {
|
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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +239,7 @@ public class EntityGuardian extends EntityMonster {
|
|||||||
|
|
||||||
while (d5 < d4) {
|
while (d5 < d4) {
|
||||||
d5 += 1.8D - d0 + this.random.nextDouble() * (1.7D - d0);
|
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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import java.util.UUID;
|
|||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
import com.elevatemc.spigot.pathsearch.AsyncNavigation;
|
import com.elevatemc.spigot.pathsearch.AsyncNavigation;
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||||
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
||||||
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
||||||
@ -184,7 +185,7 @@ public abstract class EntityInsentient extends EntityLiving {
|
|||||||
double d2 = this.random.nextGaussian() * 0.02D;
|
double d2 = this.random.nextGaussian() * 0.02D;
|
||||||
double d3 = 10.0D;
|
double d3 = 10.0D;
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_NORMAL, this.locX + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width - d0 * d3, this.locY + (double) (this.random.nextFloat() * this.length) - d1 * d3, this.locZ + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width - d2 * d3, d0, d1, d2, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_NORMAL, this.locX + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width - d0 * d3, this.locY + (double) (this.random.nextFloat() * this.length) - d1 * d3, this.locZ + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width - d2 * d3, d0, d1, d2, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.world.broadcastEntityEffect(this, (byte) 20);
|
this.world.broadcastEntityEffect(this, (byte) 20);
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
import com.elevatemc.spigot.config.eSpigotConfig;
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@ -28,14 +31,13 @@ import org.bukkit.event.vehicle.VehicleExitEvent;
|
|||||||
|
|
||||||
// PaperSpigot start
|
// PaperSpigot start
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import com.elevatemc.spigot.eSpigotFeature;
|
|
||||||
import com.elevatemc.spigot.eSpigot;
|
import com.elevatemc.spigot.eSpigot;
|
||||||
import org.spigotmc.event.entity.EntityDismountEvent;
|
import org.spigotmc.event.entity.EntityDismountEvent;
|
||||||
// PaperSpigot end
|
// PaperSpigot end
|
||||||
|
|
||||||
public abstract class EntityLiving extends Entity {
|
public abstract class EntityLiving extends Entity {
|
||||||
|
|
||||||
private static final UUID a = UUID.fromString("662A6B8D-DA3E-4C1C-8813-96EA6097278D");
|
private static final UUID a = FastUUID.parseUUID("662A6B8D-DA3E-4C1C-8813-96EA6097278D");
|
||||||
private static final AttributeModifier b = (new AttributeModifier(EntityLiving.a, "Sprinting speed boost", 0.30000001192092896D, 2)).a(false);
|
private static final AttributeModifier b = (new AttributeModifier(EntityLiving.a, "Sprinting speed boost", 0.30000001192092896D, 2)).a(false);
|
||||||
private AttributeMapBase c;
|
private AttributeMapBase c;
|
||||||
public CombatTracker combatTracker = new CombatTracker(this);
|
public CombatTracker combatTracker = new CombatTracker(this);
|
||||||
@ -214,7 +216,7 @@ public abstract class EntityLiving extends Entity {
|
|||||||
float f1 = this.random.nextFloat() - this.random.nextFloat();
|
float f1 = this.random.nextFloat() - this.random.nextFloat();
|
||||||
float f2 = this.random.nextFloat() - this.random.nextFloat();
|
float f2 = this.random.nextFloat() - this.random.nextFloat();
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, this.motX, this.motY, this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, this.motX, this.motY, this.motZ, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.damageEntity(DamageSource.DROWN, 2.0F);
|
this.damageEntity(DamageSource.DROWN, 2.0F);
|
||||||
@ -315,7 +317,7 @@ public abstract class EntityLiving extends Entity {
|
|||||||
double d1 = this.random.nextGaussian() * 0.02D;
|
double d1 = this.random.nextGaussian() * 0.02D;
|
||||||
double d2 = this.random.nextGaussian() * 0.02D;
|
double d2 = this.random.nextGaussian() * 0.02D;
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_NORMAL, this.locX + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width, this.locY + (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]);
|
this.world.addParticle(EnumParticle.EXPLOSION_NORMAL, this.locX + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width, this.locY + (double) (this.random.nextFloat() * this.length), this.locZ + (double) (this.random.nextFloat() * this.width * 2.0F) - (double) this.width, d0, d1, d2, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,7 +541,7 @@ public abstract class EntityLiving extends Entity {
|
|||||||
double d1 = (double) (i >> 8 & 255) / 255.0D;
|
double d1 = (double) (i >> 8 & 255) / 255.0D;
|
||||||
double d2 = (double) (i & 255) / 255.0D;
|
double d2 = (double) (i & 255) / 255.0D;
|
||||||
|
|
||||||
this.world.addParticle(flag ? EnumParticle.SPELL_MOB_AMBIENT : EnumParticle.SPELL_MOB, 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, d0, d1, d2, new int[0]);
|
this.world.addParticle(flag ? EnumParticle.SPELL_MOB_AMBIENT : EnumParticle.SPELL_MOB, 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, d0, d1, d2, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1664,7 +1666,7 @@ public abstract class EntityLiving extends Entity {
|
|||||||
this.ba = 0.0F;
|
this.ba = 0.0F;
|
||||||
this.bb = 0.0F;
|
this.bb = 0.0F;
|
||||||
} else if (this.bM()) {
|
} else if (this.bM()) {
|
||||||
if (eSpigotFeature.MOB_AI.isEnabled() || this instanceof EntityHuman) {
|
if (eSpigotConfig.mobAI || this instanceof EntityHuman) {
|
||||||
this.world.methodProfiler.a("newAi");
|
this.world.methodProfiler.a("newAi");
|
||||||
this.doTick();
|
this.doTick();
|
||||||
this.world.methodProfiler.b();
|
this.world.methodProfiler.b();
|
||||||
@ -1704,7 +1706,7 @@ public abstract class EntityLiving extends Entity {
|
|||||||
protected void doTick() {}
|
protected void doTick() {}
|
||||||
|
|
||||||
protected void bL() {
|
protected void bL() {
|
||||||
if (!eSpigotFeature.ENTITY_COLLISION.isEnabled())
|
if (!eSpigotConfig.entityCollisions)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
List list = this.world.a(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D), Predicates.and(IEntitySelector.d, new Predicate() {
|
List list = this.world.a(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D), Predicates.and(IEntitySelector.d, new Predicate() {
|
||||||
@ -1871,7 +1873,7 @@ public abstract class EntityLiving extends Entity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ScoreboardTeamBase getScoreboardTeam() {
|
public ScoreboardTeamBase getScoreboardTeam() {
|
||||||
if (!this.world.tacoSpigotConfig.nonPlayerEntitiesOnScoreboards && !(this instanceof EntityHuman)) return null; // TacoSpigot
|
if (!this.world.paperSpigotConfig.nonPlayerEntitiesOnScoreboards && !(this instanceof EntityHuman)) return null; // TacoSpigot
|
||||||
return this.world.getScoreboard().getPlayerTeam(this.getUniqueID().toString());
|
return this.world.getScoreboard().getPlayerTeam(this.getUniqueID().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class EntityMinecartFurnace extends EntityMinecartAbstract {
|
public class EntityMinecartFurnace extends EntityMinecartAbstract {
|
||||||
|
|
||||||
private int c;
|
private int c;
|
||||||
@ -35,7 +37,7 @@ public class EntityMinecartFurnace extends EntityMinecartAbstract {
|
|||||||
|
|
||||||
this.i(this.c > 0);
|
this.i(this.c > 0);
|
||||||
if (this.j() && this.random.nextInt(4) == 0) {
|
if (this.j() && this.random.nextInt(4) == 0) {
|
||||||
this.world.addParticle(EnumParticle.SMOKE_LARGE, this.locX, this.locY + 0.8D, this.locZ, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.SMOKE_LARGE, this.locX, this.locY + 0.8D, this.locZ, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class EntityMinecartTNT extends EntityMinecartAbstract {
|
public class EntityMinecartTNT extends EntityMinecartAbstract {
|
||||||
|
|
||||||
private int a = -1;
|
private int a = -1;
|
||||||
@ -24,7 +26,7 @@ public class EntityMinecartTNT extends EntityMinecartAbstract {
|
|||||||
super.t_();
|
super.t_();
|
||||||
if (this.a > 0) {
|
if (this.a > 0) {
|
||||||
--this.a;
|
--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]);
|
this.world.addParticle(EnumParticle.SMOKE_NORMAL, this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
} else if (this.a == 0) {
|
} else if (this.a == 0) {
|
||||||
this.b(this.motX * this.motX + this.motZ * this.motZ);
|
this.b(this.motX * this.motX + this.motZ * this.motZ);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.event.player.PlayerShearEntityEvent; // CraftBukkit
|
import org.bukkit.event.player.PlayerShearEntityEvent; // CraftBukkit
|
||||||
|
|
||||||
public class EntityMushroomCow extends EntityCow {
|
public class EntityMushroomCow extends EntityCow {
|
||||||
@ -35,7 +36,7 @@ public class EntityMushroomCow extends EntityCow {
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
this.die();
|
this.die();
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, this.locX, this.locY + (double) (this.length / 2.0F), this.locZ, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, this.locX, this.locY + (double) (this.length / 2.0F), this.locZ, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
if (!this.world.isClientSide) {
|
if (!this.world.isClientSide) {
|
||||||
EntityCow entitycow = new EntityCow(this.world);
|
EntityCow entitycow = new EntityCow(this.world);
|
||||||
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class EntityPigZombie extends EntityZombie {
|
public class EntityPigZombie extends EntityZombie {
|
||||||
|
|
||||||
private static final UUID b = UUID.fromString("49455A49-7EC5-45BA-B886-3B90B23A1718");
|
private static final UUID b = FastUUID.parseUUID("49455A49-7EC5-45BA-B886-3B90B23A1718");
|
||||||
private static final AttributeModifier c = (new AttributeModifier(EntityPigZombie.b, "Attacking speed boost", 0.05D, 0)).a(false);
|
private static final AttributeModifier c = (new AttributeModifier(EntityPigZombie.b, "Attacking speed boost", 0.05D, 0)).a(false);
|
||||||
public int angerLevel;
|
public int angerLevel;
|
||||||
private int soundDelay;
|
private int soundDelay;
|
||||||
@ -92,7 +94,7 @@ public class EntityPigZombie extends EntityZombie {
|
|||||||
String s = nbttagcompound.getString("HurtBy");
|
String s = nbttagcompound.getString("HurtBy");
|
||||||
|
|
||||||
if (s.length() > 0) {
|
if (s.length() > 0) {
|
||||||
this.hurtBy = UUID.fromString(s);
|
this.hurtBy = FastUUID.parseUUID(s);
|
||||||
EntityHuman entityhuman = this.world.b(this.hurtBy);
|
EntityHuman entityhuman = this.world.b(this.hurtBy);
|
||||||
|
|
||||||
this.b((EntityLiving) entityhuman);
|
this.b((EntityLiving) entityhuman);
|
||||||
|
@ -8,6 +8,7 @@ import io.netty.buffer.Unpooled;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import com.elevatemc.spigot.eSpigot;
|
import com.elevatemc.spigot.eSpigot;
|
||||||
|
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
@ -192,6 +193,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|||||||
this.playerConnection.sendPacket(new PacketPlayOutCombatEvent(this.bs(), PacketPlayOutCombatEvent.EnumCombatEventType.END_COMBAT));
|
this.playerConnection.sendPacket(new PacketPlayOutCombatEvent(this.bs(), PacketPlayOutCombatEvent.EnumCombatEventType.END_COMBAT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long chunkToLong(int chunkX, int chunkZ)
|
||||||
|
{
|
||||||
|
return (chunkX << 32L) + chunkZ - -2147483648L;
|
||||||
|
}
|
||||||
|
|
||||||
public void t_() {
|
public void t_() {
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
if (this.joining) {
|
if (this.joining) {
|
||||||
@ -231,49 +237,71 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!this.chunkCoordIntPairQueue.isEmpty()) {
|
if (!this.chunkCoordIntPairQueue.isEmpty()) {
|
||||||
ArrayList arraylist = Lists.newArrayList();
|
ArrayList<Chunk> chunkList = Lists.newArrayList();
|
||||||
Iterator iterator1 = this.chunkCoordIntPairQueue.iterator();
|
Iterator<ChunkCoordIntPair> chunksToLoad = this.chunkCoordIntPairQueue.iterator();
|
||||||
ArrayList arraylist1 = Lists.newArrayList();
|
ArrayList<TileEntity> tileEntities = Lists.newArrayList();
|
||||||
|
|
||||||
Chunk chunk;
|
Chunk chunk = null;
|
||||||
|
|
||||||
while (iterator1.hasNext() && arraylist.size() < this.world.spigotConfig.maxBulkChunk) { // Spigot
|
while (chunksToLoad.hasNext() && chunkList.size() < this.world.spigotConfig.maxBulkChunk) { // Spigot
|
||||||
ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator1.next();
|
ChunkCoordIntPair chunkcoordintpair = chunksToLoad.next();
|
||||||
|
|
||||||
if (chunkcoordintpair != null) {
|
if (chunkcoordintpair != null) {
|
||||||
if (this.world.isLoaded(new BlockPosition(chunkcoordintpair.x << 4, 0, chunkcoordintpair.z << 4))) {
|
if (this.world.isLoaded(chunkcoordintpair.x << 4, 0, chunkcoordintpair.z << 4)) {// [Nacho-0024] Do not create new BlockPosition when loading chunk
|
||||||
chunk = this.world.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z);
|
chunk = this.world.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z);
|
||||||
if (chunk.isReady()) {
|
if (chunk.isReady()) {
|
||||||
arraylist.add(chunk);
|
chunkList.add(chunk);
|
||||||
arraylist1.addAll(chunk.tileEntities.values()); // CraftBukkit - Get tile entities directly from the chunk instead of the world
|
tileEntities.addAll(chunk.tileEntities.values()); // CraftBukkit - Get tile entities directly from the chunk instead of the world
|
||||||
iterator1.remove();
|
chunksToLoad.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
iterator1.remove();
|
chunksToLoad.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!arraylist.isEmpty()) {
|
if (!chunkList.isEmpty()) {
|
||||||
if (arraylist.size() == 1) {
|
if (chunkList.size() == 1) {
|
||||||
this.playerConnection.sendPacket(new PacketPlayOutMapChunk((Chunk) arraylist.get(0), true, '\uffff'));
|
this.playerConnection.sendPacket(new PacketPlayOutMapChunk(chunkList.get(0), true, '\uffff'));
|
||||||
} else {
|
} else {
|
||||||
this.playerConnection.sendPacket(new PacketPlayOutMapChunkBulk(arraylist));
|
this.playerConnection.sendPacket(new PacketPlayOutMapChunkBulk(chunkList));
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator iterator2 = arraylist1.iterator();
|
Iterator<TileEntity> tileEntitiesIterator = tileEntities.iterator();
|
||||||
|
|
||||||
while (iterator2.hasNext()) {
|
while (tileEntitiesIterator.hasNext()) {
|
||||||
TileEntity tileentity = (TileEntity) iterator2.next();
|
TileEntity tileentity = tileEntitiesIterator.next();
|
||||||
|
|
||||||
this.a(tileentity);
|
this.a(tileentity);
|
||||||
}
|
}
|
||||||
|
|
||||||
iterator2 = arraylist.iterator();
|
// //Nacho - if there are a lot of entities, we end up scanning the WHOLE list of entities multiple times
|
||||||
|
// // Which isn't the best if we have 100 players doing that
|
||||||
|
// So instead of updating all entities by chunk, we update all entities at once with a hashset of chunks
|
||||||
|
// This means we don't have to pass over the list x chunks
|
||||||
|
// o(chunk * entityList) => o(entitylist)
|
||||||
|
|
||||||
while (iterator2.hasNext()) {
|
// Iterator<Chunk> chunkIterator = chunkList.iterator();
|
||||||
chunk = (Chunk) iterator2.next();
|
// while (chunkIterator.hasNext())
|
||||||
this.u().getTracker().a(this, chunk);
|
// {
|
||||||
|
// chunk = (Chunk) chunkIterator.next();
|
||||||
|
// this.u().getTracker().a(this, chunk);
|
||||||
|
// }
|
||||||
|
// Nacho - end
|
||||||
|
|
||||||
|
LongOpenHashSet chunkPosSet = new LongOpenHashSet(chunkList.size());
|
||||||
|
for (Chunk newChunk : chunkList)
|
||||||
|
chunkPosSet.add(this.chunkToLong(newChunk.locX, newChunk.locZ));
|
||||||
|
|
||||||
|
Iterator<EntityTrackerEntry> trackerEntryIterator = this.u().getTracker().getEntityTrackerEntries();
|
||||||
|
while (trackerEntryIterator.hasNext())
|
||||||
|
{
|
||||||
|
EntityTrackerEntry entitytrackerentry = trackerEntryIterator.next();
|
||||||
|
|
||||||
|
if (entitytrackerentry.tracker != this && chunkPosSet.contains(this.chunkToLong(entitytrackerentry.tracker.ae, entitytrackerentry.tracker.ag)))
|
||||||
|
{
|
||||||
|
entitytrackerentry.updatePlayer(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -207,7 +209,7 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
|
|||||||
for (int j = 0; j < 4; ++j) {
|
for (int j = 0; j < 4; ++j) {
|
||||||
float f4 = 0.25F;
|
float f4 = 0.25F;
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX - this.motX * (double) f4, this.locY - this.motY * (double) f4, this.locZ - this.motZ * (double) f4, this.motX, this.motY, this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.WATER_BUBBLE, this.locX - this.motX * (double) f4, this.locY - this.motY * (double) f4, this.locZ - this.motZ * (double) f4, this.motX, this.motY, this.motZ, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
f2 = 0.8F;
|
f2 = 0.8F;
|
||||||
@ -268,7 +270,7 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
|
|||||||
this.shooter = this.world.a(this.shooterName);
|
this.shooter = this.world.a(this.shooterName);
|
||||||
if (this.shooter == null && this.world instanceof WorldServer) {
|
if (this.shooter == null && this.world instanceof WorldServer) {
|
||||||
try {
|
try {
|
||||||
Entity entity = ((WorldServer) this.world).getEntity(UUID.fromString(this.shooterName));
|
Entity entity = ((WorldServer) this.world).getEntity(FastUUID.parseUUID(this.shooterName));
|
||||||
|
|
||||||
if (entity instanceof EntityLiving) {
|
if (entity instanceof EntityLiving) {
|
||||||
this.shooter = (EntityLiving) entity;
|
this.shooter = (EntityLiving) entity;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.event.entity.SlimeSplitEvent;
|
import org.bukkit.event.entity.SlimeSplitEvent;
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|||||||
double d0 = this.locX + (double) f2;
|
double d0 = this.locX + (double) f2;
|
||||||
double d1 = this.locZ + (double) f3;
|
double d1 = this.locZ + (double) f3;
|
||||||
|
|
||||||
world.addParticle(enumparticle, d0, this.getBoundingBox().b, d1, 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(enumparticle, d0, this.getBoundingBox().b, d1, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.cl()) {
|
if (this.cl()) {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class EntitySnowball extends EntityProjectile {
|
public class EntitySnowball extends EntityProjectile {
|
||||||
|
|
||||||
public EntitySnowball(World world) {
|
public EntitySnowball(World world) {
|
||||||
@ -26,7 +28,7 @@ public class EntitySnowball extends EntityProjectile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 8; ++i) {
|
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]);
|
this.world.addParticle(EnumParticle.SNOWBALL, this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.world.isClientSide) {
|
if (!this.world.isClientSide) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.event.entity.ExplosionPrimeEvent; // CraftBukkit
|
import org.bukkit.event.entity.ExplosionPrimeEvent; // CraftBukkit
|
||||||
|
|
||||||
public class EntityTNTPrimed extends Entity {
|
public class EntityTNTPrimed extends Entity {
|
||||||
@ -90,7 +91,7 @@ public class EntityTNTPrimed extends Entity {
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
} else {
|
} else {
|
||||||
this.W();
|
this.W();
|
||||||
this.world.addParticle(EnumParticle.SMOKE_NORMAL, this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.SMOKE_NORMAL, this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public abstract class EntityTameableAnimal extends EntityAnimal implements EntityOwnable {
|
public abstract class EntityTameableAnimal extends EntityAnimal implements EntityOwnable {
|
||||||
@ -61,7 +64,7 @@ public abstract class EntityTameableAnimal extends EntityAnimal implements Entit
|
|||||||
double d1 = this.random.nextGaussian() * 0.02D;
|
double d1 = this.random.nextGaussian() * 0.02D;
|
||||||
double d2 = 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]);
|
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, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -109,7 +112,7 @@ public abstract class EntityTameableAnimal extends EntityAnimal implements Entit
|
|||||||
|
|
||||||
public EntityLiving getOwner() {
|
public EntityLiving getOwner() {
|
||||||
try {
|
try {
|
||||||
UUID uuid = UUID.fromString(this.getOwnerUUID());
|
UUID uuid = FastUUID.parseUUID(this.getOwnerUUID());
|
||||||
|
|
||||||
return uuid == null ? null : this.world.b(uuid);
|
return uuid == null ? null : this.world.b(uuid);
|
||||||
} catch (IllegalArgumentException illegalargumentexception) {
|
} catch (IllegalArgumentException illegalargumentexception) {
|
||||||
|
@ -3,6 +3,7 @@ package net.minecraft.server;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
@ -265,6 +266,11 @@ public class EntityTracker {
|
|||||||
else TASK_EXECUTOR.submit(task);
|
else TASK_EXECUTOR.submit(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Iterator<EntityTrackerEntry> getEntityTrackerEntries()
|
||||||
|
{
|
||||||
|
return this.c.iterator();
|
||||||
|
}
|
||||||
|
|
||||||
public void a(EntityPlayer entityplayer, Chunk chunk) {
|
public void a(EntityPlayer entityplayer, Chunk chunk) {
|
||||||
Task task = executor -> {
|
Task task = executor -> {
|
||||||
for (EntityTrackerEntry entitytrackerentry : this.c) {
|
for (EntityTrackerEntry entitytrackerentry : this.c) {
|
||||||
|
@ -3,7 +3,7 @@ package net.minecraft.server;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import com.elevatemc.spigot.eSpigotFeature;
|
import com.elevatemc.spigot.config.eSpigotConfig;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ public class EntityTrackerEntry {
|
|||||||
DataWatcher datawatcher = this.tracker.getDataWatcher();
|
DataWatcher datawatcher = this.tracker.getDataWatcher();
|
||||||
|
|
||||||
if (datawatcher.a()) {
|
if (datawatcher.a()) {
|
||||||
if (eSpigotFeature.OBFUSCATE_HEALTH.isEnabled() && this.tracker instanceof EntityHuman) {
|
if (eSpigotConfig.obfuscatePlayerHealth && this.tracker instanceof EntityHuman) {
|
||||||
List<DataWatcher.WatchableObject> changedMetadata = datawatcher.c();
|
List<DataWatcher.WatchableObject> changedMetadata = datawatcher.c();
|
||||||
Iterator<DataWatcher.WatchableObject> iter = changedMetadata.iterator();
|
Iterator<DataWatcher.WatchableObject> iter = changedMetadata.iterator();
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class EntityWitch extends EntityMonster implements IRangedEntity {
|
public class EntityWitch extends EntityMonster implements IRangedEntity {
|
||||||
|
|
||||||
private static final UUID a = UUID.fromString("5CD17E52-A79A-43D3-A529-90FDE04B181E");
|
private static final UUID a = FastUUID.parseUUID("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 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 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;
|
private int bm;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -154,15 +155,15 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
|
|||||||
double d9 = this.u(j);
|
double d9 = this.u(j);
|
||||||
double d10 = this.v(j);
|
double d10 = this.v(j);
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.SMOKE_NORMAL, d8 + this.random.nextGaussian() * 0.30000001192092896D, d9 + this.random.nextGaussian() * 0.30000001192092896D, d10 + this.random.nextGaussian() * 0.30000001192092896D, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.SMOKE_NORMAL, d8 + this.random.nextGaussian() * 0.30000001192092896D, d9 + this.random.nextGaussian() * 0.30000001192092896D, d10 + this.random.nextGaussian() * 0.30000001192092896D, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
if (flag && this.world.random.nextInt(4) == 0) {
|
if (flag && this.world.random.nextInt(4) == 0) {
|
||||||
this.world.addParticle(EnumParticle.SPELL_MOB, d8 + this.random.nextGaussian() * 0.30000001192092896D, d9 + this.random.nextGaussian() * 0.30000001192092896D, d10 + this.random.nextGaussian() * 0.30000001192092896D, 0.699999988079071D, 0.699999988079071D, 0.5D, new int[0]);
|
this.world.addParticle(EnumParticle.SPELL_MOB, d8 + this.random.nextGaussian() * 0.30000001192092896D, d9 + this.random.nextGaussian() * 0.30000001192092896D, d10 + this.random.nextGaussian() * 0.30000001192092896D, 0.699999988079071D, 0.699999988079071D, 0.5D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.cl() > 0) {
|
if (this.cl() > 0) {
|
||||||
for (j = 0; j < 3; ++j) {
|
for (j = 0; j < 3; ++j) {
|
||||||
this.world.addParticle(EnumParticle.SPELL_MOB, this.locX + this.random.nextGaussian() * 1.0D, this.locY + (double) (this.random.nextFloat() * 3.3F), this.locZ + this.random.nextGaussian() * 1.0D, 0.699999988079071D, 0.699999988079071D, 0.8999999761581421D, new int[0]);
|
this.world.addParticle(EnumParticle.SPELL_MOB, this.locX + this.random.nextGaussian() * 1.0D, this.locY + (double) (this.random.nextFloat() * 3.3F), this.locZ + this.random.nextGaussian() * 1.0D, 0.699999988079071D, 0.699999988079071D, 0.8999999761581421D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
@ -183,7 +184,7 @@ public class EntityWolf extends EntityTameableAnimal {
|
|||||||
float f1 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
|
float f1 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
|
||||||
float f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
|
float f2 = (this.random.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
|
||||||
|
|
||||||
this.world.addParticle(EnumParticle.WATER_SPLASH, this.locX + (double) f1, f + 0.8F, this.locZ + (double) f2, this.motX, this.motY, this.motZ, new int[0]);
|
this.world.addParticle(EnumParticle.WATER_SPLASH, this.locX + (double) f1, f + 0.8F, this.locZ + (double) f2, this.motX, this.motY, this.motZ, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
//CraftBukkit start
|
//CraftBukkit start
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
import org.bukkit.event.entity.EntityCombustByEntityEvent;
|
import org.bukkit.event.entity.EntityCombustByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityCombustEvent;
|
import org.bukkit.event.entity.EntityCombustEvent;
|
||||||
@ -14,7 +15,7 @@ import org.bukkit.event.entity.EntityTargetEvent;
|
|||||||
public class EntityZombie extends EntityMonster {
|
public class EntityZombie extends EntityMonster {
|
||||||
|
|
||||||
protected static final IAttribute a = (new AttributeRanged(null, "zombie.spawnReinforcements", 0.0D, 0.0D, 1.0D)).a("Spawn Reinforcements Chance");
|
protected static final IAttribute a = (new AttributeRanged(null, "zombie.spawnReinforcements", 0.0D, 0.0D, 1.0D)).a("Spawn Reinforcements Chance");
|
||||||
private static final UUID b = UUID.fromString("B9766B59-9566-4402-BC1F-2EE2A276D836");
|
private static final UUID b = FastUUID.parseUUID("B9766B59-9566-4402-BC1F-2EE2A276D836");
|
||||||
private static final AttributeModifier c = new AttributeModifier(EntityZombie.b, "Baby speed boost", org.github.paperspigot.PaperSpigotConfig.babyZombieMovementSpeed, 1); // PaperSpigot - Configurable baby zombie movement speed
|
private static final AttributeModifier c = new AttributeModifier(EntityZombie.b, "Baby speed boost", org.github.paperspigot.PaperSpigotConfig.babyZombieMovementSpeed, 1); // PaperSpigot - Configurable baby zombie movement speed
|
||||||
private final PathfinderGoalBreakDoor bm = new PathfinderGoalBreakDoor(this);
|
private final PathfinderGoalBreakDoor bm = new PathfinderGoalBreakDoor(this);
|
||||||
private int bn;
|
private int bn;
|
||||||
|
@ -20,9 +20,10 @@ public enum EnumDirection implements INamable {
|
|||||||
private final BaseBlockPosition m;
|
private final BaseBlockPosition m;
|
||||||
private static final EnumDirection[] n = new EnumDirection[6];
|
private static final EnumDirection[] n = new EnumDirection[6];
|
||||||
private static final EnumDirection[] o = new EnumDirection[4];
|
private static final EnumDirection[] o = new EnumDirection[4];
|
||||||
|
private static final EnumDirection[] ALL = EnumDirection.values();
|
||||||
private static final Map<String, EnumDirection> p = Maps.newHashMap();
|
private static final Map<String, EnumDirection> p = Maps.newHashMap();
|
||||||
|
|
||||||
private EnumDirection(int i, int j, int k, String s, EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis, BaseBlockPosition baseblockposition) {
|
EnumDirection(int i, int j, int k, String s, EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis, BaseBlockPosition baseblockposition) {
|
||||||
this.g = i;
|
this.g = i;
|
||||||
this.i = k;
|
this.i = k;
|
||||||
this.h = j;
|
this.h = j;
|
||||||
@ -45,42 +46,34 @@ public enum EnumDirection implements INamable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public EnumDirection opposite() {
|
public EnumDirection opposite() {
|
||||||
return fromType1(this.h);
|
return ALL[this.h];
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnumDirection e() {
|
public EnumDirection e() {
|
||||||
switch (EnumDirection.SyntheticClass_1.b[this.ordinal()]) {
|
switch(this) {
|
||||||
case 1:
|
case NORTH:
|
||||||
return EnumDirection.EAST;
|
return EAST;
|
||||||
|
case EAST:
|
||||||
case 2:
|
return SOUTH;
|
||||||
return EnumDirection.SOUTH;
|
case SOUTH:
|
||||||
|
return WEST;
|
||||||
case 3:
|
case WEST:
|
||||||
return EnumDirection.WEST;
|
return NORTH;
|
||||||
|
|
||||||
case 4:
|
|
||||||
return EnumDirection.NORTH;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new IllegalStateException("Unable to get Y-rotated facing of " + this);
|
throw new IllegalStateException("Unable to get Y-rotated facing of " + this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnumDirection f() {
|
public EnumDirection f() {
|
||||||
switch (EnumDirection.SyntheticClass_1.b[this.ordinal()]) {
|
switch(this) {
|
||||||
case 1:
|
case NORTH:
|
||||||
return EnumDirection.WEST;
|
return WEST;
|
||||||
|
case EAST:
|
||||||
case 2:
|
return NORTH;
|
||||||
return EnumDirection.NORTH;
|
case SOUTH:
|
||||||
|
return EAST;
|
||||||
case 3:
|
case WEST:
|
||||||
return EnumDirection.EAST;
|
return SOUTH;
|
||||||
|
|
||||||
case 4:
|
|
||||||
return EnumDirection.SOUTH;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new IllegalStateException("Unable to get CCW facing of " + this);
|
throw new IllegalStateException("Unable to get CCW facing of " + this);
|
||||||
}
|
}
|
||||||
@ -119,7 +112,7 @@ public enum EnumDirection implements INamable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static EnumDirection a(Random random) {
|
public static EnumDirection a(Random random) {
|
||||||
return values()[random.nextInt(values().length)];
|
return ALL[random.nextInt(ALL.length)];
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
@ -131,11 +124,10 @@ public enum EnumDirection implements INamable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static EnumDirection a(EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis) {
|
public static EnumDirection a(EnumDirection.EnumAxisDirection enumdirection_enumaxisdirection, EnumDirection.EnumAxis enumdirection_enumaxis) {
|
||||||
EnumDirection[] aenumdirection = values();
|
int i = ALL.length;
|
||||||
int i = aenumdirection.length;
|
|
||||||
|
|
||||||
for (int j = 0; j < i; ++j) {
|
for (int j = 0; j < i; ++j) {
|
||||||
EnumDirection enumdirection = aenumdirection[j];
|
EnumDirection enumdirection = ALL[j];
|
||||||
|
|
||||||
if (enumdirection.c() == enumdirection_enumaxisdirection && enumdirection.k() == enumdirection_enumaxis) {
|
if (enumdirection.c() == enumdirection_enumaxisdirection && enumdirection.k() == enumdirection_enumaxis) {
|
||||||
return enumdirection;
|
return enumdirection;
|
||||||
@ -146,11 +138,10 @@ public enum EnumDirection implements INamable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
EnumDirection[] aenumdirection = values();
|
int i = ALL.length;
|
||||||
int i = aenumdirection.length;
|
|
||||||
|
|
||||||
for (int j = 0; j < i; ++j) {
|
for (int j = 0; j < i; ++j) {
|
||||||
EnumDirection enumdirection = aenumdirection[j];
|
EnumDirection enumdirection = ALL[j];
|
||||||
|
|
||||||
EnumDirection.n[enumdirection.g] = enumdirection;
|
EnumDirection.n[enumdirection.g] = enumdirection;
|
||||||
if (enumdirection.k().c()) {
|
if (enumdirection.k().c()) {
|
||||||
@ -162,102 +153,20 @@ public enum EnumDirection implements INamable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static class SyntheticClass_1 {
|
public enum EnumDirectionLimit implements Predicate<EnumDirection>, Iterable<EnumDirection> {
|
||||||
|
|
||||||
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<EnumDirection>, Iterable<EnumDirection> {
|
|
||||||
|
|
||||||
HORIZONTAL, VERTICAL;
|
HORIZONTAL, VERTICAL;
|
||||||
|
|
||||||
private EnumDirectionLimit() {}
|
EnumDirectionLimit() {}
|
||||||
|
|
||||||
public EnumDirection[] a() {
|
public EnumDirection[] a() {
|
||||||
switch (EnumDirection.SyntheticClass_1.c[this.ordinal()]) {
|
switch(this) {
|
||||||
case 1:
|
case HORIZONTAL:
|
||||||
return new EnumDirection[] { EnumDirection.NORTH, EnumDirection.EAST, EnumDirection.SOUTH, EnumDirection.WEST};
|
return new EnumDirection[]{EnumDirection.NORTH, EnumDirection.EAST, EnumDirection.SOUTH, EnumDirection.WEST};
|
||||||
|
case VERTICAL:
|
||||||
case 2:
|
return new EnumDirection[]{EnumDirection.UP, EnumDirection.DOWN};
|
||||||
return new EnumDirection[] { EnumDirection.UP, EnumDirection.DOWN};
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new Error("Someone\'s been tampering with the universe!");
|
throw new Error("Someone's been tampering with the universe!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +189,7 @@ public enum EnumDirection implements INamable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum EnumAxisDirection {
|
public enum EnumAxisDirection {
|
||||||
|
|
||||||
POSITIVE(1, "Towards positive"), NEGATIVE(-1, "Towards negative");
|
POSITIVE(1, "Towards positive"), NEGATIVE(-1, "Towards negative");
|
||||||
|
|
||||||
@ -301,7 +210,7 @@ public enum EnumDirection implements INamable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum EnumAxis implements Predicate<EnumDirection>, INamable {
|
public enum EnumAxis implements Predicate<EnumDirection>, INamable {
|
||||||
|
|
||||||
X("x", EnumDirection.EnumDirectionLimit.HORIZONTAL), Y("y", EnumDirection.EnumDirectionLimit.VERTICAL), Z("z", EnumDirection.EnumDirectionLimit.HORIZONTAL);
|
X("x", EnumDirection.EnumDirectionLimit.HORIZONTAL), Y("y", EnumDirection.EnumDirectionLimit.VERTICAL), Z("z", EnumDirection.EnumDirectionLimit.HORIZONTAL);
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.elevatemc.spigot.util.FastRandom;
|
import com.elevatemc.spigot.util.FastRandom;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@ -58,7 +59,7 @@ public class Explosion {
|
|||||||
|
|
||||||
Block b = world.getChunkAt((int)posX >> 4, (int)posZ >> 4).getBlockData(new BlockPosition(posX, posY, posZ)).getBlock(); // TacoSpigot - get block of the explosion
|
Block b = world.getChunkAt((int)posX >> 4, (int)posZ >> 4).getBlockData(new BlockPosition(posX, posY, posZ)).getBlock(); // TacoSpigot - get block of the explosion
|
||||||
|
|
||||||
if (!this.world.tacoSpigotConfig.optimizeLiquidExplosions || !b.getMaterial().isLiquid()) { //TacoSpigot - skip calculating what blocks to blow up in water/lava
|
if (!this.world.paperSpigotConfig.optimizeLiquidExplosions || !b.getMaterial().isLiquid()) { //TacoSpigot - skip calculating what blocks to blow up in water/lava
|
||||||
for (int k = 0; k < 16; ++k) {
|
for (int k = 0; k < 16; ++k) {
|
||||||
for (i = 0; i < 16; ++i) {
|
for (i = 0; i < 16; ++i) {
|
||||||
for (j = 0; j < 16; ++j) {
|
for (j = 0; j < 16; ++j) {
|
||||||
@ -170,9 +171,9 @@ public class Explosion {
|
|||||||
this.world.makeSound(this.posX, this.posY, this.posZ, "random.explode", volume, (1.0F + (this.world.random.nextFloat() - this.world.random.nextFloat()) * 0.2F) * 0.7F);
|
this.world.makeSound(this.posX, this.posY, this.posZ, "random.explode", volume, (1.0F + (this.world.random.nextFloat() - this.world.random.nextFloat()) * 0.2F) * 0.7F);
|
||||||
// PaperSpigot end
|
// PaperSpigot end
|
||||||
if (this.size >= 2.0F && this.b) {
|
if (this.size >= 2.0F && this.b) {
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_HUGE, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_HUGE, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
} else {
|
} else {
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator iterator;
|
Iterator iterator;
|
||||||
@ -248,8 +249,8 @@ public class Explosion {
|
|||||||
d3 *= d7;
|
d3 *= d7;
|
||||||
d4 *= d7;
|
d4 *= d7;
|
||||||
d5 *= d7;
|
d5 *= d7;
|
||||||
this.world.addParticle(EnumParticle.EXPLOSION_NORMAL, (d0 + this.posX * 1.0D) / 2.0D, (d1 + this.posY * 1.0D) / 2.0D, (d2 + this.posZ * 1.0D) / 2.0D, d3, d4, d5, new int[0]);
|
this.world.addParticle(EnumParticle.EXPLOSION_NORMAL, (d0 + this.posX * 1.0D) / 2.0D, (d1 + this.posY * 1.0D) / 2.0D, (d2 + this.posZ * 1.0D) / 2.0D, d3, d4, d5, Constants.EMPTY_ARRAY);
|
||||||
this.world.addParticle(EnumParticle.SMOKE_NORMAL, d0, d1, d2, d3, d4, d5, new int[0]);
|
this.world.addParticle(EnumParticle.SMOKE_NORMAL, d0, d1, d2, d3, d4, d5, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (block.getMaterial() != Material.AIR) {
|
if (block.getMaterial() != Material.AIR) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -36,7 +37,7 @@ public class GameProfileBanEntry extends ExpirableListEntry<GameProfile> {
|
|||||||
String s = jsonobject.get("uuid").getAsString();
|
String s = jsonobject.get("uuid").getAsString();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
uuid = UUID.fromString(s);
|
uuid = FastUUID.parseUUID(s);
|
||||||
} catch (Throwable ignored) {
|
} catch (Throwable ignored) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import com.mojang.authlib.properties.Property;
|
import com.mojang.authlib.properties.Property;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -25,7 +26,7 @@ public final class GameProfileSerializer {
|
|||||||
UUID uuid;
|
UUID uuid;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
uuid = UUID.fromString(s1);
|
uuid = FastUUID.parseUUID(s1);
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
uuid = null;
|
uuid = null;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import com.google.common.collect.HashMultimap;
|
import com.google.common.collect.HashMultimap;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@ -12,7 +13,7 @@ public class Item {
|
|||||||
|
|
||||||
public static final RegistryMaterials<MinecraftKey, Item> REGISTRY = new RegistryMaterials();
|
public static final RegistryMaterials<MinecraftKey, Item> REGISTRY = new RegistryMaterials();
|
||||||
private static final Map<Block, Item> a = Maps.newHashMap();
|
private static final Map<Block, Item> a = Maps.newHashMap();
|
||||||
protected static final UUID f = UUID.fromString("CB3F55D3-645C-4F38-A497-9C13A33DB5CF");
|
protected static final UUID f = FastUUID.parseUUID("CB3F55D3-645C-4F38-A497-9C13A33DB5CF");
|
||||||
private CreativeModeTab b;
|
private CreativeModeTab b;
|
||||||
protected static Random g = new Random();
|
protected static Random g = new Random();
|
||||||
protected int maxStackSize = 64;
|
protected int maxStackSize = 64;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||||
@ -154,7 +155,7 @@ public class ItemBucket extends Item {
|
|||||||
world.makeSound((float) i + 0.5F, (float) j + 0.5F, (float) k + 0.5F, "random.fizz", 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
|
world.makeSound((float) i + 0.5F, (float) j + 0.5F, (float) k + 0.5F, "random.fizz", 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
|
||||||
|
|
||||||
for (int l = 0; l < 8; ++l) {
|
for (int l = 0; l < 8; ++l) {
|
||||||
world.addParticle(EnumParticle.SMOKE_LARGE, (double) i + Math.random(), (double) j + Math.random(), (double) k + Math.random(), 0.0D, 0.0D, 0.0D, new int[0]);
|
world.addParticle(EnumParticle.SMOKE_LARGE, (double) i + Math.random(), (double) j + Math.random(), (double) k + Math.random(), 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!world.isClientSide && flag && !material.isLiquid()) {
|
if (!world.isClientSide && flag && !material.isLiquid()) {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
public class ItemEnderEye extends Item {
|
public class ItemEnderEye extends Item {
|
||||||
|
|
||||||
public ItemEnderEye() {
|
public ItemEnderEye() {
|
||||||
@ -25,7 +27,7 @@ public class ItemEnderEye extends Item {
|
|||||||
double d4 = 0.0D;
|
double d4 = 0.0D;
|
||||||
double d5 = 0.0D;
|
double d5 = 0.0D;
|
||||||
|
|
||||||
world.addParticle(EnumParticle.SMOKE_NORMAL, d0, d1, d2, d3, d4, d5, new int[0]);
|
world.addParticle(EnumParticle.SMOKE_NORMAL, d0, d1, d2, d3, d4, d5, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
EnumDirection enumdirection1 = (EnumDirection) iblockdata.get(BlockEnderPortalFrame.FACING);
|
EnumDirection enumdirection1 = (EnumDirection) iblockdata.get(BlockEnderPortalFrame.FACING);
|
||||||
|
@ -16,6 +16,7 @@ import io.netty.buffer.ByteBuf;
|
|||||||
import io.netty.buffer.ByteBufOutputStream;
|
import io.netty.buffer.ByteBufOutputStream;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import io.netty.handler.codec.base64.Base64;
|
import io.netty.handler.codec.base64.Base64;
|
||||||
|
import io.netty.util.ResourceLeakDetector;
|
||||||
import joptsimple.OptionSet;
|
import joptsimple.OptionSet;
|
||||||
import com.elevatemc.spigot.eSpigot;
|
import com.elevatemc.spigot.eSpigot;
|
||||||
import net.minecrell.terminalconsole.TerminalConsoleAppender;
|
import net.minecrell.terminalconsole.TerminalConsoleAppender;
|
||||||
@ -176,7 +177,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
|||||||
private final ThreadingManager threadingManager;
|
private final ThreadingManager threadingManager;
|
||||||
|
|
||||||
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
|
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
|
||||||
io.netty.util.ResourceLeakDetector.setEnabled(false); // Spigot - disable
|
io.netty.util.ResourceLeakDetector.setLevel(ResourceLeakDetector.Level.DISABLED); // [Nacho-0040] Change deprecated Netty parameter // Spigot - disable
|
||||||
this.e = proxy;
|
this.e = proxy;
|
||||||
this.threadingManager = new ThreadingManager();
|
this.threadingManager = new ThreadingManager();
|
||||||
MinecraftServer.l = this;
|
MinecraftServer.l = this;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -194,7 +195,7 @@ public class MobEffectList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public MobEffectList a(IAttribute iattribute, String s, double d0, int i) {
|
public MobEffectList a(IAttribute iattribute, String s, double d0, int i) {
|
||||||
AttributeModifier attributemodifier = new AttributeModifier(UUID.fromString(s), this.a(), d0, i);
|
AttributeModifier attributemodifier = new AttributeModifier(FastUUID.parseUUID(s), this.a(), d0, i);
|
||||||
|
|
||||||
this.J.put(iattribute, attributemodifier);
|
this.J.put(iattribute, attributemodifier);
|
||||||
return this;
|
return this;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -75,8 +76,8 @@ public abstract class MobSpawnerAbstract {
|
|||||||
double d2 = (float) blockposition.getY() + this.a().random.nextFloat();
|
double d2 = (float) blockposition.getY() + this.a().random.nextFloat();
|
||||||
|
|
||||||
d0 = (float) blockposition.getZ() + this.a().random.nextFloat();
|
d0 = (float) blockposition.getZ() + this.a().random.nextFloat();
|
||||||
this.a().addParticle(EnumParticle.SMOKE_NORMAL, d1, d2, d0, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.a().addParticle(EnumParticle.SMOKE_NORMAL, d1, d2, d0, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
this.a().addParticle(EnumParticle.FLAME, d1, d2, d0, 0.0D, 0.0D, 0.0D, new int[0]);
|
this.a().addParticle(EnumParticle.FLAME, d1, d2, d0, 0.0D, 0.0D, 0.0D, Constants.EMPTY_ARRAY);
|
||||||
if (this.spawnDelay > 0) {
|
if (this.spawnDelay > 0) {
|
||||||
this.spawnDelay -= tickDelay; // PaperSpigot
|
this.spawnDelay -= tickDelay; // PaperSpigot
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
import java.io.DataOutput;
|
import java.io.DataOutput;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -201,7 +203,7 @@ public class NBTTagCompound extends NBTBase {
|
|||||||
|
|
||||||
public int[] getIntArray(String s) {
|
public int[] getIntArray(String s) {
|
||||||
try {
|
try {
|
||||||
return !this.hasKeyOfType(s, 11) ? new int[0] : ((NBTTagIntArray) this.map.get(s)).c();
|
return !this.hasKeyOfType(s, 11) ? Constants.EMPTY_ARRAY : ((NBTTagIntArray) this.map.get(s)).c();
|
||||||
} catch (ClassCastException classcastexception) {
|
} catch (ClassCastException classcastexception) {
|
||||||
throw new ReportedException(this.a(s, 11, classcastexception));
|
throw new ReportedException(this.a(s, 11, classcastexception));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
import java.io.DataOutput;
|
import java.io.DataOutput;
|
||||||
@ -131,9 +132,9 @@ public class NBTTagList extends NBTBase {
|
|||||||
if (i >= 0 && i < this.list.size()) {
|
if (i >= 0 && i < this.list.size()) {
|
||||||
NBTBase nbtbase = this.list.get(i);
|
NBTBase nbtbase = this.list.get(i);
|
||||||
|
|
||||||
return nbtbase.getTypeId() == 11 ? ((NBTTagIntArray) nbtbase).c() : new int[0];
|
return nbtbase.getTypeId() == 11 ? ((NBTTagIntArray) nbtbase).c() : Constants.EMPTY_ARRAY;
|
||||||
} else {
|
} else {
|
||||||
return new int[0];
|
return Constants.EMPTY_ARRAY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.collect.Iterators;
|
import com.google.common.collect.Iterators;
|
||||||
@ -330,7 +331,7 @@ public class NameReferencingFileConverter {
|
|||||||
if (uuid == null) {
|
if (uuid == null) {
|
||||||
throw new NameReferencingFileConverter.FileConversionException("Missing UUID for user profile " + gameprofile.getName(), null);
|
throw new NameReferencingFileConverter.FileConversionException("Missing UUID for user profile " + gameprofile.getName(), null);
|
||||||
} else {
|
} else {
|
||||||
this.a(file, this.a(gameprofile), uuid.toString());
|
this.a(file, this.a(gameprofile), FastUUID.toString(uuid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,16 +126,6 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
|||||||
super.channelActive(channelhandlercontext);
|
super.channelActive(channelhandlercontext);
|
||||||
this.channel = channelhandlercontext.channel();
|
this.channel = channelhandlercontext.channel();
|
||||||
this.l = this.channel.remoteAddress();
|
this.l = this.channel.remoteAddress();
|
||||||
// eSpigot start
|
|
||||||
ChannelConfig config = this.channel.config();
|
|
||||||
config.setOption(ChannelOption.SO_KEEPALIVE, true);
|
|
||||||
config.setOption(ChannelOption.TCP_NODELAY, true);
|
|
||||||
config.setOption(ChannelOption.TCP_FASTOPEN, 1);
|
|
||||||
config.setOption(ChannelOption.TCP_FASTOPEN_CONNECT, true);
|
|
||||||
config.setOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT);
|
|
||||||
config.setOption(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(8 * 1024, 32 * 1024));
|
|
||||||
config.setOption(ChannelOption.IP_TOS, 0x18);
|
|
||||||
// eSpigot end
|
|
||||||
|
|
||||||
// Spigot Start
|
// Spigot Start
|
||||||
this.preparing = false;
|
this.preparing = false;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -46,7 +47,7 @@ public class OpListEntry extends JsonListEntry<GameProfile> {
|
|||||||
UUID uuid;
|
UUID uuid;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
uuid = UUID.fromString(s);
|
uuid = FastUUID.parseUUID(s);
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -17,7 +18,7 @@ public class PacketLoginOutSuccess implements Packet<PacketLoginOutListener> {
|
|||||||
public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
String s = packetdataserializer.c(36);
|
String s = packetdataserializer.c(36);
|
||||||
String s1 = packetdataserializer.c(16);
|
String s1 = packetdataserializer.c(16);
|
||||||
UUID uuid = UUID.fromString(s);
|
UUID uuid = FastUUID.parseUUID(s);
|
||||||
|
|
||||||
this.a = new GameProfile(uuid, s1);
|
this.a = new GameProfile(uuid, s1);
|
||||||
}
|
}
|
||||||
@ -25,7 +26,7 @@ public class PacketLoginOutSuccess implements Packet<PacketLoginOutListener> {
|
|||||||
public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
UUID uuid = this.a.getId();
|
UUID uuid = this.a.getId();
|
||||||
|
|
||||||
packetdataserializer.a(uuid == null ? "" : uuid.toString());
|
packetdataserializer.a(uuid == null ? "" : FastUUID.toString(uuid));
|
||||||
packetdataserializer.a(this.a.getName());
|
packetdataserializer.a(this.a.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,10 @@ public class PacketPlayInCloseWindow implements Packet<PacketListenerPlayIn> {
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
public void a(PacketListenerPlayIn packetlistenerplayin) {
|
public void a(PacketListenerPlayIn packetlistenerplayin) {
|
||||||
packetlistenerplayin.a(this);
|
packetlistenerplayin.a(this);
|
||||||
}
|
}
|
||||||
@ -26,3 +30,4 @@ public class PacketPlayInCloseWindow implements Packet<PacketListenerPlayIn> {
|
|||||||
packetdataserializer.writeByte(this.id);
|
packetdataserializer.writeByte(this.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
|
|||||||
this.b = chunk.locZ;
|
this.b = chunk.locZ;
|
||||||
this.d = flag;
|
this.d = flag;
|
||||||
this.c = chunk.getChunkMap(flag, i); // PaperSpigot
|
this.c = chunk.getChunkMap(flag, i); // PaperSpigot
|
||||||
chunk.world.spigotConfig.antiXrayInstance.obfuscateSync(chunk.locX, chunk.locZ, c.b, c.a, chunk.world);
|
chunk.world.spigotConfig.antiXrayInstance.obfuscate(chunk.locX, chunk.locZ, c.b, c.a, chunk.world);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
|
@ -23,11 +23,11 @@ public class PacketPlayOutMapChunkBulk implements Packet<PacketListenerPlayOut>
|
|||||||
|
|
||||||
for (int j = 0; j < i; ++j) {
|
for (int j = 0; j < i; ++j) {
|
||||||
Chunk chunk = list.get(j);
|
Chunk chunk = list.get(j);
|
||||||
PacketPlayOutMapChunk.ChunkMap packetplayoutmapchunk_chunkmap = chunk.getChunkMap(true, '\uffff'); // PaperSpigot
|
PacketPlayOutMapChunk.ChunkMap map = chunk.getChunkMap(true, '\uffff'); // PaperSpigot
|
||||||
|
|
||||||
this.a[j] = chunk.locX;
|
this.a[j] = chunk.locX;
|
||||||
this.b[j] = chunk.locZ;
|
this.b[j] = chunk.locZ;
|
||||||
this.c[j] = packetplayoutmapchunk_chunkmap;
|
this.c[j] = map;
|
||||||
}
|
}
|
||||||
|
|
||||||
world = list.get(0).getWorld(); // Spigot
|
world = list.get(0).getWorld(); // Spigot
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.util.Constants;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@ -104,7 +106,7 @@ public class PathfinderGoalBreed extends PathfinderGoal {
|
|||||||
double d4 = 0.5D + random.nextDouble() * (double) this.d.length;
|
double d4 = 0.5D + random.nextDouble() * (double) this.d.length;
|
||||||
double d5 = random.nextDouble() * (double) this.d.width * 2.0D - (double) this.d.width;
|
double d5 = random.nextDouble() * (double) this.d.width * 2.0D - (double) this.d.width;
|
||||||
|
|
||||||
this.a.addParticle(EnumParticle.HEART, this.d.locX + d3, this.d.locY + d4, this.d.locZ + d5, d0, d1, d2, new int[0]);
|
this.a.addParticle(EnumParticle.HEART, this.d.locX + d3, this.d.locY + d4, this.d.locZ + d5, d0, d1, d2, Constants.EMPTY_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.a.getGameRules().getBoolean("doMobLoot")) {
|
if (this.a.getGameRules().getBoolean("doMobLoot")) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.config.eSpigotConfig;
|
||||||
import com.elevatemc.spigot.eSpigot;
|
import com.elevatemc.spigot.eSpigot;
|
||||||
import com.elevatemc.spigot.handler.MovementHandler;
|
import com.elevatemc.spigot.handler.MovementHandler;
|
||||||
import com.elevatemc.spigot.handler.PacketHandler;
|
import com.elevatemc.spigot.handler.PacketHandler;
|
||||||
@ -67,7 +68,6 @@ import co.aikar.timings.SpigotTimings; // Spigot
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
import org.github.paperspigot.PaperSpigotConfig; // PaperSpigot
|
import org.github.paperspigot.PaperSpigotConfig; // PaperSpigot
|
||||||
import com.elevatemc.spigot.eSpigotFeature;
|
|
||||||
|
|
||||||
public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerListBox {
|
public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerListBox {
|
||||||
|
|
||||||
@ -636,7 +636,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case 3: // RELEASE_USE_ITEM
|
case 3: // RELEASE_USE_ITEM
|
||||||
if (eSpigotFeature.FIX_SPRINT_EAT_EXPLOIT.isEnabled())
|
if (eSpigotConfig.fixSprintEatExploit)
|
||||||
this.player.bU(); // eSpigot - Patch eat while running glitch
|
this.player.bU(); // eSpigot - Patch eat while running glitch
|
||||||
|
|
||||||
this.player.setSprinting(true);
|
this.player.setSprinting(true);
|
||||||
@ -1541,9 +1541,11 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
|||||||
if (this.player.dead) return; // CraftBukkit
|
if (this.player.dead) return; // CraftBukkit
|
||||||
PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.u());
|
PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.u());
|
||||||
|
|
||||||
CraftEventFactory.handleInventoryCloseEvent(this.player); // CraftBukkit
|
// Nacho: only fire InventoryCloseEvent if inventory is open
|
||||||
|
if (packetplayinclosewindow.getId() == player.activeContainer.windowId) {
|
||||||
this.player.p();
|
CraftEventFactory.handleInventoryCloseEvent(this.player); // CraftBukkit
|
||||||
|
this.player.p();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void a(PacketPlayInWindowClick packetplayinwindowclick) {
|
public void a(PacketPlayInWindowClick packetplayinwindowclick) {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
|
import com.elevatemc.spigot.config.eSpigotConfig;
|
||||||
import com.elevatemc.spigot.console.PandaConsoleCommandSender;
|
import com.elevatemc.spigot.console.PandaConsoleCommandSender;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@ -9,14 +11,8 @@ import io.netty.buffer.Unpooled;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.SocketAddress;
|
import java.net.SocketAddress;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import com.elevatemc.spigot.eSpigotFeature;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
@ -57,6 +53,7 @@ public abstract class PlayerList {
|
|||||||
private final GameProfileBanList k;
|
private final GameProfileBanList k;
|
||||||
private final IpBanList l;
|
private final IpBanList l;
|
||||||
private final OpList operators;
|
private final OpList operators;
|
||||||
|
private Set<UUID> fastOperator = new HashSet<>();
|
||||||
private final WhiteList whitelist;
|
private final WhiteList whitelist;
|
||||||
private final Map<UUID, ServerStatisticManager> o;
|
private final Map<UUID, ServerStatisticManager> o;
|
||||||
public IPlayerFileData playerFileData;
|
public IPlayerFileData playerFileData;
|
||||||
@ -79,6 +76,9 @@ public abstract class PlayerList {
|
|||||||
this.k = new GameProfileBanList(PlayerList.a);
|
this.k = new GameProfileBanList(PlayerList.a);
|
||||||
this.l = new IpBanList(PlayerList.b);
|
this.l = new IpBanList(PlayerList.b);
|
||||||
this.operators = new OpList(PlayerList.c);
|
this.operators = new OpList(PlayerList.c);
|
||||||
|
for (OpListEntry value : this.operators.getValues()) {
|
||||||
|
this.fastOperator.add(value.getKey().getId());
|
||||||
|
}
|
||||||
this.whitelist = new WhiteList(PlayerList.d);
|
this.whitelist = new WhiteList(PlayerList.d);
|
||||||
this.o = Maps.newHashMap();
|
this.o = Maps.newHashMap();
|
||||||
this.server = minecraftserver;
|
this.server = minecraftserver;
|
||||||
@ -328,11 +328,11 @@ public abstract class PlayerList {
|
|||||||
for (EntityPlayer player : this.players) {
|
for (EntityPlayer player : this.players) {
|
||||||
EntityPlayer entityplayer1 = player;
|
EntityPlayer entityplayer1 = player;
|
||||||
|
|
||||||
if (eSpigotFeature.SHOW_HIDDEN_PLAYERS_IN_TAB.isEnabled() || entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
|
if (eSpigotConfig.showHiddenPlayersInTab || entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) {
|
||||||
entityplayer1.playerConnection.sendPacket(packet);
|
entityplayer1.playerConnection.sendPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!entityplayer.getBukkitEntity().canSee(entityplayer1.getBukkitEntity()) && !eSpigotFeature.SHOW_HIDDEN_PLAYERS_IN_TAB.isEnabled()) {
|
if (!entityplayer.getBukkitEntity().canSee(entityplayer1.getBukkitEntity()) && !eSpigotConfig.showHiddenPlayersInTab) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1020,6 +1020,7 @@ public abstract class PlayerList {
|
|||||||
|
|
||||||
public void addOp(GameProfile gameprofile) {
|
public void addOp(GameProfile gameprofile) {
|
||||||
this.operators.add(new OpListEntry(gameprofile, this.server.p(), this.operators.b(gameprofile)));
|
this.operators.add(new OpListEntry(gameprofile, this.server.p(), this.operators.b(gameprofile)));
|
||||||
|
this.fastOperator.add(gameprofile.getId());
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
Player player = server.server.getPlayer(gameprofile.getId());
|
Player player = server.server.getPlayer(gameprofile.getId());
|
||||||
@ -1031,6 +1032,7 @@ public abstract class PlayerList {
|
|||||||
|
|
||||||
public void removeOp(GameProfile gameprofile) {
|
public void removeOp(GameProfile gameprofile) {
|
||||||
this.operators.remove(gameprofile);
|
this.operators.remove(gameprofile);
|
||||||
|
this.fastOperator.remove(gameprofile.getId());
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
Player player = server.server.getPlayer(gameprofile.getId());
|
Player player = server.server.getPlayer(gameprofile.getId());
|
||||||
@ -1041,11 +1043,11 @@ public abstract class PlayerList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isWhitelisted(GameProfile gameprofile) {
|
public boolean isWhitelisted(GameProfile gameprofile) {
|
||||||
return !this.hasWhitelist || this.operators.d(gameprofile) || this.whitelist.d(gameprofile);
|
return !this.hasWhitelist || this.fastOperator.contains(gameprofile.getId()) || this.whitelist.d(gameprofile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOp(GameProfile gameprofile) {
|
public boolean isOp(GameProfile gameprofile) {
|
||||||
return this.operators.d(gameprofile) || this.server.T() && this.server.worlds.get(0).getWorldData().v() && this.server.S().equalsIgnoreCase(gameprofile.getName()) || this.t; // CraftBukkit
|
return this.fastOperator.contains(gameprofile.getId()) || this.server.T() && this.server.worlds.get(0).getWorldData().v() && this.server.S().equalsIgnoreCase(gameprofile.getName()) || this.t; // CraftBukkit
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntityPlayer getPlayer(String s) {
|
public EntityPlayer getPlayer(String s) {
|
||||||
@ -1057,6 +1059,7 @@ public abstract class PlayerList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendPacketNearby(EntityHuman entityhuman, double d0, double d1, double d2, double d3, int i, Packet packet) {
|
public void sendPacketNearby(EntityHuman entityhuman, double d0, double d1, double d2, double d3, int i, Packet packet) {
|
||||||
|
double squared = d3 * d3;
|
||||||
for (EntityPlayer player : this.players) {
|
for (EntityPlayer player : this.players) {
|
||||||
EntityPlayer entityplayer = player;
|
EntityPlayer entityplayer = player;
|
||||||
|
|
||||||
@ -1071,7 +1074,7 @@ public abstract class PlayerList {
|
|||||||
double d5 = d1 - entityplayer.locY;
|
double d5 = d1 - entityplayer.locY;
|
||||||
double d6 = d2 - entityplayer.locZ;
|
double d6 = d2 - entityplayer.locZ;
|
||||||
|
|
||||||
if (d4 * d4 + d5 * d5 + d6 * d6 < d3 * d3) {
|
if (d4 * d4 + d5 * d5 + d6 * d6 < squared) {
|
||||||
entityplayer.playerConnection.sendPacket(packet);
|
entityplayer.playerConnection.sendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1249,7 +1252,7 @@ public abstract class PlayerList {
|
|||||||
|
|
||||||
if (serverstatisticmanager == null) {
|
if (serverstatisticmanager == null) {
|
||||||
File file = new File(this.server.getWorldServer(0).getDataManager().getDirectory(), "stats");
|
File file = new File(this.server.getWorldServer(0).getDataManager().getDirectory(), "stats");
|
||||||
File file1 = new File(file, uuid.toString() + ".json");
|
File file1 = new File(file, FastUUID.toString(uuid) + ".json");
|
||||||
|
|
||||||
if (!file1.exists()) {
|
if (!file1.exists()) {
|
||||||
File file2 = new File(file, entityhuman.getName() + ".json");
|
File file2 = new File(file, entityhuman.getName() + ".json");
|
||||||
|
@ -4,12 +4,8 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
import com.velocitypowered.natives.util.Natives;
|
import com.velocitypowered.natives.util.Natives;
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
import io.netty.bootstrap.ServerBootstrap;
|
||||||
import io.netty.channel.Channel;
|
import io.netty.buffer.PooledByteBufAllocator;
|
||||||
import io.netty.channel.ChannelException;
|
import io.netty.channel.*;
|
||||||
import io.netty.channel.ChannelFuture;
|
|
||||||
import io.netty.channel.ChannelInitializer;
|
|
||||||
import io.netty.channel.ChannelOption;
|
|
||||||
import io.netty.channel.EventLoopGroup;
|
|
||||||
import io.netty.channel.epoll.Epoll;
|
import io.netty.channel.epoll.Epoll;
|
||||||
import io.netty.channel.epoll.EpollEventLoopGroup;
|
import io.netty.channel.epoll.EpollEventLoopGroup;
|
||||||
import io.netty.channel.epoll.EpollServerSocketChannel;
|
import io.netty.channel.epoll.EpollServerSocketChannel;
|
||||||
@ -92,17 +88,24 @@ public class ServerConnection {
|
|||||||
Class oclass;
|
Class oclass;
|
||||||
LazyInitVar lazyinitvar;
|
LazyInitVar lazyinitvar;
|
||||||
|
|
||||||
if (Epoll.isAvailable() && this.f.ai()) {
|
try {
|
||||||
// PandaSpigot start - Unix domain socket support
|
if (Epoll.isAvailable() && this.f.ai()) {
|
||||||
if (address instanceof io.netty.channel.unix.DomainSocketAddress) {
|
// PandaSpigot start - Unix domain socket support
|
||||||
oclass = io.netty.channel.epoll.EpollServerDomainSocketChannel.class;
|
if (address instanceof io.netty.channel.unix.DomainSocketAddress) {
|
||||||
|
oclass = io.netty.channel.epoll.EpollServerDomainSocketChannel.class;
|
||||||
|
} else {
|
||||||
|
oclass = EpollServerSocketChannel.class;
|
||||||
|
}
|
||||||
|
// PandaSpigot end
|
||||||
|
lazyinitvar = ServerConnection.b;
|
||||||
|
ServerConnection.e.info("Using epoll channel type");
|
||||||
} else {
|
} else {
|
||||||
oclass = EpollServerSocketChannel.class;
|
oclass = NioServerSocketChannel.class;
|
||||||
|
lazyinitvar = ServerConnection.a;
|
||||||
|
ServerConnection.e.info("Using default channel type");
|
||||||
}
|
}
|
||||||
// PandaSpigot end
|
} catch (Exception e) {
|
||||||
lazyinitvar = ServerConnection.b;
|
ServerConnection.e.warn("An error occurred trying to check if Epoll is available, falling back to default channel type.");
|
||||||
ServerConnection.e.info("Using epoll channel type");
|
|
||||||
} else {
|
|
||||||
oclass = NioServerSocketChannel.class;
|
oclass = NioServerSocketChannel.class;
|
||||||
lazyinitvar = ServerConnection.a;
|
lazyinitvar = ServerConnection.a;
|
||||||
ServerConnection.e.info("Using default channel type");
|
ServerConnection.e.info("Using default channel type");
|
||||||
@ -115,11 +118,6 @@ public class ServerConnection {
|
|||||||
|
|
||||||
this.g.add((new ServerBootstrap()).channel(oclass).childHandler(new ChannelInitializer() {
|
this.g.add((new ServerBootstrap()).channel(oclass).childHandler(new ChannelInitializer() {
|
||||||
protected void initChannel(Channel channel) throws Exception {
|
protected void initChannel(Channel channel) throws Exception {
|
||||||
try {
|
|
||||||
channel.config().setOption(ChannelOption.TCP_NODELAY, Boolean.TRUE);
|
|
||||||
} catch (ChannelException ignored) {
|
|
||||||
}
|
|
||||||
|
|
||||||
// KigPaper start
|
// KigPaper start
|
||||||
if(PaperSpigotConfig.nettyReadTimeout) channel.pipeline().addLast("timeout", new ReadTimeoutHandler(30));
|
if(PaperSpigotConfig.nettyReadTimeout) channel.pipeline().addLast("timeout", new ReadTimeoutHandler(30));
|
||||||
// KigPaper end
|
// KigPaper end
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonDeserializationContext;
|
import com.google.gson.JsonDeserializationContext;
|
||||||
import com.google.gson.JsonDeserializer;
|
import com.google.gson.JsonDeserializer;
|
||||||
@ -202,7 +203,7 @@ public class ServerPing {
|
|||||||
JsonObject jsonobject1 = ChatDeserializer.l(jsonarray.get(i), "player[" + i + "]");
|
JsonObject jsonobject1 = ChatDeserializer.l(jsonarray.get(i), "player[" + i + "]");
|
||||||
String s = ChatDeserializer.h(jsonobject1, "id");
|
String s = ChatDeserializer.h(jsonobject1, "id");
|
||||||
|
|
||||||
agameprofile[i] = new GameProfile(UUID.fromString(s), ChatDeserializer.h(jsonobject1, "name"));
|
agameprofile[i] = new GameProfile(FastUUID.parseUUID(s), ChatDeserializer.h(jsonobject1, "name"));
|
||||||
}
|
}
|
||||||
|
|
||||||
serverping_serverpingplayersample.a(agameprofile);
|
serverping_serverpingplayersample.a(agameprofile);
|
||||||
@ -224,7 +225,7 @@ public class ServerPing {
|
|||||||
JsonObject jsonobject1 = new JsonObject();
|
JsonObject jsonobject1 = new JsonObject();
|
||||||
UUID uuid = serverping_serverpingplayersample.c()[i].getId();
|
UUID uuid = serverping_serverpingplayersample.c()[i].getId();
|
||||||
|
|
||||||
jsonobject1.addProperty("id", uuid == null ? "" : uuid.toString());
|
jsonobject1.addProperty("id", uuid == null ? "" : FastUUID.toString(uuid));
|
||||||
jsonobject1.addProperty("name", serverping_serverpingplayersample.c()[i].getName());
|
jsonobject1.addProperty("name", serverping_serverpingplayersample.c()[i].getName());
|
||||||
jsonarray.add(jsonobject1);
|
jsonarray.add(jsonobject1);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
|
import it.unimi.dsi.fastutil.objects.ObjectIterator;
|
||||||
import org.bukkit.craftbukkit.util.LongHash;
|
import org.bukkit.craftbukkit.util.LongHash;
|
||||||
import org.bukkit.craftbukkit.util.LongHashSet;
|
import org.bukkit.craftbukkit.util.LongHashSet;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
||||||
@ -20,28 +21,40 @@ public final class SpawnerCreature {
|
|||||||
// Spigot start - get entity count only from chunks being processed in b
|
// Spigot start - get entity count only from chunks being processed in b
|
||||||
private int getEntityCount(WorldServer server, Class oClass)
|
private int getEntityCount(WorldServer server, Class oClass)
|
||||||
{
|
{
|
||||||
|
// NachoSpigot start - remove Steam
|
||||||
|
int sum = 0;
|
||||||
|
for (ObjectIterator<Chunk> objectIterator = (server.chunkProviderServer).chunks.values().iterator(); objectIterator.hasNext(); ) {
|
||||||
|
Chunk c = objectIterator.next();
|
||||||
|
sum += c.entityCount.get(oClass);
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
// NachoSpigot end
|
||||||
|
|
||||||
|
|
||||||
// TacoSpigot start - use entire world, not just active chunks. Spigot broke vanilla expectations.
|
// TacoSpigot start - use entire world, not just active chunks. Spigot broke vanilla expectations.
|
||||||
if (true) {
|
// if (true) {
|
||||||
return server
|
//
|
||||||
.chunkProviderServer
|
// server.chunkProviderServer.chunks.values().iterator()
|
||||||
.chunks.values()
|
// return server
|
||||||
.stream()
|
// .chunkProviderServer
|
||||||
.collect(java.util.stream.Collectors.summingInt(c -> c.entityCount.get(oClass)));
|
// .chunks.values()
|
||||||
}
|
// .stream()
|
||||||
// TacoSpigot end
|
// .collect(java.util.stream.Collectors.summingInt(c -> c.entityCount.get(oClass)));
|
||||||
int i = 0;
|
// }
|
||||||
Iterator<Long> it = this.b.iterator();
|
// // TacoSpigot end
|
||||||
while ( it.hasNext() )
|
// int i = 0;
|
||||||
{
|
// Iterator<Long> it = this.b.iterator();
|
||||||
Long coord = it.next();
|
// while ( it.hasNext() )
|
||||||
int x = LongHash.msw( coord );
|
// {
|
||||||
int z = LongHash.lsw( coord );
|
// Long coord = it.next();
|
||||||
if ( !server.chunkProviderServer.unloadQueue.contains( coord ) && server.isChunkLoaded( x, z, true ) )
|
// int x = LongHash.msw( coord );
|
||||||
{
|
// int z = LongHash.lsw( coord );
|
||||||
i += server.getChunkAt( x, z ).entityCount.get( oClass );
|
// if ( !server.chunkProviderServer.unloadQueue.contains( coord ) && server.isChunkLoaded( x, z, true ) )
|
||||||
}
|
// {
|
||||||
}
|
// i += server.getChunkAt( x, z ).entityCount.get( oClass );
|
||||||
return i;
|
// }
|
||||||
|
// }
|
||||||
|
// return i;
|
||||||
}
|
}
|
||||||
// Spigot end
|
// Spigot end
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.elevatemc.spigot.config.eSpigotConfig;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class TileEntityEnchantTable extends TileEntity implements IUpdatePlayerListBox, ITileEntityContainer {
|
public class TileEntityEnchantTable extends TileEntity implements IUpdatePlayerListBox, ITileEntityContainer {
|
||||||
@ -36,6 +38,9 @@ public class TileEntityEnchantTable extends TileEntity implements IUpdatePlayerL
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void c() {
|
public void c() {
|
||||||
|
if (!eSpigotConfig.enchantmentTableTicking) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.k = this.j;
|
this.k = this.j;
|
||||||
this.m = this.l;
|
this.m = this.l;
|
||||||
EntityHuman entityhuman = this.world.findNearbyPlayer((double) ((float) this.position.getX() + 0.5F), (double) ((float) this.position.getY() + 0.5F), (double) ((float) this.position.getZ() + 0.5F), 3.0D);
|
EntityHuman entityhuman = this.world.findNearbyPlayer((double) ((float) this.position.getX() + 0.5F), (double) ((float) this.position.getY() + 0.5F), (double) ((float) this.position.getZ() + 0.5F), 3.0D);
|
||||||
|
@ -350,6 +350,8 @@ public class TileEntityFurnace extends TileEntityContainer implements IUpdatePla
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(item == Items.COAL) return 1600;
|
||||||
|
|
||||||
return item instanceof ItemTool && ((ItemTool) item).h().equals("WOOD") ? 200 : (item instanceof ItemSword && ((ItemSword) item).h().equals("WOOD") ? 200 : (item instanceof ItemHoe && ((ItemHoe) item).g().equals("WOOD") ? 200 : (item == Items.STICK ? 100 : (item == Items.COAL ? 1600 : (item == Items.LAVA_BUCKET ? 20000 : (item == Item.getItemOf(Blocks.SAPLING) ? 100 : (item == Items.BLAZE_ROD ? 2400 : 0)))))));
|
return item instanceof ItemTool && ((ItemTool) item).h().equals("WOOD") ? 200 : (item instanceof ItemSword && ((ItemSword) item).h().equals("WOOD") ? 200 : (item instanceof ItemHoe && ((ItemHoe) item).g().equals("WOOD") ? 200 : (item == Items.STICK ? 100 : (item == Items.COAL ? 1600 : (item == Items.LAVA_BUCKET ? 20000 : (item == Item.getItemOf(Blocks.SAPLING) ? 100 : (item == Items.BLAZE_ROD ? 2400 : 0)))))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -202,7 +202,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// PaperSpigot start
|
// PaperSpigot start
|
||||||
if (world.paperSpigotConfig.useHopperCheck && !world.tacoSpigotConfig.isHopperPushBased && !this.n()) { // TacoSpigot - dont use hopper check in push mode
|
if (world.paperSpigotConfig.useHopperCheck && !world.paperSpigotConfig.isHopperPushBased && !this.n()) { // TacoSpigot - dont use hopper check in push mode
|
||||||
this.d(world.spigotConfig.hopperCheck);
|
this.d(world.spigotConfig.hopperCheck);
|
||||||
}
|
}
|
||||||
// PaperSpigot end
|
// PaperSpigot end
|
||||||
@ -367,7 +367,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public static boolean a(IHopper ihopper) {
|
public static boolean a(IHopper ihopper) {
|
||||||
IInventory iinventory;
|
IInventory iinventory;
|
||||||
if (ihopper.getWorld().tacoSpigotConfig.isHopperPushBased && ihopper instanceof TileEntityHopper) {
|
if (ihopper.getWorld().paperSpigotConfig.isHopperPushBased && ihopper instanceof TileEntityHopper) {
|
||||||
BlockPosition pos = ((TileEntityHopper) ihopper).getPosition().up(); // Only pull from a above, because everything else comes to us
|
BlockPosition pos = ((TileEntityHopper) ihopper).getPosition().up(); // Only pull from a above, because everything else comes to us
|
||||||
iinventory = HopperHelper.getInventory(ihopper.getWorld(), pos);
|
iinventory = HopperHelper.getInventory(ihopper.getWorld(), pos);
|
||||||
} else {
|
} else {
|
||||||
@ -403,7 +403,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!ihopper.getWorld().tacoSpigotConfig.isHopperPushBased || !(ihopper instanceof TileEntityHopper)) { // TacoSpigot - only search for entities in 'pull mode'
|
} else if (!ihopper.getWorld().paperSpigotConfig.isHopperPushBased || !(ihopper instanceof TileEntityHopper)) { // TacoSpigot - only search for entities in 'pull mode'
|
||||||
|
|
||||||
for (EntityItem entityitem : a(ihopper.getWorld(), ihopper.A(), ihopper.B() + 1.0D, ihopper.C())) {
|
for (EntityItem entityitem : a(ihopper.getWorld(), ihopper.A(), ihopper.B() + 1.0D, ihopper.C())) {
|
||||||
if (a(ihopper, entityitem)) {
|
if (a(ihopper, entityitem)) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import com.eatthepath.uuid.FastUUID;
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
import com.google.common.collect.Iterators;
|
import com.google.common.collect.Iterators;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@ -287,7 +288,7 @@ public class UserCache {
|
|||||||
jsonobject.addProperty("name", usercache_usercacheentry.a().getName());
|
jsonobject.addProperty("name", usercache_usercacheentry.a().getName());
|
||||||
UUID uuid = usercache_usercacheentry.a().getId();
|
UUID uuid = usercache_usercacheentry.a().getId();
|
||||||
|
|
||||||
jsonobject.addProperty("uuid", uuid == null ? "" : uuid.toString());
|
jsonobject.addProperty("uuid", uuid == null ? "" : FastUUID.toString(uuid));
|
||||||
jsonobject.addProperty("expiresOn", UserCache.a.format(usercache_usercacheentry.b()));
|
jsonobject.addProperty("expiresOn", UserCache.a.format(usercache_usercacheentry.b()));
|
||||||
return jsonobject;
|
return jsonobject;
|
||||||
}
|
}
|
||||||
@ -316,7 +317,7 @@ public class UserCache {
|
|||||||
UUID uuid;
|
UUID uuid;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
uuid = UUID.fromString(s);
|
uuid = FastUUID.parseUUID(s);
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user