diff --git a/pom.xml b/pom.xml
index cab72a0..41a0a39 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
world.bentobox
bskyblock
- 1.3.0-SNAPSHOT
+ 1.4.0-SNAPSHOT
BSkyBlock
BSkyBlock is an add-on for BentoBox, an expandable Minecraft Bukkit plugin for island-type games like SkyBlock or AcidIsland.
@@ -91,7 +91,7 @@
world.bentobox
bentobox
- 1.3.0-SNAPSHOT
+ 1.4.0-SNAPSHOT
provided
diff --git a/src/main/java/world/bentobox/bskyblock/BSkyBlock.java b/src/main/java/world/bentobox/bskyblock/BSkyBlock.java
index 51597ea..972336e 100644
--- a/src/main/java/world/bentobox/bskyblock/BSkyBlock.java
+++ b/src/main/java/world/bentobox/bskyblock/BSkyBlock.java
@@ -41,8 +41,10 @@ public class BSkyBlock extends GameModeAddon {
// Disable
logError("BSkyBlock settings could not load! Addon disabled.");
setState(State.DISABLED);
+ return;
}
new Config<>(this, Settings.class).saveConfigObject(settings);
+
}
@Override
@@ -73,7 +75,7 @@ public class BSkyBlock extends GameModeAddon {
public void createWorlds() {
String worldName = settings.getWorldName();
if (getServer().getWorld(worldName) == null) {
- getLogger().info("Creating BSkyBlock world ...");
+ log("Creating BSkyBlock world ...");
}
chunkGenerator = new ChunkGeneratorWorld(this);
// Create the world if it does not exist
diff --git a/src/test/java/world/bentobox/bskyblock/BSkyBlockTest.java b/src/test/java/world/bentobox/bskyblock/BSkyBlockTest.java
new file mode 100644
index 0000000..2f78ee0
--- /dev/null
+++ b/src/test/java/world/bentobox/bskyblock/BSkyBlockTest.java
@@ -0,0 +1,219 @@
+package world.bentobox.bskyblock;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Server;
+import org.bukkit.entity.Player;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.mockito.stubbing.Answer;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
+
+import world.bentobox.bentobox.BentoBox;
+import world.bentobox.bentobox.api.addons.AddonDescription;
+import world.bentobox.bentobox.api.user.User;
+import world.bentobox.bentobox.database.objects.Island;
+import world.bentobox.bentobox.managers.CommandsManager;
+import world.bentobox.bentobox.managers.IslandWorldManager;
+import world.bentobox.bentobox.managers.IslandsManager;
+import world.bentobox.bskyblock.generators.ChunkGeneratorWorld;
+
+/**
+ * @author tastybento
+ *
+ */
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({Bukkit.class, BentoBox.class, User.class })
+public class BSkyBlockTest {
+
+ private User user;
+ private IslandsManager im;
+ private Island island;
+ private BSkyBlock addon;
+ private BentoBox plugin;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ // Set up plugin
+ plugin = mock(BentoBox.class);
+ Whitebox.setInternalState(BentoBox.class, "instance", plugin);
+ when(plugin.getLogger()).thenReturn(Logger.getAnonymousLogger());
+ // Command manager
+ CommandsManager cm = mock(CommandsManager.class);
+ when(plugin.getCommandsManager()).thenReturn(cm);
+
+ // Player
+ Player p = mock(Player.class);
+ // Sometimes use Mockito.withSettings().verboseLogging()
+ user = mock(User.class);
+ when(user.isOp()).thenReturn(false);
+ UUID uuid = UUID.randomUUID();
+ when(user.getUniqueId()).thenReturn(uuid);
+ when(user.getPlayer()).thenReturn(p);
+ when(user.getName()).thenReturn("tastybento");
+ User.setPlugin(plugin);
+
+ // Island World Manager
+ IslandWorldManager iwm = mock(IslandWorldManager.class);
+ when(plugin.getIWM()).thenReturn(iwm);
+
+
+ // Player has island to begin with
+ im = mock(IslandsManager.class);
+ island = mock(Island.class);
+ when(im.getIsland(Mockito.any(), Mockito.any(UUID.class))).thenReturn(island);
+ when(plugin.getIslands()).thenReturn(im);
+
+ // Locales
+ // Return the reference (USE THIS IN THE FUTURE)
+ when(user.getTranslation(Mockito.anyString())).thenAnswer((Answer) invocation -> invocation.getArgumentAt(0, String.class));
+
+ // Server
+ PowerMockito.mockStatic(Bukkit.class);
+ Server server = mock(Server.class);
+ when(Bukkit.getServer()).thenReturn(server);
+ when(Bukkit.getLogger()).thenReturn(Logger.getAnonymousLogger());
+
+ // Addon
+ addon = new BSkyBlock();
+ File jFile = new File("addon.jar");
+ List lines = Arrays.asList("# BSkyBlock Configuration", "uniqueId: config");
+ Path path = Paths.get("config.yml");
+ Files.write(path, lines, Charset.forName("UTF-8"));
+ try (JarOutputStream tempJarOutputStream = new JarOutputStream(new FileOutputStream(jFile))) {
+ //Added the new files to the jar.
+ try (FileInputStream fis = new FileInputStream(path.toFile())) {
+
+ byte[] buffer = new byte[1024];
+ int bytesRead = 0;
+ JarEntry entry = new JarEntry(path.toString());
+ tempJarOutputStream.putNextEntry(entry);
+ while((bytesRead = fis.read(buffer)) != -1) {
+ tempJarOutputStream.write(buffer, 0, bytesRead);
+ }
+ }
+ }
+ File dataFolder = new File("addons/BSkyBlock");
+ addon.setDataFolder(dataFolder);
+ addon.setFile(jFile);
+ AddonDescription desc = new AddonDescription.Builder("bentobox", "bskyblock", "1.3").description("test").authors("tasty").build();
+ addon.setDescription(desc);
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ new File("addon.jar").delete();
+ new File("config.yml").delete();
+ new File("addons/BSkyBlock","config.yml").delete();
+ new File("addons/BSkyBlock").delete();
+ new File("addons").delete();
+ }
+
+ /**
+ * Test method for {@link world.bentobox.bskyblock.BSkyBlock#onLoad()}.
+ */
+ @Test
+ public void testOnLoad() {
+ addon.onLoad();
+ // Check that config.yml file has been saved
+ File check = new File("addons/BSkyBlock","config.yml");
+ assertTrue(check.exists());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.bskyblock.BSkyBlock#onEnable()}.
+ */
+ @Test
+ public void testOnEnable() {
+ testOnLoad();
+ addon.onEnable();
+ assertTrue(addon.getPlayerCommand().isPresent());
+ assertTrue(addon.getAdminCommand().isPresent());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.bskyblock.BSkyBlock#onReload()}.
+ */
+ @Test
+ public void testOnReload() {
+ addon.onReload();
+ // Check that config.yml file has been saved
+ File check = new File("addons/BSkyBlock","config.yml");
+ assertTrue(check.exists());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.bskyblock.BSkyBlock#createWorlds()}.
+ */
+ @Test
+ public void testCreateWorlds() {
+ addon.onLoad();
+ addon.createWorlds();
+ Mockito.verify(plugin).log("[bskyblock] Creating BSkyBlock world ...");
+ Mockito.verify(plugin).log("[bskyblock] Creating BSkyBlock's Nether...");
+ Mockito.verify(plugin).log("[bskyblock] Creating BSkyBlock's End World...");
+ }
+
+ /**
+ * Test method for {@link world.bentobox.bskyblock.BSkyBlock#getSettings()}.
+ */
+ @Test
+ public void testGetSettings() {
+ addon.onLoad();
+ assertNotNull(addon.getSettings());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.bskyblock.BSkyBlock#getWorldSettings()}.
+ */
+ @Test
+ public void testGetWorldSettings() {
+ addon.onLoad();
+ assertEquals(addon.getSettings(), addon.getWorldSettings());
+ }
+
+ /**
+ * Test method for {@link world.bentobox.bskyblock.BSkyBlock#getDefaultWorldGenerator(java.lang.String, java.lang.String)}.
+ */
+ @Test
+ public void testGetDefaultWorldGeneratorStringString() {
+ assertNull(addon.getDefaultWorldGenerator("", ""));
+ addon.onLoad();
+ addon.createWorlds();
+ assertNotNull(addon.getDefaultWorldGenerator("", ""));
+ assertTrue(addon.getDefaultWorldGenerator("", "") instanceof ChunkGeneratorWorld);
+ }
+
+}