2013-01-18 15:36:42 +01:00
|
|
|
package com.comphenix.protocol;
|
|
|
|
|
2017-07-06 20:32:35 +02:00
|
|
|
import com.comphenix.protocol.utility.Constants;
|
|
|
|
import com.comphenix.protocol.utility.MinecraftReflection;
|
|
|
|
import com.comphenix.protocol.utility.MinecraftVersion;
|
2015-07-29 18:29:59 +02:00
|
|
|
|
2019-05-04 05:22:44 +02:00
|
|
|
import net.minecraft.server.v1_14_R1.DispenserRegistry;
|
2016-11-17 03:56:46 +01:00
|
|
|
|
2017-07-06 20:32:35 +02:00
|
|
|
import org.apache.logging.log4j.LogManager;
|
2015-04-06 23:30:01 +02:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.Server;
|
2019-05-04 05:22:44 +02:00
|
|
|
import org.bukkit.craftbukkit.v1_14_R1.CraftServer;
|
|
|
|
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemFactory;
|
|
|
|
import org.bukkit.craftbukkit.v1_14_R1.util.Versioning;
|
2015-04-06 23:30:01 +02:00
|
|
|
|
2019-05-04 05:22:44 +02:00
|
|
|
import static org.mockito.Mockito.mock;
|
|
|
|
import static org.mockito.Mockito.when;
|
2013-01-18 15:36:42 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Used to ensure that ProtocolLib and Bukkit is prepared to be tested.
|
2014-11-15 19:02:03 +01:00
|
|
|
*
|
2013-01-18 15:36:42 +01:00
|
|
|
* @author Kristian
|
|
|
|
*/
|
|
|
|
public class BukkitInitialization {
|
2018-09-15 20:32:18 +02:00
|
|
|
private static final BukkitInitialization instance = new BukkitInitialization();
|
|
|
|
|
|
|
|
private BukkitInitialization() {
|
|
|
|
System.out.println("Created new BukkitInitialization on " + Thread.currentThread().getName());
|
|
|
|
}
|
|
|
|
|
|
|
|
private boolean initialized;
|
|
|
|
private boolean packaged;
|
|
|
|
|
|
|
|
public static synchronized void initializePackage() {
|
|
|
|
instance.setPackage();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static synchronized void initializeItemMeta() {
|
|
|
|
instance.initialize();
|
|
|
|
}
|
2014-11-15 19:02:03 +01:00
|
|
|
|
2013-01-18 15:36:42 +01:00
|
|
|
/**
|
2018-07-19 19:13:06 +02:00
|
|
|
* Initialize Bukkit and ProtocolLib such that we can perfrom unit testing
|
2013-01-18 15:36:42 +01:00
|
|
|
*/
|
2018-09-15 20:32:18 +02:00
|
|
|
private void initialize() {
|
2013-01-18 15:36:42 +01:00
|
|
|
if (!initialized) {
|
|
|
|
// Denote that we're done
|
|
|
|
initialized = true;
|
2014-11-15 19:02:03 +01:00
|
|
|
|
2016-08-27 19:07:49 +02:00
|
|
|
initializePackage();
|
|
|
|
|
2017-07-06 20:32:35 +02:00
|
|
|
try {
|
|
|
|
LogManager.getLogger();
|
|
|
|
} catch (Throwable ex) {
|
2017-07-24 20:15:56 +02:00
|
|
|
// Happens only on my Jenkins, but if it errors here it works when it matters
|
2017-07-06 20:32:35 +02:00
|
|
|
ex.printStackTrace();
|
|
|
|
}
|
|
|
|
|
2019-05-04 05:22:44 +02:00
|
|
|
DispenserRegistry.init();
|
2015-04-06 01:23:06 +02:00
|
|
|
|
2013-01-18 15:36:42 +01:00
|
|
|
// Mock the server object
|
|
|
|
Server mockedServer = mock(Server.class);
|
2014-11-15 19:02:03 +01:00
|
|
|
|
2017-07-06 20:32:35 +02:00
|
|
|
when(mockedServer.getLogger()).thenReturn(java.util.logging.Logger.getLogger("Minecraft"));
|
2015-07-29 18:29:59 +02:00
|
|
|
when(mockedServer.getName()).thenReturn("Mock Server");
|
2015-06-25 23:34:34 +02:00
|
|
|
when(mockedServer.getVersion()).thenReturn(CraftServer.class.getPackage().getImplementationVersion());
|
2015-07-29 18:29:59 +02:00
|
|
|
when(mockedServer.getBukkitVersion()).thenReturn(Versioning.getBukkitVersion());
|
|
|
|
|
|
|
|
when(mockedServer.getItemFactory()).thenReturn(CraftItemFactory.instance());
|
2013-12-04 04:17:02 +01:00
|
|
|
when(mockedServer.isPrimaryThread()).thenReturn(true);
|
2014-11-15 19:02:03 +01:00
|
|
|
|
2013-01-18 15:36:42 +01:00
|
|
|
// Inject this fake server
|
2015-07-29 18:29:59 +02:00
|
|
|
Bukkit.setServer(mockedServer);
|
2015-04-06 23:30:01 +02:00
|
|
|
}
|
2013-01-18 15:36:42 +01:00
|
|
|
}
|
2014-11-15 19:02:03 +01:00
|
|
|
|
2013-01-18 15:36:42 +01:00
|
|
|
/**
|
|
|
|
* Ensure that package names are correctly set up.
|
|
|
|
*/
|
2018-09-15 20:32:18 +02:00
|
|
|
private void setPackage() {
|
2016-08-27 19:07:49 +02:00
|
|
|
if (!packaged) {
|
|
|
|
packaged = true;
|
|
|
|
|
2017-07-06 20:32:35 +02:00
|
|
|
try {
|
|
|
|
LogManager.getLogger();
|
|
|
|
} catch (Throwable ex) {
|
2017-07-24 20:15:56 +02:00
|
|
|
// Happens only on my Jenkins, but if it errors here it works when it matters
|
2017-07-06 20:32:35 +02:00
|
|
|
ex.printStackTrace();
|
|
|
|
}
|
|
|
|
|
2016-08-27 19:07:49 +02:00
|
|
|
MinecraftReflection.setMinecraftPackage(Constants.NMS, Constants.OBC);
|
2019-05-04 05:22:44 +02:00
|
|
|
MinecraftVersion.setCurrentVersion(MinecraftVersion.VILLAGE_UPDATE);
|
2016-08-27 19:07:49 +02:00
|
|
|
}
|
2013-01-18 15:36:42 +01:00
|
|
|
}
|
2017-07-06 20:32:35 +02:00
|
|
|
}
|