Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,38 @@
<parent>
<groupId>com.github.civclassic</groupId>
<artifactId>civclassic-parent</artifactId>
<version>1.0.0</version>
<version>1.0.1</version>
</parent>

<groupId>com.github.maxopoly</groupId>
<artifactId>Finale</artifactId>
<packaging>jar</packaging>
<version>1.5.1</version>
<version>1.6.0</version>
<name>Finale</name>
<url>https://github.com/Civclassic/Finale</url>

<dependencies>
<dependency>
<groupId>com.destroystokyo.paper</groupId>
<groupId>io.papermc.paper</groupId>
<artifactId>paper</artifactId>
<version>1.16.5-R0.1-SNAPSHOT</version>
<version>1.17.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.civmodcore</groupId>
<groupId>com.github.civclassic</groupId>
<artifactId>CivModCore</artifactId>
<version>1.8.2</version>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.minelink</groupId>
<artifactId>CombatTagPlus</artifactId>
<version>1.3.3-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>4.6.0</version>
<version>4.7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Expand All @@ -49,9 +48,13 @@
<id>civ-github-repo</id>
<url>https://raw.githubusercontent.com/CivClassic/artifacts/master/</url>
</repository>
<repository>
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
<repository>
<id>dmulloy2-repo</id>
<url>http://repo.dmulloy2.net/content/groups/public/</url>
<url>https://repo.dmulloy2.net/content/groups/public/</url>
</repository>
</repositories>
</project>
84 changes: 53 additions & 31 deletions src/main/java/com/github/maxopoly/finale/ConfigParser.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
package com.github.maxopoly.finale;

import static vg.civcraft.mc.civmodcore.util.ConfigParsing.parseTime;
import static vg.civcraft.mc.civmodcore.config.ConfigHelper.parseTime;

import java.util.*;

import com.github.maxopoly.finale.misc.knockback.KnockbackConfig;
import com.github.maxopoly.finale.misc.knockback.KnockbackModifier;
import com.github.maxopoly.finale.misc.knockback.KnockbackType;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.EntityType;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.potion.PotionType;

import com.github.maxopoly.finale.combat.CombatConfig;
import com.github.maxopoly.finale.combat.CombatSoundConfig;
Expand All @@ -13,21 +27,6 @@
import com.github.maxopoly.finale.misc.velocity.VelocityHandler;
import com.github.maxopoly.finale.potion.PotionHandler;
import com.github.maxopoly.finale.potion.PotionModification;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.EntityType;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.potion.PotionType;
import org.bukkit.util.Vector;

public class ConfigParser {
Expand Down Expand Up @@ -73,7 +72,7 @@ public VelocityHandler getVelocityHandler() {
public boolean isPearlEnabled() {
return pearlEnabled;
}

public CombatConfig getCombatConfig() {
return combatConfig;
}
Expand Down Expand Up @@ -334,7 +333,7 @@ private WeaponModifier parseWeaponModification(ConfigurationSection config) {
}
return wm;
}

private ArmourModifier parseArmourModification(ConfigurationSection config) {
ArmourModifier am = new ArmourModifier();
if (config == null) {
Expand Down Expand Up @@ -369,20 +368,24 @@ private ArmourModifier parseArmourModification(ConfigurationSection config) {
}
return am;
}

private CombatConfig parseCombatConfig(ConfigurationSection config) {
double maxReach = config.getDouble("maxReach", 6.0);
Vector knockbackMultiplier = parseVector(config, "knockbackMultiplier", new Vector(1, 1, 1));
Vector sprintMultiplier = parseVector(config, "sprintMultiplier", new Vector(1, 1, 1));
Vector waterKnockbackMultiplier = parseVector(config, "waterKnockbackMultiplier", new Vector(1, 1, 1));
Vector airKnockbackMultiplier = parseVector(config, "airKnockbackMultiplier", new Vector(1, 1, 1));
KnockbackConfig normalConfig = parseKnockbackConfig(config, "normal", new KnockbackConfig(
new KnockbackModifier(KnockbackType.MULTIPLY, new Vector(1, 1, 1)),
new KnockbackModifier(KnockbackType.MULTIPLY, new Vector(1, 1, 1)),
new KnockbackModifier(KnockbackType.MULTIPLY, new Vector(1, 1, 1))
));
KnockbackConfig sprintConfig = parseKnockbackConfig(config, "sprint", new KnockbackConfig(
new KnockbackModifier(KnockbackType.MULTIPLY, new Vector(3, 1, 3)),
new KnockbackModifier(KnockbackType.MULTIPLY, new Vector(3, 1, 3)),
new KnockbackModifier(KnockbackType.MULTIPLY, new Vector(3, 1, 3))
));
Vector victimMotion = parseVector(config, "victimMotion", new Vector(0.5, 0.5, 0.5));
Vector maxVictimMotion = parseVector(config, "maxVictimMotion", new Vector(10, 1, 10));
Vector attackerMotion = parseVector(config, "attackerMotion", new Vector(0.6, 1, 0.6));
plugin.info("Setting knockbackMultiplier to " + knockbackMultiplier);
plugin.info("Setting sprintMultiplier to " + sprintMultiplier);
plugin.info("Setting waterKnockbackMultiplier to " + waterKnockbackMultiplier);
plugin.info("Setting airKnockbackMultiplier to " + airKnockbackMultiplier);
plugin.info("Setting normalConfig to " + normalConfig);
plugin.info("Setting sprintConfig to " + sprintConfig);
plugin.info("Setting victimMotion to " + victimMotion);
plugin.info("Setting maxVictimMotion to " + maxVictimMotion);
plugin.info("Setting attackerMotion to " + attackerMotion);
Expand All @@ -402,7 +405,7 @@ private CombatConfig parseCombatConfig(ConfigurationSection config) {
plugin.info("Strong sounds are " + (strongSoundEnabled ? "ON" : "OFF"));
plugin.info("Knockback sounds are " + (knockbackSoundEnabled ? "ON" : "OFF"));
plugin.info("Crit sounds are " + (critSoundEnabled ? "ON" : "OFF"));

CombatSoundConfig combatSounds = new CombatSoundConfig(weakSoundEnabled, strongSoundEnabled, knockbackSoundEnabled, critSoundEnabled);
boolean attackCooldownEnabled = config.getBoolean("attackCooldownEnabled", false);
boolean knockbackSwordsEnabled = config.getBoolean("knockbackSwordsEnabled", true);
Expand All @@ -419,7 +422,26 @@ private CombatConfig parseCombatConfig(ConfigurationSection config) {
}

return new CombatConfig(attackCooldownEnabled, knockbackSwordsEnabled, sprintResetEnabled, waterSprintResetEnabled, cpsLimit, cpsCounterInterval, maxReach, sweepEnabled, combatSounds,
knockbackLevelMultiplier, knockbackMultiplier, sprintMultiplier, waterKnockbackMultiplier, airKnockbackMultiplier, victimMotion, maxVictimMotion, attackerMotion);
knockbackLevelMultiplier, normalConfig, sprintConfig, victimMotion, maxVictimMotion, attackerMotion);
}

private KnockbackConfig parseKnockbackConfig(ConfigurationSection config, String name, KnockbackConfig def) {
KnockbackModifier ground = parseKnockbackModifier(config, name + ".groundModifier", def.getGroundModifier());
KnockbackModifier air = parseKnockbackModifier(config, name + ".airModifier", def.getGroundModifier());
KnockbackModifier water = parseKnockbackModifier(config, name + ".waterModifier", def.getGroundModifier());
return new KnockbackConfig(ground, air, water);
}

private KnockbackModifier parseKnockbackModifier(ConfigurationSection config, String name, KnockbackModifier def) {
String typeStr = config.getString(name + ".type", def.getType().toString());
KnockbackType type = KnockbackType.valueOf(typeStr.toUpperCase());
if (type == null) {
return def;
}
double x = config.getDouble(name + ".x", def.getModifier().getX());
double y = config.getDouble(name + ".y", def.getModifier().getY());
double z = config.getDouble(name + ".z", def.getModifier().getZ());
return new KnockbackModifier(type, new Vector(x, y, z));
}

private Vector parseVector(ConfigurationSection config, String name, Vector def) {
Expand All @@ -428,7 +450,7 @@ private Vector parseVector(ConfigurationSection config, String name, Vector def)
double z = config.getDouble(name + ".z", def.getZ());
return new Vector(x, y, z);
}

private Map<EntityDamageEvent.DamageCause, Integer> parseInvulnerabilityTicks(ConfigurationSection config) {
Map<EntityDamageEvent.DamageCause, Integer> invulnTicks = new HashMap<>();
for (String key : config.getKeys(false)) {
Expand All @@ -440,7 +462,7 @@ private Map<EntityDamageEvent.DamageCause, Integer> parseInvulnerabilityTicks(Co
+ ". It was skipped");
continue;
}

int ticks = config.getInt(key);
invulnTicks.put(cause, ticks);
plugin.info("Applying tick invulnerability modification for " + cause.toString() + ", ticks: " + ticks);
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/com/github/maxopoly/finale/Finale.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package com.github.maxopoly.finale;

import com.comphenix.protocol.ProtocolLibrary;
import com.github.maxopoly.finale.command.CardinalCommand;
import com.github.maxopoly.finale.command.CombatConfigCommand;
import com.github.maxopoly.finale.command.GammaBrightCommand;
import com.github.maxopoly.finale.command.ReloadFinaleCommand;
import com.github.maxopoly.finale.command.ShowCpsCommand;
import com.github.maxopoly.finale.external.CombatTagPlusManager;
import com.github.maxopoly.finale.external.FinaleSettingManager;
import com.github.maxopoly.finale.listeners.DamageListener;
Expand All @@ -17,6 +22,7 @@
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.PluginManager;
import vg.civcraft.mc.civmodcore.ACivMod;
import vg.civcraft.mc.civmodcore.commands.CommandManager;

public class Finale extends ACivMod {

Expand All @@ -30,6 +36,7 @@ public static Finale getPlugin() {
private CombatTagPlusManager ctpManager;
private ConfigParser config;
private FinaleSettingManager settingsManager;
private CommandManager commandManager;

public CombatTagPlusManager getCombatTagPlusManager() {
return ctpManager;
Expand Down Expand Up @@ -66,6 +73,8 @@ public void onDisable() {
public void onEnable() {
super.onEnable();
instance = this;
commandManager = new CommandManager(this);
commandManager.init();
reload();
}

Expand All @@ -88,13 +97,22 @@ private void registerListener() {
Bukkit.getPluginManager().registerEvents(new ToolProtectionListener(settingsManager), this);
}

private void registerCommands() {
commandManager.registerCommand(new CardinalCommand());
commandManager.registerCommand(new CombatConfigCommand());
commandManager.registerCommand(new GammaBrightCommand());
commandManager.registerCommand(new ReloadFinaleCommand());
commandManager.registerCommand(new ShowCpsCommand());
}

public void reload() {
onDisable();
config = new ConfigParser(this);
manager = config.parse();
settingsManager = new FinaleSettingManager();
initExternalManagers();
registerListener();
registerCommands();
}

}
12 changes: 3 additions & 9 deletions src/main/java/com/github/maxopoly/finale/FinaleManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.github.maxopoly.finale.misc.WeaponModifier;
import com.github.maxopoly.finale.potion.PotionHandler;
import java.util.Map;

import org.bukkit.Bukkit;
import org.bukkit.event.entity.EntityDamageEvent;

Expand Down Expand Up @@ -46,15 +47,8 @@ public FinaleManager(boolean debug, boolean attackSpeedEnabled, double attackSpe
this.ctpOnLogin = ctpOnLogin;

this.cpsHandler = new CPSHandler();

Bukkit.getScheduler().runTaskAsynchronously(Finale.getPlugin(), new Runnable() {

@Override
public void run() {
ProtocolLibrary.getProtocolManager().getAsynchronousManager().registerAsyncHandler(combatHandler = new AsyncPacketHandler()).start();
}

});

Bukkit.getScheduler().runTaskAsynchronously(Finale.getPlugin(), () -> ProtocolLibrary.getProtocolManager().getAsynchronousManager().registerAsyncHandler(combatHandler = new AsyncPacketHandler(combatConfig)).start());
}

public AsyncPacketHandler getCombatHandler() {
Expand Down
Loading