diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 2352b31..28c1e46 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,15 +2,43 @@
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -22,17 +50,22 @@
+
+
+
+
+
-
+
@@ -43,10 +76,10 @@
-
+
-
+
@@ -110,58 +143,80 @@
+
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
+
+
+
+
+
+
+ file://$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
+ 440
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java b/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java
index 6e784dc..ce7a4c2 100644
--- a/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java
+++ b/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java
@@ -1,7 +1,7 @@
-package net.seanomilk.tamablefoxes;
+package net.seanomik.tamablefoxes;
import net.minecraft.server.v1_15_R1.*;
-import net.seanomilk.tamablefoxes.pathfinding.*;
+import net.seanomik.tamablefoxes.pathfinding.*;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
@@ -30,11 +30,17 @@ public class EntityTamableFox extends EntityFox {
private FoxPathfindGoalSit goalSit;
private PathfinderGoalNearestAttackableTarget goalAttack;
+ public int databaseIndex = -1;
+
public EntityTamableFox(TamableFoxes plugin, EntityTypes entitytypes, World world) {
super(EntityTypes.FOX, world);
this.plugin = plugin;
thisFox = (Fox) this.getBukkitEntity();
- plugin.getFoxUUIDs().put(this.getBukkitEntity().getUniqueId(), null);
+
+ if (!plugin.getFoxUUIDs().containsKey(thisFox.getUniqueId())) {
+ plugin.getFoxUUIDs().put(this.getBukkitEntity().getUniqueId(), null);
+ }
+
this.setPersistent();
}
@@ -153,7 +159,7 @@ public class EntityTamableFox extends EntityFox {
public void setChosenName(String chosenName) {
this.chosenName = chosenName;
- plugin.getConfigFoxes().set("Foxes." + getUniqueID() + ".name", chosenName).save();
+ //plugin.getConfigFoxes().set("Foxes." + getUniqueID() + ".name", chosenName).save();
updateFoxVisual();
}
@@ -163,7 +169,7 @@ public class EntityTamableFox extends EntityFox {
public void setOwner(EntityLiving owner) {
this.owner = owner;
- plugin.getConfigFoxes().set("Foxes." + getUniqueID() + ".owner", owner.getUniqueIDString()).save();
+ //plugin.getConfigFoxes().set("Foxes." + getUniqueID() + ".owner", owner.getUniqueIDString()).save();
updateFoxVisual();
}
diff --git a/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java b/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
index a2b11f9..ef9ad6f 100644
--- a/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
+++ b/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
@@ -1,11 +1,13 @@
-package net.seanomilk.tamablefoxes;
+package net.seanomik.tamablefoxes;
import com.google.common.collect.Maps;
import com.mojang.datafixers.DataFixUtils;
import com.mojang.datafixers.types.Type;
-import net.seanomilk.tamablefoxes.command.CommandSpawnTamableFox;
-import net.seanomilk.tamablefoxes.io.FileManager;
+import net.seanomik.tamablefoxes.command.CommandSpawnTamableFox;
+import net.seanomik.tamablefoxes.io.FileManager;
import net.minecraft.server.v1_15_R1.*;
+import net.seanomik.tamablefoxes.sqlite.SQLiteHandler;
+import net.seanomik.tamablefoxes.sqlite.SQLiteSetterGetter;
import net.wesjd.anvilgui.AnvilGUI;
import org.bukkit.Chunk;
import org.bukkit.Material;
@@ -16,11 +18,9 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftFox;
-import org.bukkit.craftbukkit.v1_15_R1.entity.CraftItem;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
import org.bukkit.entity.Entity;
-import org.bukkit.entity.EntityType;
import org.bukkit.entity.Fox;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -34,31 +34,29 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
+// @TODO: Add language.yml
+
public class TamableFoxes extends JavaPlugin implements Listener {
public static final String ITEM_INSPECTOR_LORE = ChatColor.BLUE + "Tamable Fox Inspector";
public static final String TAG_TAME_FOX = "tameablefox";
- private FileManager fileManager;
+ private FileManager fileManager = new FileManager(this);
- private Map foxUUIDs;
+ private Map foxUUIDs = Maps.newHashMap(); // FoxUUID, OwnerUUID
private EntityTypes customType;
-
private boolean isOnLoad = true;
-
- private Map lookupCache;
-
- private FileManager.Config config, configFoxes;
-
- private Map waitingName;
+ private Map lookupCache = Maps.newHashMap();
+ private List spawnedFoxes;
+ private FileManager.Config config;//, configFoxes;
+ public static SQLiteHandler sqLiteHandler = new SQLiteHandler();
+ public static SQLiteSetterGetter sqLiteSetterGetter = new SQLiteSetterGetter();
@Override
public void onEnable() {
@@ -69,19 +67,17 @@ public class TamableFoxes extends JavaPlugin implements Listener {
return;
}
- fileManager = new FileManager(this);
+ sqLiteHandler.connect();
+ sqLiteSetterGetter.createTablesIfNotExist();
+
this.config = fileManager.getConfig("config.yml");
this.config.copyDefaults(true).save();
- this.configFoxes = fileManager.getConfig("foxes.yml");
- this.configFoxes.copyDefaults(true).save();
+ /*this.configFoxes = fileManager.getConfig("foxes.yml");
+ this.configFoxes.copyDefaults(true).save();*/
this.getServer().getPluginManager().registerEvents(this, this);
this.getCommand("spawntamablefox").setExecutor(new CommandSpawnTamableFox(this));
- this.foxUUIDs = Maps.newHashMap();
- this.lookupCache = Maps.newHashMap();
- this.waitingName = Maps.newHashMap();
-
final Map> types = (Map>) DataConverterRegistry.a()
.getSchema(DataFixUtils.makeKey(SharedConstants.getGameVersion().getWorldVersion()))
.findChoiceType(DataConverterTypes.ENTITY).types();
@@ -96,11 +92,21 @@ public class TamableFoxes extends JavaPlugin implements Listener {
@Override
public void onDisable() {
+ try {
+ for (EntityTamableFox fox : spawnedFoxes) {
+ sqLiteSetterGetter.saveFox(fox);
+ fox.getBukkitEntity().remove();
+ }
+
+ getServer().getConsoleSender().sendMessage(getPrefix() + ChatColor.GREEN + "Saved all foxes successfully!");
+ } catch (Exception e) {
+ getServer().getConsoleSender().sendMessage(getPrefix() + ChatColor.RED + "Failed to save foxes!");
+ }
}
private void replaceFoxesOnLoad() {
- int amountReplaced = 0;
+ /*int amountReplaced = 0;
for (World world : Bukkit.getWorlds()) {
Chunk[] loadedChunks = world.getLoadedChunks();
@@ -113,7 +119,7 @@ public class TamableFoxes extends JavaPlugin implements Listener {
continue;
EntityTamableFox tamableFox = (EntityTamableFox) spawnTamableFox(entity.getLocation(), ((CraftFox) entity).getHandle().getFoxType());
- final YamlConfiguration configuration = configFoxes.get();
+ //final YamlConfiguration configuration = configFoxes.get();
// get living entity data
if (configuration.isConfigurationSection("Foxes." + entity.getUniqueId())) {
String owner = configuration.getString("Foxes." + entity.getUniqueId() + ".owner");
@@ -142,8 +148,10 @@ public class TamableFoxes extends JavaPlugin implements Listener {
tamableFox.updateFox();
tamableFox.setAge(((CraftFox) entity).getAge());
ItemStack entityMouthItem = ((CraftFox) entity).getEquipment().getItemInMainHand();
+ entityMouthItem.setAmount(1);
+
if (entityMouthItem.getType() != Material.AIR) {
- tamableFox.setSlot(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(new ItemStack(entityMouthItem.getType(), 1)));
+ tamableFox.setSlot(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(entityMouthItem));
} else {
tamableFox.setSlot(EnumItemSlot.MAINHAND, new net.minecraft.server.v1_15_R1.ItemStack(Items.AIR));
}
@@ -153,8 +161,10 @@ public class TamableFoxes extends JavaPlugin implements Listener {
tamableFox.setAge(((CraftFox) entity).getAge());
ItemStack entityMouthItem = ((CraftFox) entity).getEquipment().getItemInMainHand();
+ entityMouthItem.setAmount(1);
+
if (entityMouthItem.getType() != Material.AIR) {
- tamableFox.setSlot(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(new ItemStack(entityMouthItem.getType(), 1)));
+ tamableFox.setSlot(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(entityMouthItem));
} else {
tamableFox.setSlot(EnumItemSlot.MAINHAND, new net.minecraft.server.v1_15_R1.ItemStack(Items.AIR));
}
@@ -166,7 +176,9 @@ public class TamableFoxes extends JavaPlugin implements Listener {
}
}
- configFoxes.save();
+ configFoxes.save();*/
+
+ spawnedFoxes = sqLiteSetterGetter.spawnFoxes();
this.isOnLoad = false;
}
@@ -179,15 +191,15 @@ public class TamableFoxes extends JavaPlugin implements Listener {
EntityFox fox = (EntityFox) spawnedEntity;
fox.setFoxType(type);
- configFoxes.get().set("Foxes." + spawnedEntity.getUniqueID() + ".owner", "none");
- fileManager.saveConfig("foxes.yml");
+ /*configFoxes.get().set("Foxes." + spawnedEntity.getUniqueID() + ".owner", "none");
+ fileManager.saveConfig("foxes.yml");*/
return fox;
}
@EventHandler
public void onChunkLoad(ChunkLoadEvent event) {
- if (isOnLoad)
+ /*if (isOnLoad)
return;
Chunk chunk = event.getChunk();
Entity[] entities = chunk.getEntities();
@@ -241,7 +253,7 @@ public class TamableFoxes extends JavaPlugin implements Listener {
entity.remove();
}
- }
+ }*/
}
@@ -363,12 +375,11 @@ public class TamableFoxes extends JavaPlugin implements Listener {
if(!text.equals("")) {
tamableFox.setChosenName(text);
plr.sendMessage(getPrefix() + ChatColor.GREEN + text + " is perfect!");
- return AnvilGUI.Response.close();
- } else {
- return AnvilGUI.Response.text("Insert a name for your fox!");
}
+
+ return AnvilGUI.Response.close();
})
- .preventClose() // Prevents the inventory from being closed
+ //.preventClose() // Prevents the inventory from being closed
.text("Fox name") // Sets the text the GUI should start with
.plugin(this) // Set the plugin instance
.open(player); // Opens the GUI for the player provided
@@ -420,7 +431,43 @@ public class TamableFoxes extends JavaPlugin implements Listener {
spawnTamableFox(entity.getLocation(), foxType);
event.setCancelled(true);
}
+ }
+ @EventHandler
+ public void onEntityDeathEvent(EntityDeathEvent event) {
+ Entity entity = event.getEntity();
+ if (!this.isTamableFox(entity)) {
+
+ return;
+ }
+
+ // Remove the fox from storage
+ lookupCache.remove(entity.getUniqueId());
+ foxUUIDs.remove(entity.getUniqueId());
+ spawnedFoxes.remove(entity.getUniqueId());
+
+ //sqLiteSetterGetter.removeFox();
+
+
+ EntityTamableFox tamableFox = (EntityTamableFox) ((CraftEntity) entity).getHandle();
+
+ if (tamableFox.getOwner() != null) {
+ Player owner = ((EntityPlayer)tamableFox.getOwner()).getBukkitEntity();
+ owner.sendMessage(getPrefix() + ChatColor.RED + tamableFox.getChosenName() + " was killed!");
+ }
+
+ sqLiteSetterGetter.removeFox(tamableFox);
+
+ /*if (configFoxes.get().getConfigurationSection("Foxes").contains(entity.getUniqueId().toString())) {
+ *//*EntityTamableFox tamableFox = (EntityTamableFox) ((CraftEntity) entity).getHandle();
+ if (tamableFox.getOwner() != null && tamableFox.getOwner() instanceof Player) {
+ Player owner = (Player) tamableFox.getOwner();
+ owner.sendMessage(getPrefix() + ChatColor.RED + tamableFox.getChosenName() + " was killed!");
+ }*//*
+
+ configFoxes.get().set("Foxes." + entity.getUniqueId(), null);
+ fileManager.saveConfig("foxes.yml");
+ }*/
}
public Entity getEntityByUniqueId(UUID uniqueId) {
@@ -445,26 +492,6 @@ public class TamableFoxes extends JavaPlugin implements Listener {
return null;
}
- @EventHandler
- public void onEntityDeathEvent(EntityDeathEvent event) {
- Entity entity = event.getEntity();
- if (!this.isTamableFox(entity))
- return;
- this.lookupCache.remove(entity.getUniqueId());
- foxUUIDs.remove(entity.getUniqueId());
-
- if (configFoxes.get().getConfigurationSection("Foxes").contains(entity.getUniqueId().toString())) {
- /*EntityTamableFox tamableFox = (EntityTamableFox) ((CraftEntity) entity).getHandle();
- if (tamableFox.getOwner() != null && tamableFox.getOwner() instanceof Player) {
- Player owner = (Player) tamableFox.getOwner();
- owner.sendMessage(getPrefix() + ChatColor.RED + tamableFox.getChosenName() + " was killed!");
- }*/
-
- configFoxes.get().set("Foxes." + entity.getUniqueId(), null);
- fileManager.saveConfig("foxes.yml");
- }
- }
-
public boolean isTamableFox(org.bukkit.entity.Entity entity) {
return ((CraftEntity) entity).getHandle().getClass().getName().contains("TamableFox")
|| ((CraftEntity) entity).getHandle() instanceof EntityTamableFox;
@@ -483,9 +510,9 @@ public class TamableFoxes extends JavaPlugin implements Listener {
return config;
}
- public FileManager.Config getConfigFoxes() {
+ /*public FileManager.Config getConfigFoxes() {
return configFoxes;
- }
+ }*/
public EntityTypes getCustomType() {
return customType;
@@ -495,6 +522,10 @@ public class TamableFoxes extends JavaPlugin implements Listener {
return foxUUIDs;
}
+ public List getSpawnedFoxes() {
+ return spawnedFoxes;
+ }
+
public static String getPrefix() {
//return ChatColor.translateAlternateColorCodes('&', (String) config.get("prefix"));
return ChatColor.RED + "[Tamable Foxes] ";
diff --git a/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java b/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java
index 69781f3..0d08cf8 100644
--- a/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java
+++ b/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java
@@ -1,11 +1,11 @@
-package net.seanomilk.tamablefoxes.command;
+package net.seanomik.tamablefoxes.command;
-import net.seanomilk.tamablefoxes.TamableFoxes;
+import net.seanomik.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.TamableFoxes;
import net.minecraft.server.v1_15_R1.EntityFox;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
@@ -41,12 +41,18 @@ public class CommandSpawnTamableFox implements TabExecutor {
if (args.length != 0) {
switch (args[0]) {
case "red":
- plugin.spawnTamableFox(player.getLocation(), EntityFox.Type.RED);
+ EntityTamableFox fox = (EntityTamableFox) plugin.spawnTamableFox(player.getLocation(), EntityFox.Type.RED);
+ plugin.getSpawnedFoxes().add(fox);
+ plugin.sqLiteSetterGetter.saveFox(fox);
+
player.sendMessage(plugin.getPrefix() + ChatColor.RESET + "Spawned a " + ChatColor.RED + "Red" + ChatColor.WHITE + " fox.");
break;
case "snow":
- plugin.spawnTamableFox(player.getLocation(), EntityFox.Type.SNOW);
- player.sendMessage(plugin.getPrefix() + ChatColor.RESET + "Spawned a Snow fox.");
+ EntityTamableFox spawnedFox = (EntityTamableFox) plugin.spawnTamableFox(player.getLocation(), EntityFox.Type.SNOW);
+ plugin.getSpawnedFoxes().add(spawnedFox);
+ plugin.sqLiteSetterGetter.saveFox(spawnedFox);
+
+ player.sendMessage(plugin.getPrefix() + ChatColor.RESET + "Spawned a " + ChatColor.AQUA + "Snow" + ChatColor.WHITE + " fox.");
break;
case "verbose":
player.sendMessage(plugin.getFoxUUIDs().toString());
@@ -60,7 +66,7 @@ public class CommandSpawnTamableFox implements TabExecutor {
if (player.getInventory().getItemInMainHand().getType() == Material.AIR) {
player.getInventory().setItemInMainHand(itemStack);
- player.sendMessage(plugin.getPrefix() + ChatColor.GREEN + "Given Inspector item.");
+ player.sendMessage(plugin.getPrefix() + ChatColor.GREEN + "Gave Inspector item.");
} else if (player.getInventory().firstEmpty() == -1) {
player.sendMessage(plugin.getPrefix() + ChatColor.RED + "Your inventory is full!");
} else {
@@ -70,7 +76,7 @@ public class CommandSpawnTamableFox implements TabExecutor {
break;
case "reload":
plugin.getMainConfig().reload();
- plugin.getConfigFoxes().reload();
+ //plugin.getConfigFoxes().reload();
player.sendMessage(plugin.getPrefix() + ChatColor.GREEN + "Reloaded.");
break;
default:
diff --git a/src/main/java/net/seanomik/tamablefoxes/io/FileManager.java b/src/main/java/net/seanomik/tamablefoxes/io/FileManager.java
index 18b7a7d..a771998 100644
--- a/src/main/java/net/seanomik/tamablefoxes/io/FileManager.java
+++ b/src/main/java/net/seanomik/tamablefoxes/io/FileManager.java
@@ -1,7 +1,7 @@
-package net.seanomilk.tamablefoxes.io;
+package net.seanomik.tamablefoxes.io;
import com.google.common.collect.Maps;
-import net.seanomilk.tamablefoxes.TamableFoxes;
+import net.seanomik.tamablefoxes.TamableFoxes;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBeg.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBeg.java
index c2e3a8d..cd8d69f 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBeg.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBeg.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.*;
import java.util.EnumSet;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBreed.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBreed.java
index 03f0282..0a96b94 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBreed.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalBreed.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory;
import org.bukkit.event.entity.CreatureSpawnEvent;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFleeSun.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFleeSun.java
index bbbf9cb..b30786f 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFleeSun.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFleeSun.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.BlockPosition;
import net.minecraft.server.v1_15_R1.PathfinderGoalFleeSun;
import net.minecraft.server.v1_15_R1.WorldServer;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFloat.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFloat.java
index 3d98611..6f80acd 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFloat.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFloat.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.PathfinderGoalFloat;
import java.lang.reflect.InvocationTargetException;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFollowOwner.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFollowOwner.java
index 9e447cf..46cc35d 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFollowOwner.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalFollowOwner.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalHurtByTarget.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalHurtByTarget.java
index 42ac510..61bb279 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalHurtByTarget.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalHurtByTarget.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLunge.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLunge.java
index f6136ea..a95c24e 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLunge.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLunge.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.*;
import java.lang.reflect.Field;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLungeUNKNOWN_USE.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLungeUNKNOWN_USE.java
index e17be8c..76d2972 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLungeUNKNOWN_USE.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalLungeUNKNOWN_USE.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.Entity;
import net.minecraft.server.v1_15_R1.EntityFox;
import net.minecraft.server.v1_15_R1.EntityLiving;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalMeleeAttack.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalMeleeAttack.java
index 6357f36..5a3445c 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalMeleeAttack.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalMeleeAttack.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.EntityLiving;
import net.minecraft.server.v1_15_R1.PathfinderGoalMeleeAttack;
import net.minecraft.server.v1_15_R1.SoundEffects;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtByTarget.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtByTarget.java
index ca3c922..b360a43 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtByTarget.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtByTarget.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.EntityLiving;
import net.minecraft.server.v1_15_R1.PathfinderGoalTarget;
import net.minecraft.server.v1_15_R1.PathfinderTargetCondition;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtTarget.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtTarget.java
index 23833a8..b205318 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtTarget.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalOwnerHurtTarget.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.EntityLiving;
import net.minecraft.server.v1_15_R1.PathfinderGoalTarget;
import net.minecraft.server.v1_15_R1.PathfinderTargetCondition;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalPickBushes.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalPickBushes.java
index a267cd3..567c5cc 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalPickBushes.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalPickBushes.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomStrollLand.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomStrollLand.java
index b465875..ad1f434 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomStrollLand.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomStrollLand.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.PathfinderGoalRandomStroll;
import net.minecraft.server.v1_15_R1.RandomPositionGenerator;
import net.minecraft.server.v1_15_R1.Vec3D;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomTargetNonTamed.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomTargetNonTamed.java
index aa1e08f..be17afe 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomTargetNonTamed.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalRandomTargetNonTamed.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.EntityLiving;
import net.minecraft.server.v1_15_R1.PathfinderGoalNearestAttackableTarget;
diff --git a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalSit.java b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalSit.java
index 91431dc..efcbdfc 100644
--- a/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalSit.java
+++ b/src/main/java/net/seanomik/tamablefoxes/pathfinding/FoxPathfindGoalSit.java
@@ -1,6 +1,6 @@
-package net.seanomilk.tamablefoxes.pathfinding;
+package net.seanomik.tamablefoxes.pathfinding;
-import net.seanomilk.tamablefoxes.EntityTamableFox;
+import net.seanomik.tamablefoxes.EntityTamableFox;
import net.minecraft.server.v1_15_R1.EntityLiving;
import net.minecraft.server.v1_15_R1.PathfinderGoal;
diff --git a/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteHandler.java b/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteHandler.java
index 3937fde..41db155 100644
--- a/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteHandler.java
+++ b/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteHandler.java
@@ -1,4 +1,4 @@
-package net.seanomik.tamablefoxes.sqllite;
+package net.seanomik.tamablefoxes.sqlite;
import net.seanomik.tamablefoxes.TamableFoxes;
import org.bukkit.Bukkit;
@@ -18,7 +18,7 @@ public class SQLiteHandler {
String url = "jdbc:sqlite:" + baseLoc + "plugins/TamableFoxes/foxes.db";
connection = DriverManager.getConnection(url);
- Bukkit.getConsoleSender().sendMessage(TamableFoxes.getPrefix() + "Connection to SQLite has been established.");
+ //Bukkit.getConsoleSender().sendMessage(TamableFoxes.getPrefix() + "Connection to SQLite has been established.");
} catch (SQLException e) {
e.printStackTrace();
}
diff --git a/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java b/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java
index f099499..c00ca4d 100644
--- a/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java
+++ b/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java
@@ -1,20 +1,28 @@
-package net.seanomik.tamablefoxes.sqllite;
+package net.seanomik.tamablefoxes.sqlite;
+import net.minecraft.server.v1_15_R1.BlockPosition;
+import net.minecraft.server.v1_15_R1.EntityFox;
import net.minecraft.server.v1_15_R1.EnumItemSlot;
import net.seanomik.tamablefoxes.EntityTamableFox;
import net.seanomik.tamablefoxes.TamableFoxes;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
+import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
+import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
import java.util.*;
public class SQLiteSetterGetter {
- public static Plugin plugin;
+ public static TamableFoxes plugin;
public static SQLiteHandler sqLiteHandler;
public void createTablesIfNotExist() {
@@ -24,9 +32,11 @@ public class SQLiteSetterGetter {
String foxesTable =
"CREATE TABLE IF NOT EXISTS `foxes` ( " +
- "`OWNER_UUID` TEXT PRIMARY KEY , " +
- "`NAME` TEXT NOT NULL , " +
+ "`INDEX` INTEGER PRIMARY KEY AUTOINCREMENT , " +
+ "`OWNER_UUID` TEXT NOT NULL , " +
+ "`NAME` TEXT , " +
"`LOCATION` TEXT NOT NULL , " +
+ "`TYPE` TEXT NOT NULL , " +
"`MOUTH_ITEM` TEXT NOT NULL);";
try {
@@ -57,14 +67,96 @@ public class SQLiteSetterGetter {
plugin = TamableFoxes.getPlugin(TamableFoxes.class);
try {
sqLiteHandler.connect();
- PreparedStatement statement = sqLiteHandler.getConnection()
- .prepareStatement("INSERT INTO foxes (OWNER_UUID,NAME,LOCATION,MOUTH_ITEM) VALUES (?,?,?,?)");
- statement.setString(1, (fox.getOwner().getUniqueID() == null) ? "none" : fox.getOwner().getUniqueID().toString());
+ PreparedStatement statement = sqLiteHandler.getConnection().prepareStatement("INSERT INTO foxes (OWNER_UUID,NAME,LOCATION,TYPE,MOUTH_ITEM) VALUES (?,?,?,?,?)");
+ if (fox.databaseIndex != -1) {
+ statement = sqLiteHandler.getConnection().prepareStatement("UPDATE foxes SET OWNER_UUID=?, NAME=?, LOCATION=?, TYPE=?, MOUTH_ITEM=? WHERE INDEX=" + fox.databaseIndex);
+ }
+
+ statement.setString(1, (fox.getOwner() == null) ? "none" : fox.getOwner().getUniqueID().toString());
statement.setString(2, fox.getChosenName());
- statement.setString(3, fox.locX() + "," + fox.locY() + "," + fox.locY());
- statement.setString(4, fox.getEquipment(EnumItemSlot.MAINHAND).toString());
+ statement.setString(3, fox.getWorld().worldData.getName() + "," + fox.locX() + "," + fox.locY() + "," + fox.locY());
+ statement.setString(4, fox.getFoxType().toString());
+ statement.setString(5, fox.getEquipment(EnumItemSlot.MAINHAND).toString().toUpperCase().substring(fox.getEquipment(EnumItemSlot.MAINHAND).toString().indexOf(' ')+1));
+ statement.executeUpdate();
+
+ ResultSet result = statement.getGeneratedKeys();
+ if (result.next()) {
+ fox.databaseIndex = result.getInt("INDEX");
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ if (sqLiteHandler.getConnection() != null) {
+ try {
+ sqLiteHandler.getConnection().close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public void saveFoxes(List foxes) { // @TODO: Optimize
+ for (EntityTamableFox fox : foxes) {
+ saveFox(fox);
+ }
+ }
+
+ public List spawnFoxes() {
+ plugin = TamableFoxes.getPlugin(TamableFoxes.class);
+ try {
+ sqLiteHandler.connect();
+ PreparedStatement statement = sqLiteHandler.getConnection().prepareStatement("SELECT * FROM foxes");
+ ResultSet results = statement.executeQuery();
+
+ List foxList = new ArrayList<>();
+ while (results.next()) { // Loop through each row
+ List locationList = Arrays.asList(results.getString("LOCATION").split("\\s*,\\s*"));
+ Location loc = new Location(Bukkit.getWorld(locationList.get(0)), Double.parseDouble(locationList.get(1)), Double.parseDouble(locationList.get(2)), Double.parseDouble(locationList.get(3)));
+
+ EntityTamableFox spawnedFox = (EntityTamableFox) plugin.spawnTamableFox(loc, EntityFox.Type.valueOf(results.getString("TYPE")));
+ spawnedFox.databaseIndex = results.getInt("INDEX");
+ spawnedFox.setSlot(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(new ItemStack(Material.valueOf(results.getString("MOUTH_ITEM")), 1)));
+
+ if (!results.getString("OWNER_UUID").equals("none")) {
+ UUID ownerUUID = UUID.fromString(results.getString("OWNER_UUID"));
+
+ OfflinePlayer owner = plugin.getServer().getOfflinePlayer(ownerUUID);
+ if (owner.isOnline()) {
+ spawnedFox.setOwner(((CraftPlayer) owner.getPlayer()).getHandle());
+ }
+
+ plugin.getFoxUUIDs().put(spawnedFox.getUniqueID(), ownerUUID);
+ spawnedFox.setChosenName(results.getString("NAME"));
+ }
+
+ foxList.add(spawnedFox);
+ }
+
+ return foxList;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ if (sqLiteHandler.getConnection() != null) {
+ try {
+ sqLiteHandler.getConnection().close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return null;
+ }
+
+ public void removeFox(int databaseID) {
+ plugin = TamableFoxes.getPlugin(TamableFoxes.class);
+ try {
+ sqLiteHandler.connect();
+
+ PreparedStatement statement = sqLiteHandler.getConnection().prepareStatement("DELETE FROM foxes WHERE INDEX=" + databaseID);
+ statement.setInt(1, databaseID);
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
@@ -79,42 +171,7 @@ public class SQLiteSetterGetter {
}
}
- public List spawnFoxes() {
- plugin = Dexun.getPlugin(Dexun.class);
- try {
- sqLiteHandler.connect();
- PreparedStatement statement = sqLiteHandler.getConnection()
- .prepareStatement("SELECT * FROM foxes");
- ResultSet results = statement.executeQuery();
- results.next();
-
- String banReasonsSTR = results.getString("REASONS");
- String banDatesSTR = results.getString("ON_DATES");
- String banEndDatesSTR = results.getString("END_DATES");
- String unbanReasonsSTR = results.getString("UNBAN_REASONS");
-
- List banReasons = new LinkedList(Arrays.asList(banReasonsSTR.substring(1).split(",")));
- List banDates = new LinkedList(Arrays.asList(banDatesSTR.substring(1).split(",")));
- List banEndDates = new LinkedList(Arrays.asList(banEndDatesSTR.substring(1).split(",")));
- List unbanReasons = new LinkedList(Arrays.asList(unbanReasonsSTR.substring(1).split(",")));
-
- List> bans = new ArrayList>();
- bans.add(banReasons);
- bans.add(banDates);
- bans.add(banEndDates);
- bans.add(unbanReasons);
-
- return bans;
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (sqLiteHandler.getConnection() != null) {
- try {
- sqLiteHandler.getConnection().close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
+ public void removeFox(EntityTamableFox fox) {
+ removeFox(fox.databaseIndex);
}
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 5335dd1..22fdcb4 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,6 +1,6 @@
name: TamableFoxes
-version: 1.4-RELEASE
-main: net.seanomilk.tamablefoxes.TamableFoxes
+version: 1.4.1-SNAPSHOT
+main: net.seanomik.tamablefoxes.TamableFoxes
api-version: 1.15
load: POSTWORLD
description: Modified version of TamableFoxes for 1.15.1.
diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml
index 5335dd1..22fdcb4 100644
--- a/target/classes/plugin.yml
+++ b/target/classes/plugin.yml
@@ -1,6 +1,6 @@
name: TamableFoxes
-version: 1.4-RELEASE
-main: net.seanomilk.tamablefoxes.TamableFoxes
+version: 1.4.1-SNAPSHOT
+main: net.seanomik.tamablefoxes.TamableFoxes
api-version: 1.15
load: POSTWORLD
description: Modified version of TamableFoxes for 1.15.1.
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index ff3a787..79a4eca 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,21 +1,23 @@
-net\seanomilk\tamablefoxes\EntityTamableFox.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalBreed.class
-net\seanomilk\tamablefoxes\TamableFoxes.class
-net\seanomilk\tamablefoxes\command\CommandSpawnTamableFox.class
-net\seanomilk\tamablefoxes\io\FileManager$Config.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalFloat.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalFollowOwner.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalMeleeAttack.class
-net\seanomilk\tamablefoxes\io\FileManager.class
-net\seanomilk\tamablefoxes\EntityTamableFox$UpdateFoxRunnable.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalRandomTargetNonTamed.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalBeg.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalPickBushes.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtByTarget.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalFleeSun.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalSit.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalLungeUNKNOWN_USE.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalLunge.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalHurtByTarget.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalRandomStrollLand.class
-net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtTarget.class
+net\seanomik\tamablefoxes\EntityTamableFox.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtByTarget.class
+net\seanomik\tamablefoxes\io\FileManager$Config.class
+net\seanomik\tamablefoxes\command\CommandSpawnTamableFox.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalSit.class
+net\seanomik\tamablefoxes\sqlite\SQLiteSetterGetter.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalBeg.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalRandomStrollLand.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalLunge.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFloat.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalMeleeAttack.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalRandomTargetNonTamed.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFleeSun.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtTarget.class
+net\seanomik\tamablefoxes\io\FileManager.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalBreed.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFollowOwner.class
+net\seanomik\tamablefoxes\sqlite\SQLiteHandler.class
+net\seanomik\tamablefoxes\TamableFoxes.class
+net\seanomik\tamablefoxes\EntityTamableFox$UpdateFoxRunnable.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalLungeUNKNOWN_USE.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalPickBushes.class
+net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalHurtByTarget.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index e0a9b3a..c39e1d8 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,19 +1,21 @@
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalRandomTargetNonTamed.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\command\CommandSpawnTamableFox.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalLunge.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtTarget.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalRandomStrollLand.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\EntityTamableFox.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalHurtByTarget.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtByTarget.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalPickBushes.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalFollowOwner.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalSit.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalFloat.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\io\FileManager.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalFleeSun.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalBeg.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalBreed.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalLungeUNKNOWN_USE.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\pathfinding\FoxPathfindGoalMeleeAttack.java
-D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomilk\tamablefoxes\TamableFoxes.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalRandomStrollLand.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalRandomTargetNonTamed.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalLunge.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\command\CommandSpawnTamableFox.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\TamableFoxes.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalBeg.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalPickBushes.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalBreed.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalMeleeAttack.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\EntityTamableFox.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFleeSun.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\sqlite\SQLiteHandler.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalLungeUNKNOWN_USE.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtByTarget.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtTarget.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalSit.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\sqlite\SQLiteSetterGetter.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFloat.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\io\FileManager.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalHurtByTarget.java
+D:\Code\java\spigotPlugins\myPlugins\GitTamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFollowOwner.java