Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F24893906
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/SuhaylPlugin.java b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/SuhaylPlugin.java
index 8e9a359..877c2f0 100644
--- a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/SuhaylPlugin.java
+++ b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/SuhaylPlugin.java
@@ -1,94 +1,97 @@
package org.eu.loupsgris.quilvaryn;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.eu.loupsgris.quilvaryn.commands.RegionCommand;
import org.eu.loupsgris.quilvaryn.config.SuhaylConfig;
import org.eu.loupsgris.quilvaryn.config.SuhaylTranslationRegistry;
import org.eu.loupsgris.quilvaryn.items.CommandmentStick;
import org.eu.loupsgris.quilvaryn.items.Quill;
import org.eu.loupsgris.quilvaryn.listeners.*;
import org.eu.loupsgris.quilvaryn.services.WanderingTraderService;
import org.eu.loupsgris.quilvaryn.utils.ResourceLoader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class SuhaylPlugin extends JavaPlugin {
public SuhaylConfig config;
public static final String NAMESPACE = "suhayl";
@Override
public void onEnable() {
config = loadConfig();
loadTranslationRegistry();
// Register features
- Bukkit.getPluginManager().registerEvents(new OptimizedWeather(this), this);
- Bukkit.getPluginManager().registerEvents(new HappyGhastBehavior(this), this);
+ Bukkit.getPluginManager().registerEvents(new OptimizedWeather(config), this);
+
+ HappyGhastBehavior listener = new HappyGhastBehavior(getLogger(), config);
+ Bukkit.getPluginManager().registerEvents(listener, this);
+
Bukkit.getPluginManager().registerEvents(new SafeSleep(), this);
Bukkit.getPluginManager().registerEvents(new SaddleBehavior(), this);
registerCommandmentStick();
registerQuill();
// Commands
getCommand("region").setExecutor(new RegionCommand());
}
private SuhaylConfig loadConfig() {
File configFile = new File(getDataFolder(), "config.yml");
if (!configFile.exists()) {
return SuhaylConfig.byDefault();
}
getLogger().info("Loading custom " + configFile.getName());
return SuhaylConfig.Load(this.getConfig());
}
private void loadTranslationRegistry() {
ResourceLoader loader = path -> {
InputStream stream = this.getResource(path);
if (stream == null) {
throw new FileNotFoundException(path);
}
return stream;
};
SuhaylTranslationRegistry registry = new SuhaylTranslationRegistry(
getLogger(),
loader
);
registry.load();
}
private void registerCommandmentStick() {
WanderingTraderService service = new WanderingTraderService(config, getLogger());
WanderingTraderBehavior listener = new WanderingTraderBehavior(service);
Bukkit.getPluginManager().registerEvents(listener, this);
Bukkit.addRecipe(CommandmentStick.getRecipe());
}
private void registerQuill() {
Bukkit.getPluginManager().registerEvents(new QuillBehavior(), this);
Bukkit.addRecipe(Quill.getRecipe());
}
@Override
public void onDisable() {
getLogger().info("Suhayl quality of life plugin disabled.");
}
}
diff --git a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/HappyGhastBehavior.java b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/HappyGhastBehavior.java
index 93ed764..fc34189 100644
--- a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/HappyGhastBehavior.java
+++ b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/HappyGhastBehavior.java
@@ -1,96 +1,96 @@
package org.eu.loupsgris.quilvaryn.listeners;
import org.bukkit.attribute.Attribute;
import org.bukkit.entity.Entity;
import org.bukkit.entity.HappyGhast;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDismountEvent;
import org.bukkit.event.entity.EntityMountEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.eu.loupsgris.quilvaryn.SuhaylPlugin;
import org.eu.loupsgris.quilvaryn.config.SuhaylConfig;
import org.eu.loupsgris.quilvaryn.utils.EntityUtils;
import java.util.Optional;
import java.util.logging.Logger;
public class HappyGhastBehavior implements Listener {
private final Logger logger;
private final SuhaylConfig config;
public static final double DEFAULT_HAPPY_GHAST_SPEED = 0.05;
- public HappyGhastBehavior(SuhaylPlugin plugin) {
- this.logger = plugin.getLogger();
- this.config = plugin.config;
+ public HappyGhastBehavior(Logger logger, SuhaylConfig config) {
+ this.logger = logger;
+ this.config = config;
}
private double computeSpeed () {
return DEFAULT_HAPPY_GHAST_SPEED * config.happyGhastSpeedBoost;
}
private void updateSpeed (HappyGhast ghast, double speed) {
var attribute = ghast.getAttribute(Attribute.FLYING_SPEED);
if (attribute == null) {
logger.warning("HappyGhast flying speed attribute is null, can't update speed.");
return;
}
attribute.setBaseValue(speed);
}
@EventHandler
public void onHappyGhastMount(EntityMountEvent event) {
Entity entity = event.getMount();
if (!(entity instanceof HappyGhast ghast)) {
return;
}
updateSpeed(ghast, computeSpeed());
}
@EventHandler
public void onHappyGhastDismount(EntityDismountEvent event) {
Entity entity = event.getDismounted();
if (!(entity instanceof HappyGhast ghast)) {
return;
}
updateSpeed(ghast, DEFAULT_HAPPY_GHAST_SPEED);
}
/**
* Heals happy ghast on snowball hit
*/
@EventHandler
public void onSnowballReceived(ProjectileHitEvent event) {
Entity entity = event.getHitEntity();
if (!(entity instanceof HappyGhast ghast)) {
return;
}
Projectile projectile = event.getEntity();
if (!(projectile instanceof Snowball)) {
return;
}
event.setCancelled(true);
Optional<Double> maxHealth = EntityUtils.getMaxHealth(ghast);
if (maxHealth.isEmpty()) {
return;
}
if (ghast.getHealth() < maxHealth.get()) {
ghast.heal(4.0, EntityRegainHealthEvent.RegainReason.EATING);
}
}
}
diff --git a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/OptimizedWeather.java b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/OptimizedWeather.java
index de20d77..3951e99 100644
--- a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/OptimizedWeather.java
+++ b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/OptimizedWeather.java
@@ -1,33 +1,33 @@
package org.eu.loupsgris.quilvaryn.listeners;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.weather.WeatherChangeEvent;
import org.eu.loupsgris.quilvaryn.SuhaylPlugin;
import org.eu.loupsgris.quilvaryn.config.SuhaylConfig;
import java.util.Random;
public class OptimizedWeather implements Listener {
private final Random random;
private final SuhaylConfig config;
- public OptimizedWeather(SuhaylPlugin plugin) {
- this.config = plugin.config;
+ public OptimizedWeather(SuhaylConfig config) {
+ this.config = config;
this.random = new Random();
}
@EventHandler
public void onWeatherChange(WeatherChangeEvent event) {
// When the weather is about to start raining,
// cancel it when below the rate.
if (event.toWeatherState()) {
if (random.nextDouble() < config.rainRate) {
event.setCancelled(true);
}
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Wed, Mar 18, 12:26 (23 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3539636
Default Alt Text
(8 KB)
Attached To
Mode
rQVR Quilvaryn
Attached
Detach File
Event Timeline
Log In to Comment