Make some small changes to the latest merge request

This commit is contained in:
SeanOMik 2020-02-01 13:01:23 -06:00
parent 76912d7c01
commit 584b26c7ec
No known key found for this signature in database
GPG Key ID: FA4D55AC05268A88
11 changed files with 75 additions and 50 deletions

View File

@ -5,9 +5,14 @@
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/EntityTamableFox.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/TamableFoxes.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/io/LanguageConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/seanomik/tamablefoxes/io/LanguageConfig.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/config.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/language.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/language.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/config.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/plugin.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/maven-archiver/pom.properties" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-archiver/pom.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -153,10 +158,10 @@
</state>
<state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580081956712" />
<state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1579710781130" />
<state x="765" y="230" key="#com.intellij.ide.util.MemberChooser" timestamp="1580081253579">
<state x="765" y="230" key="#com.intellij.ide.util.MemberChooser" timestamp="1580580882620">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="765" y="230" key="#com.intellij.ide.util.MemberChooser/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580081253579" />
<state x="765" y="230" key="#com.intellij.ide.util.MemberChooser/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580580882620" />
<state x="765" y="230" key="#com.intellij.ide.util.MemberChooser/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1579708181770" />
<state x="740" y="274" key="FileChooserDialogImpl" timestamp="1580081289890">
<screen x="0" y="0" width="1920" height="1040" />
@ -166,51 +171,51 @@
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="794" y="418" width="356" height="203" key="Github.CreateGistDialog/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580081718270" />
<state width="1877" height="221" key="GridCell.Tab.0.bottom" timestamp="1580171814347">
<state width="1877" height="221" key="GridCell.Tab.0.bottom" timestamp="1580583328931">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.0.bottom/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814347" />
<state width="1877" height="221" key="GridCell.Tab.0.bottom/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328931" />
<state width="1877" height="199" key="GridCell.Tab.0.bottom/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1580134668965" />
<state width="1877" height="221" key="GridCell.Tab.0.center" timestamp="1580171814347">
<state width="1877" height="221" key="GridCell.Tab.0.center" timestamp="1580583328930">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.0.center/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814347" />
<state width="1877" height="221" key="GridCell.Tab.0.center/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328930" />
<state width="1877" height="199" key="GridCell.Tab.0.center/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1580134668964" />
<state width="1877" height="221" key="GridCell.Tab.0.left" timestamp="1580171814347">
<state width="1877" height="221" key="GridCell.Tab.0.left" timestamp="1580583328930">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.0.left/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814347" />
<state width="1877" height="221" key="GridCell.Tab.0.left/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328930" />
<state width="1877" height="199" key="GridCell.Tab.0.left/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1580134668964" />
<state width="1877" height="221" key="GridCell.Tab.0.right" timestamp="1580171814347">
<state width="1877" height="221" key="GridCell.Tab.0.right" timestamp="1580583328931">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.0.right/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814347" />
<state width="1877" height="221" key="GridCell.Tab.0.right/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328931" />
<state width="1877" height="199" key="GridCell.Tab.0.right/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1580134668964" />
<state width="1877" height="221" key="GridCell.Tab.1.bottom" timestamp="1580171814249">
<state width="1877" height="221" key="GridCell.Tab.1.bottom" timestamp="1580583328827">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.1.bottom/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814249" />
<state width="1877" height="221" key="GridCell.Tab.1.center" timestamp="1580171814249">
<state width="1877" height="221" key="GridCell.Tab.1.bottom/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328827" />
<state width="1877" height="221" key="GridCell.Tab.1.center" timestamp="1580583328827">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.1.center/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814249" />
<state width="1877" height="221" key="GridCell.Tab.1.left" timestamp="1580171814249">
<state width="1877" height="221" key="GridCell.Tab.1.center/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328827" />
<state width="1877" height="221" key="GridCell.Tab.1.left" timestamp="1580583328827">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.1.left/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814249" />
<state width="1877" height="221" key="GridCell.Tab.1.right" timestamp="1580171814249">
<state width="1877" height="221" key="GridCell.Tab.1.left/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328827" />
<state width="1877" height="221" key="GridCell.Tab.1.right" timestamp="1580583328827">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="221" key="GridCell.Tab.1.right/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171814249" />
<state width="1877" height="221" key="GridCell.Tab.1.right/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580583328827" />
<state x="490" y="174" key="Maven.ArtifactSearchDialog" timestamp="1579373377880">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="498" height="446" key="SwitcherDM/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1579469022098" />
<state width="498" height="446" key="SwitcherDM/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1579705820492" />
<state x="656" y="343" key="com.intellij.ide.util.TipDialog" timestamp="1580171129088">
<state x="656" y="343" key="com.intellij.ide.util.TipDialog" timestamp="1580582504511">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="656" y="343" key="com.intellij.ide.util.TipDialog/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580171129088" />
<state x="656" y="343" key="com.intellij.ide.util.TipDialog/0.0.1920.1040/-1920.0.1920.1040@0.0.1920.1040" timestamp="1580582504511" />
<state x="656" y="343" key="com.intellij.ide.util.TipDialog/1920.0.1920.1040/0.0.1920.1040@0.0.1920.1040" timestamp="1580132930429" />
<state x="-781" y="188" width="1359" height="1028" key="dock-window-1" timestamp="1580017524734">
<screen x="-1920" y="0" width="1920" height="1040" />

View File

@ -6,7 +6,7 @@
<groupId>net.seanomik</groupId>
<artifactId>tamablefoxes</artifactId>
<version>1.5.2-SNAPSHOT</version>
<version>1.5.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Tamablefoxes</name>

View File

@ -26,6 +26,7 @@ public class EntityTamableFox extends EntityFox {
private EntityLiving owner;
private UUID ownerUUID;
private FoxPathfinderGoalSit goalSit;
private String customName = "";
public EntityTamableFox(EntityTypes<? extends EntityFox> entitytypes, World world) {
super(entitytypes, world);
@ -178,7 +179,9 @@ public class EntityTamableFox extends EntityFox {
this.tamed = tamed;
// Remove goals that are not needed when named, or defeats the purpose of taming
untamedGoals.forEach(goal -> goalSelector.a(goal));
try {
untamedGoals.forEach(goal -> goalSelector.a(goal));
} catch (Exception e) {}
}
public EntityLiving getOwner() {
@ -210,14 +213,24 @@ public class EntityTamableFox extends EntityFox {
}
}
// This is needed for the updateFoxVisual runnable to set the foxes name.
void setCustomName(String customName) {
this.customName = customName;
updateFoxVisual();
}
public void updateFoxVisual() {
new BukkitRunnable() {
@Override
public void run() {
goalSit.setSitting(sitting);
if (tamed && owner != null && !hasCustomName() && Config.doesShowOwnerFoxName()) {
getBukkitEntity().setCustomName(LanguageConfig.getOwnerInFoxNameFormat().replaceAll("%player%", owner.getName()));
if (tamed && owner != null && !customName.isEmpty()) {
if (Config.doesShowOwnerFoxName()) {
getBukkitEntity().setCustomName(LanguageConfig.getFoxNameFormat().replaceAll("%OWNER%", owner.getName()).replaceAll("%FOX_NAME%", customName));
} else {
getBukkitEntity().setCustomName(LanguageConfig.getFoxNameFormat().replaceAll("%FOX_NAME%", customName));
}
}
}
}.runTask(TamableFoxes.getPlugin());

View File

@ -37,7 +37,10 @@ import java.util.stream.Collectors;
// @TODO:
/* @CHANGELOG (1.5.2):
* Removed debug messages
* Code cleanup
* Updated old path finding goals
* Added a section in language.yml to customize how a foxes owner's name is displayed.
* Added a choice in the config.yml to disable the Anvil naming GUI so all foxes would have to be named by name tags.
*/
public final class TamableFoxes extends JavaPlugin implements Listener {
private static TamableFoxes plugin;
@ -62,11 +65,13 @@ public final class TamableFoxes extends JavaPlugin implements Listener {
Field field = EntityTypes.FOX.getClass().getDeclaredField("ba");
field.setAccessible(true);
// Remove the final modifier from the "ba" variable
Field fieldMutable = field.getClass().getDeclaredField("modifiers");
fieldMutable.setAccessible(true);
fieldMutable.set(field, fieldMutable.getInt(field) & ~Modifier.FINAL);
fieldMutable.setAccessible(false);
// If the field is final, then make it non final
if ((field.getModifiers() & Modifier.FINAL) == Modifier.FINAL) {
Field fieldMutable = field.getClass().getDeclaredField("modifiers");
fieldMutable.setAccessible(true);
fieldMutable.set(field, fieldMutable.getInt(field) & ~Modifier.FINAL);
fieldMutable.setAccessible(false);
}
field.set(EntityTypes.FOX, (EntityTypes.b<EntityFox>) (type, world) -> new EntityTamableFox(type, world));
@ -74,7 +79,7 @@ public final class TamableFoxes extends JavaPlugin implements Listener {
getServer().getConsoleSender().sendMessage(Utils.getPrefix() + ChatColor.GREEN + LanguageConfig.getSuccessReplaced());
} catch (Exception e) {
e.printStackTrace();
//e.printStackTrace();
getServer().getConsoleSender().sendMessage(Utils.getPrefix() + ChatColor.RED + LanguageConfig.getFailureReplace());
}
@ -108,7 +113,7 @@ public final class TamableFoxes extends JavaPlugin implements Listener {
}
@EventHandler
public void onChunkLoad(ChunkLoadEvent event) {
public void onChunkLoad(ChunkLoadEvent event) { // Wait for all the entities to load.
Bukkit.getScheduler().runTaskLaterAsynchronously(this, ()-> {
spawnedFoxes.addAll(Utils.loadFoxesInChunk(event.getChunk()));
}, 5L);
@ -149,7 +154,7 @@ public final class TamableFoxes extends JavaPlugin implements Listener {
EntityTamableFox tamableFox = (EntityTamableFox) ((CraftEntity) entity).getHandle();
// Check if its tamed but ignore it if the player is holding sweet berries for breeding or nametag for renaming
if (tamableFox.isTamed() && tamableFox.getOwner() != null && itemHand.getType() != Material.SWEET_BERRIES && itemHand.getType() != Material.NAME_TAG) {
if (tamableFox.isTamed() && tamableFox.getOwner() != null && itemHand.getType() != Material.SWEET_BERRIES) {
if (tamableFox.getOwner().getUniqueID() == player.getUniqueId()) {
event.setCancelled(true);
if (player.isSneaking()) {
@ -160,6 +165,13 @@ public final class TamableFoxes extends JavaPlugin implements Listener {
if (itemHand.getAmount() == 1) player.getInventory().removeItem(itemHand);
else itemHand.setAmount(itemHand.getAmount() - 1);
}
} else if (itemHand.getType() == Material.NAME_TAG) {
if (itemHand.getAmount() == 1) player.getInventory().removeItem(itemHand);
else itemHand.setAmount(itemHand.getAmount() - 1);
tamableFox.setCustomName(handMeta.getDisplayName());
event.setCancelled(true);
} else {
tamableFox.toggleSitting();
}
@ -179,7 +191,7 @@ public final class TamableFoxes extends JavaPlugin implements Listener {
new AnvilGUI.Builder()
.onComplete((plr, text) -> { // Called when the inventory output slot is clicked
if (!text.equals("")) {
tamableFox.getBukkitEntity().setCustomName(text);
tamableFox.setCustomName(text);
tamableFox.setCustomNameVisible(true);
plr.sendMessage(Utils.getPrefix() + ChatColor.GREEN + LanguageConfig.getTamingChosenPerfect(text));
tamableFox.saveNbt();
@ -187,7 +199,6 @@ public final class TamableFoxes extends JavaPlugin implements Listener {
return AnvilGUI.Response.close();
})
//.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

View File

@ -107,8 +107,8 @@ public class LanguageConfig extends YamlConfiguration {
return getConfig().getString("taming-chosen-name-perfect").replaceAll("%NAME%", chosen);
}
public static String getOwnerInFoxNameFormat() {
return getConfig().getString("owner-in-fox-name-format");
public static String getFoxNameFormat() {
return getConfig().getString("fox-name-format");
}
public static String getNoPermMessage() {
@ -131,10 +131,6 @@ public class LanguageConfig extends YamlConfiguration {
public static String getReloadMessage() {
return getConfig().getString("reloaded-message");
}
public static String getCreatedSQLDatabase() {
return getConfig().getString("created-sql-foxes-database");
}
}

View File

@ -1,7 +1,7 @@
# Config for Tamable Foxes
show-owner-in-fox-name: true
enable-taming-permission: true
ask-for-name-after-taming: false
ask-for-name-after-taming: true
tamed-behavior:
attack-wild-animals: true

View File

@ -7,7 +7,7 @@ saving-foxes-message: "Saving foxes."
taming-tamed-message: "You just tamed a wild fox!"
taming-asking-for-name-message: "What do you want to call it?"
taming-chosen-name-perfect: "%NAME% is perfect!"
owner-in-fox-name-format: "%player%'s Fox"
fox-name-format: "%FOX_NAME% (%OWNER%'s Fox)"
no-permission: "You do not have the permission for this command."
only-run-by-player: "Command can only be run from player state!"

View File

@ -1,7 +1,7 @@
# Config for Tamable Foxes
show-owner-in-fox-name: true
show-nametags: true
enable-taming-permission: true
ask-for-name-after-taming: true
tamed-behavior:
attack-wild-animals: true

View File

@ -1,5 +1,5 @@
name: Tamablefoxes
version: 1.5.2-SNAPSHOT
version: 1.5.4-SNAPSHOT
main: net.seanomik.tamablefoxes.TamableFoxes
api-version: 1.15
load: POSTWORLD

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Jan 27 07:55:13 CST 2020
version=1.5.2-SNAPSHOT
#Sat Feb 01 12:07:47 CST 2020
version=1.5.4-SNAPSHOT
groupId=net.seanomik
artifactId=tamablefoxes

View File

@ -1,10 +1,10 @@
net\seanomik\tamablefoxes\EntityTamableFox.class
net\seanomik\tamablefoxes\versions\version_1_15\pathfinding\FoxPathfinderGoalMeleeAttack.class
net\seanomik\tamablefoxes\versions\version_1_15\pathfinding\FoxPathfinderGoalPanic.class
net\seanomik\tamablefoxes\EntityTamableFox$1.class
net\seanomik\tamablefoxes\versions\version_1_15\pathfinding\FoxPathfinderGoalHurtByTarget.class
net\seanomik\tamablefoxes\versions\version_1_15\pathfinding\FoxPathfinderGoalFollowOwner.class
net\seanomik\tamablefoxes\TamableFoxes.class
net\seanomik\tamablefoxes\EntityTamableFox$UpdateFoxRunnable.class
net\seanomik\tamablefoxes\versions\version_1_15\pathfinding\FoxPathfinderGoalSit.class
net\seanomik\tamablefoxes\versions\version_1_15\command\CommandSpawnTamableFox.class
net\seanomik\tamablefoxes\versions\version_1_15\pathfinding\FoxPathfinderGoalOwnerHurtByTarget.class