diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 28c1e46..ebd3211 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,30 +2,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -85,8 +70,8 @@
-
-
+
+
@@ -147,10 +132,10 @@
-
+
-
+
@@ -163,38 +148,38 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
@@ -203,20 +188,13 @@
-
+
-
-
-
-
-
-
- file://$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
- 440
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0309366..9ffea7c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,7 @@
shade
- D:\Code\java\spigotPlugins\TEST_SERVER\plugins\${project.artifactId}-${project.version}.jar
+ D:\Code\java\spigotPlugins\_TEST_SERVER_\plugins\${project.artifactId}-${project.version}.jar
false
diff --git a/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java b/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java
index 636c00c..bc3e235 100644
--- a/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java
+++ b/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java
@@ -41,7 +41,7 @@ public class EntityTamableFox extends EntityFox {
plugin.getFoxUUIDs().put(this.getBukkitEntity().getUniqueId(), null);
}
- this.setPersistent();
+ this.persistent = false;
}
@Override
diff --git a/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java b/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
index 669eaaf..eb91508 100644
--- a/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
+++ b/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java
@@ -9,15 +9,11 @@ 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;
import org.bukkit.Particle;
-import org.bukkit.World;
import org.bukkit.*;
-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.CraftPlayer;
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
import org.bukkit.entity.Entity;
@@ -27,20 +23,16 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityDeathEvent;
-import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.player.*;
import org.bukkit.event.world.ChunkLoadEvent;
+import org.bukkit.event.world.ChunkUnloadEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
-import org.bukkit.util.Vector;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
import java.util.stream.Collectors;
// @TODO: Add language.yml
@@ -48,15 +40,14 @@ import java.util.stream.Collectors;
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";
+ public static final String FOX_REGISTER_NAME = "tameablefox";
private FileManager fileManager = new FileManager(this);
private Map foxUUIDs = Maps.newHashMap(); // FoxUUID, OwnerUUID
private EntityTypes customType;
- private boolean isOnLoad = true;
private Map lookupCache = Maps.newHashMap();
- private List spawnedFoxes;
+ private List spawnedFoxes = new ArrayList<>();
private FileManager.Config config;//, configFoxes;
public static SQLiteHandler sqLiteHandler = new SQLiteHandler();
public static SQLiteSetterGetter sqLiteSetterGetter = new SQLiteSetterGetter();
@@ -82,11 +73,11 @@ public class TamableFoxes extends JavaPlugin implements Listener {
final Map> types = (Map>) DataConverterRegistry.a()
.getSchema(DataFixUtils.makeKey(SharedConstants.getGameVersion().getWorldVersion()))
.findChoiceType(DataConverterTypes.ENTITY).types();
- types.put("minecraft:" + TAG_TAME_FOX, types.get("minecraft:fox"));
+ types.put("minecraft:" + FOX_REGISTER_NAME, types.get("minecraft:fox"));
EntityTypes.a a = EntityTypes.a.a((entityTypes, world) ->
new EntityTamableFox(this, entityTypes, world), EnumCreatureType.AMBIENT);
- customType = IRegistry.a(IRegistry.ENTITY_TYPE, "tameablefox", a.a("tameablefox"));
+ customType = IRegistry.a(IRegistry.ENTITY_TYPE, FOX_REGISTER_NAME, a.a(FOX_REGISTER_NAME));
this.replaceFoxesOnLoad();
}
@@ -97,7 +88,9 @@ public class TamableFoxes extends JavaPlugin implements Listener {
for (EntityTamableFox fox : spawnedFoxes) {
sqLiteSetterGetter.saveFox(fox);
- fox.getBukkitEntity().remove();
+ Location loc = new Location(fox.getWorld().getWorld(), fox.locX(), fox.locY(), fox.locZ());
+ loc.getChunk().load();
+ fox.die();
}
getServer().getConsoleSender().sendMessage(getPrefix() + ChatColor.GREEN + "Saved all foxes successfully!");
@@ -106,99 +99,6 @@ public class TamableFoxes extends JavaPlugin implements Listener {
}
}
- private void replaceFoxesOnLoad() {
- /*int amountReplaced = 0;
-
- for (World world : Bukkit.getWorlds()) {
- Chunk[] loadedChunks = world.getLoadedChunks();
- for (Chunk chunk : loadedChunks) {
- Entity[] entities = chunk.getEntities();
- for (Entity entity : entities) {
- if (!(entity instanceof Fox))
- continue;
- if (this.isTamableFox(entity))
- continue;
- EntityTamableFox tamableFox = (EntityTamableFox) spawnTamableFox(entity.getLocation(), ((CraftFox) entity).getHandle().getFoxType());
-
- //final YamlConfiguration configuration = configFoxes.get();
- // get living entity data
- if (configuration.isConfigurationSection("Foxes." + entity.getUniqueId())) {
- String owner = configuration.getString("Foxes." + entity.getUniqueId() + ".owner");
-
- // make new data
- if (owner.equals("none")) {
- foxUUIDs.replace(tamableFox.getUniqueID(), null);
- configuration.set("Foxes." + tamableFox.getUniqueID() + ".owner", "none");
- } else {
- foxUUIDs.replace(tamableFox.getUniqueID(), UUID.fromString(owner));
- tamableFox.setTamed(true);
- configuration.set("Foxes." + tamableFox.getUniqueID() + ".owner", owner);
- }
-
- // set name
- if (configuration.isSet("Foxes." + entity.getUniqueId() + ".name")) {
- final String name = configuration.getString("Foxes." + entity.getUniqueId() + ".name");
- configuration.set("Foxes." + tamableFox.getUniqueID() + ".name", name);
- tamableFox.setChosenName(name);
- }
-
- // delete old data
- configuration.set("Foxes." + entity.getUniqueId(), null);
-
- tamableFox.setSitting(((EntityFox) ((CraftEntity) entity).getHandle()).isSitting());
- 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(entityMouthItem));
- } else {
- tamableFox.setSlot(EnumItemSlot.MAINHAND, new net.minecraft.server.v1_15_R1.ItemStack(Items.AIR));
- }
-
- } else {
- configuration.set("Foxes." + tamableFox.getUniqueID() + ".owner", "none");
-
- 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(entityMouthItem));
- } else {
- tamableFox.setSlot(EnumItemSlot.MAINHAND, new net.minecraft.server.v1_15_R1.ItemStack(Items.AIR));
- }
- }
-
- entity.remove();
- ++amountReplaced;
- }
- }
- }
-
- configFoxes.save();*/
-
- spawnedFoxes = sqLiteSetterGetter.spawnFoxes();
- this.isOnLoad = false;
- }
-
- public net.minecraft.server.v1_15_R1.Entity spawnTamableFox(Location location, net.minecraft.server.v1_15_R1.EntityFox.Type type) {
- WorldServer world = ((CraftWorld) location.getWorld()).getHandle();
- EntityTamableFox spawnedFox = (EntityTamableFox) customType.b(world, null, null, null,
- new BlockPosition(location.getX(), location.getY(), location.getZ()), null, false, false);
-
- if (!world.addEntity(spawnedFox)) { // Throw a error if the fox failed to spawn
- throw new RuntimeException("Failed to spawn fox!");
- }
-
- spawnedFox.setFoxType(type);
-
- sqLiteSetterGetter.saveFox((EntityTamableFox) spawnedFox);
-
- return spawnedFox;
- }
-
private class SaveFoxRunnable extends BukkitRunnable {
private final TamableFoxes plugin;
@@ -217,6 +117,58 @@ public class TamableFoxes extends JavaPlugin implements Listener {
}
}
+ private void replaceFoxesOnLoad() {
+ //spawnedFoxes = sqLiteSetterGetter.spawnFoxes();
+ }
+
+ public net.minecraft.server.v1_15_R1.Entity spawnTamableFox(Location location, net.minecraft.server.v1_15_R1.EntityFox.Type type) {
+ if (location.getChunk() != null) {
+ location.getChunk().load();
+ }
+
+ WorldServer world = ((CraftWorld) location.getWorld()).getHandle();
+ EntityTamableFox spawnedFox = (EntityTamableFox) customType.b(world, null, null, null,
+ new BlockPosition(location.getX(), location.getY(), location.getZ()), null, false, false);
+
+ if (!world.addEntity(spawnedFox)) { // Show an error if the fox failed to spawn
+ getServer().getConsoleSender().sendMessage(getPrefix() + ChatColor.RED + "Failed to spawn fox!");
+ }
+
+ spawnedFox.setFoxType(type);
+
+ return spawnedFox;
+ }
+
+ @EventHandler
+ public void onChunkLoad(ChunkLoadEvent event) {
+ if (event.isNewChunk()) return;
+
+ // Remove vanilla foxes
+ for (Entity entity : event.getChunk().getEntities()) {
+ if (entity instanceof Fox && !this.isTamableFox(entity)) {
+ entity.remove();
+ }
+ }
+
+ // Spawn saved foxes
+ List newFoxes = sqLiteSetterGetter.spawnFoxesInChunk(event.getChunk());
+ if (newFoxes != null && newFoxes.size() != 0) {
+ spawnedFoxes.addAll(newFoxes);
+ }
+ }
+
+ @EventHandler
+ public void onChunkUnload(ChunkUnloadEvent event) {
+ for (Entity entity : event.getChunk().getEntities()) {
+ if (isTamableFox(entity)) {
+ EntityTamableFox tamableFox = (EntityTamableFox) ((CraftEntity) entity).getHandle();
+
+ sqLiteSetterGetter.saveFox(tamableFox);
+ tamableFox.die();
+ }
+ }
+ }
+
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
@@ -234,8 +186,7 @@ public class TamableFoxes extends JavaPlugin implements Listener {
Entity entity = event.getRightClicked();
Player player = event.getPlayer();
- if (event.getHand() != EquipmentSlot.HAND)
- return;
+ if (event.getHand() != EquipmentSlot.HAND) return;
final ItemStack playerHand = player.getInventory().getItemInMainHand();
ItemMeta itemMeta = playerHand.getItemMeta();
diff --git a/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java b/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java
index 69271e4..85aa598 100644
--- a/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java
+++ b/src/main/java/net/seanomik/tamablefoxes/command/CommandSpawnTamableFox.java
@@ -42,7 +42,7 @@ public class CommandSpawnTamableFox implements TabExecutor {
switch (args[0]) {
case "red":
try {
- EntityTamableFox fox = (EntityTamableFox) plugin.spawnTamableFox(player.getLocation(), EntityFox.Type.RED);
+ EntityTamableFox fox = (EntityTamableFox) plugin.spawnTamableFox(player.getLocation().add(0, 1, 0), EntityFox.Type.RED);
plugin.getSpawnedFoxes().add(fox);
plugin.sqLiteSetterGetter.saveFox(fox);
@@ -53,7 +53,7 @@ public class CommandSpawnTamableFox implements TabExecutor {
break;
case "snow":
try {
- EntityTamableFox spawnedFox = (EntityTamableFox) plugin.spawnTamableFox(player.getLocation(), EntityFox.Type.SNOW);
+ EntityTamableFox spawnedFox = (EntityTamableFox) plugin.spawnTamableFox(player.getLocation().add(0, 1, 0), EntityFox.Type.SNOW);
plugin.getSpawnedFoxes().add(spawnedFox);
plugin.sqLiteSetterGetter.saveFox(spawnedFox);
diff --git a/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java b/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java
index d50ba83..ca2650e 100644
--- a/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java
+++ b/src/main/java/net/seanomik/tamablefoxes/sqlite/SQLiteSetterGetter.java
@@ -5,10 +5,7 @@ import net.minecraft.server.v1_15_R1.EnumItemSlot;
import net.seanomik.tamablefoxes.EntityTamableFox;
import net.seanomik.tamablefoxes.TamableFoxes;
import org.apache.commons.lang.ObjectUtils;
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.OfflinePlayer;
+import org.bukkit.*;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
import org.bukkit.inventory.ItemStack;
@@ -37,7 +34,7 @@ public class SQLiteSetterGetter {
"`TYPE` TEXT NOT NULL , " +
"`SITTING` INTEGER NOT NULL , " +
"`SLEEPING` INTEGER NOT NULL , " +
- "`MOUTH_ITEM` TEXT NOT NULL);";
+ "`MOUTH_ITEM` TEXT NOT NULL);"; // @TODO: Add a age field
try {
sqLiteHandler.connect();
@@ -99,7 +96,7 @@ public class SQLiteSetterGetter {
}
}
- public void saveFoxes(List foxes) { // @TODO: Optimize
+ public void saveFoxes(List foxes) { // @TODO: Optimize?
for (EntityTamableFox fox : foxes) {
saveFox(fox);
}
@@ -155,6 +152,63 @@ public class SQLiteSetterGetter {
return null;
}
+ public List spawnFoxesInChunk(Chunk chunk) {
+ 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)));
+
+ // Checks if the location is in a chunk.
+ if (chunk.getX() == ((double) loc.getBlockX() / 16 && chunk.getZ() == loc.getBlockZ() / 16) {
+ plugin.getServer().getConsoleSender().sendMessage("SPAWN IN CHUNK");
+
+ EntityTamableFox spawnedFox = (EntityTamableFox) plugin.spawnTamableFox(loc, EntityFox.Type.valueOf(results.getString("TYPE")));
+ spawnedFox.databaseID = results.getInt("ID");
+ spawnedFox.setSlot(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(new ItemStack(Material.valueOf(results.getString("MOUTH_ITEM")), 1)));
+
+ spawnedFox.setSitting(results.getInt("SITTING") == 1);
+ spawnedFox.setSleeping(results.getInt("SLEEPING") == 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"));
+ spawnedFox.setTamed(true);
+ }
+
+ foxList.add(spawnedFox);
+ } else {
+ plugin.getServer().getConsoleSender().sendMessage("ChunkX: " + (chunk.getX()) + ", LocX: " + (loc.getBlockX() / 16) + ", ChunkZ: " + (chunk.getZ()) + ", LocZ: " + (loc.getBlockZ() / 16));
+ }
+ }
+
+ 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 {
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 22fdcb4..dfccbf8 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -3,6 +3,7 @@ version: 1.4.1-SNAPSHOT
main: net.seanomik.tamablefoxes.TamableFoxes
api-version: 1.15
load: POSTWORLD
+#load: STARTUP
description: Modified version of TamableFoxes for 1.15.1.
commands:
diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml
index 22fdcb4..dfccbf8 100644
--- a/target/classes/plugin.yml
+++ b/target/classes/plugin.yml
@@ -3,6 +3,7 @@ version: 1.4.1-SNAPSHOT
main: net.seanomik.tamablefoxes.TamableFoxes
api-version: 1.15
load: POSTWORLD
+#load: STARTUP
description: Modified version of TamableFoxes for 1.15.1.
commands:
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 1d1e33c..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,21 +1,21 @@
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFloat.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalRandomTargetNonTamed.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\command\CommandSpawnTamableFox.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtByTarget.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\sqlite\SQLiteHandler.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\EntityTamableFox.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalMeleeAttack.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalHurtByTarget.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalSit.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalOwnerHurtTarget.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalPickBushes.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalBreed.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\io\FileManager.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalBeg.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalLungeUNKNOWN_USE.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\sqlite\SQLiteSetterGetter.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\TamableFoxes.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalLunge.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalRandomStrollLand.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFollowOwner.java
-C:\code\java\TamableFoxes\src\main\java\net\seanomik\tamablefoxes\pathfinding\FoxPathfindGoalFleeSun.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