Merge pull request #334 from MrJeremyFisher/fix-horse-reroll

Fix horse stats being re-rolled on login
This commit is contained in:
RedDevel2
2024-03-05 19:13:10 +01:00
committed by GitHub

View File

@@ -4,13 +4,18 @@ import com.programmerdan.minecraft.simpleadminhacks.SimpleAdminHacks;
import com.programmerdan.minecraft.simpleadminhacks.framework.BasicHack;
import com.programmerdan.minecraft.simpleadminhacks.framework.BasicHackConfig;
import com.programmerdan.minecraft.simpleadminhacks.framework.autoload.AutoLoad;
import org.bukkit.NamespacedKey;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityBreedEvent;
import org.bukkit.persistence.PersistentDataType;
import vg.civcraft.mc.civmodcore.pdc.PersistentDataTypes;
import vg.civcraft.mc.civmodcore.pdc.extensions.PersistentDataContainerExtensions;
import java.util.logging.Level;
@@ -19,6 +24,7 @@ public class FasterHorses extends BasicHack {
private double minSpeed;
@AutoLoad
private double maxSpeed;
private final NamespacedKey speedChangedKey = new NamespacedKey(plugin, "speed-changed");
public FasterHorses(SimpleAdminHacks plugin, BasicHackConfig config) {
super(plugin, config);
@@ -39,8 +45,8 @@ public class FasterHorses extends BasicHack {
newSpeed = maxSpeed;
}
event.getEntity().getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).setBaseValue(newSpeed);
plugin.getLogger().log(Level.INFO, "Horse breed to have speed: " + newSpeed);
event.getEntity().getPersistentDataContainer().set(speedChangedKey, PersistentDataTypes.BOOLEAN, true);
plugin.getLogger().log(Level.INFO, "Horse bred to have speed: " + newSpeed);
}
@EventHandler(priority = EventPriority.HIGHEST)
@@ -51,6 +57,9 @@ public class FasterHorses extends BasicHack {
if (event.getSpawnReason() == CreatureSpawnEvent.SpawnReason.BREEDING) {
return;
}
if (((Tameable) event.getEntity()).isTamed() || event.getEntity().getPersistentDataContainer().has(speedChangedKey, PersistentDataTypes.BOOLEAN)) {
return;
}
AttributeInstance moveSpeed = event.getEntity().getAttribute(Attribute.GENERIC_MOVEMENT_SPEED);
if (moveSpeed == null) {
@@ -58,6 +67,7 @@ public class FasterHorses extends BasicHack {
}
double irwinHallDist = (Math.random() * 0.3 + Math.random() * 0.3 + Math.random() * 0.3) * ((this.maxSpeed - this.minSpeed) / 0.9) + this.minSpeed;
moveSpeed.setBaseValue(irwinHallDist);
event.getEntity().getPersistentDataContainer().set(speedChangedKey, PersistentDataTypes.BOOLEAN, true);
plugin.getLogger().log(Level.INFO, "Setting Horse Speed to: " + irwinHallDist);
}
}