mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-12-17 14:28:46 +01:00
Spears (wip pt 2)
This commit is contained in:
@@ -23,7 +23,8 @@ public class MacesCommand extends SkillCommand {
|
||||
super(PrimarySkillType.MACES);
|
||||
}
|
||||
|
||||
String crippleChanceToApply, crippleChanceToApplyLucky, crippleLengthAgainstPlayers, crippleLengthAgainstMobs;
|
||||
String crippleChanceToApply, crippleChanceToApplyLucky, crippleLengthAgainstPlayers,
|
||||
crippleLengthAgainstMobs;
|
||||
|
||||
@Override
|
||||
protected void dataCalculations(Player player, float skillValue) {
|
||||
@@ -33,7 +34,6 @@ public class MacesCommand extends SkillCommand {
|
||||
MacesManager.getCrippleTickDuration(true) / 20.0D);
|
||||
crippleLengthAgainstMobs = String.valueOf(
|
||||
MacesManager.getCrippleTickDuration(false) / 20.0D);
|
||||
|
||||
crippleChanceToApply =
|
||||
mcMMO.p.getAdvancedConfig().getCrippleChanceToApplyOnHit(crippleRank) + "%";
|
||||
crippleChanceToApplyLucky = String.valueOf(
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gmail.nossr50.commands.skills;
|
||||
|
||||
|
||||
import static com.gmail.nossr50.datatypes.skills.SubSkillType.SPEARS_SPEARS_LIMIT_BREAK;
|
||||
import static com.gmail.nossr50.util.skills.SkillUtils.canUseSubskill;
|
||||
import static com.gmail.nossr50.util.text.TextComponentFactory.appendSubSkillTextComponents;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
@@ -32,7 +33,7 @@ public class SpearsCommand extends SkillCommand {
|
||||
boolean isLucky) {
|
||||
List<String> messages = new ArrayList<>();
|
||||
|
||||
if (SkillUtils.canUseSubskill(player, SPEARS_SPEARS_LIMIT_BREAK)) {
|
||||
if (canUseSubskill(player, SPEARS_SPEARS_LIMIT_BREAK)) {
|
||||
messages.add(getStatMessage(SPEARS_SPEARS_LIMIT_BREAK,
|
||||
String.valueOf(CombatUtils.getLimitBreakDamageAgainstQuality(player,
|
||||
SPEARS_SPEARS_LIMIT_BREAK, 1000))));
|
||||
|
||||
@@ -28,8 +28,8 @@ public class DatabaseManagerFactory {
|
||||
: "Flatfile") + " database");
|
||||
}
|
||||
|
||||
return mcMMO.p.getGeneralConfig().getUseMySQL() ? new SQLDatabaseManager(logger,
|
||||
MYSQL_DRIVER)
|
||||
return mcMMO.p.getGeneralConfig().getUseMySQL()
|
||||
? new SQLDatabaseManager(logger, MYSQL_DRIVER)
|
||||
: new FlatFileDatabaseManager(userFilePath, logger, purgeTime, startingLevel);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeSet;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -845,45 +846,47 @@ public final class FlatFileDatabaseManager implements DatabaseManager {
|
||||
}
|
||||
|
||||
public void convertUsers(DatabaseManager destination) {
|
||||
BufferedReader in = null;
|
||||
int convertedUsers = 0;
|
||||
long startMillis = System.currentTimeMillis();
|
||||
|
||||
synchronized (fileWritingLock) {
|
||||
try {
|
||||
// Open the user file
|
||||
in = new BufferedReader(new FileReader(usersFilePath));
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(usersFilePath))) {
|
||||
String line;
|
||||
|
||||
while ((line = in.readLine()) != null) {
|
||||
if (line.startsWith("#")) {
|
||||
while ((line = reader.readLine()) != null) {
|
||||
line = line.trim();
|
||||
|
||||
// Skip comments and empty lines
|
||||
if (line.isEmpty() || line.startsWith("#")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String[] character = line.split(":");
|
||||
final String[] character = line.split(":");
|
||||
|
||||
try {
|
||||
destination.saveUser(loadFromLine(character));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// Keep the same semantics as before, but log via logger
|
||||
final String username = (character.length > USERNAME_INDEX)
|
||||
? character[USERNAME_INDEX]
|
||||
: "<unknown username>";
|
||||
logger.log(
|
||||
Level.SEVERE,
|
||||
"Could not convert user from FlatFile to SQL DB: " + username,
|
||||
e
|
||||
);
|
||||
}
|
||||
|
||||
convertedUsers++;
|
||||
Misc.printProgress(convertedUsers, progressInterval, startMillis);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (in != null) {
|
||||
try {
|
||||
in.close();
|
||||
} catch (IOException e) {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
logger.log(Level.SEVERE, "Failed to convert users from FlatFile to SQL DB", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean saveUserUUID(String userName, UUID uuid) {
|
||||
boolean worked = false;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -40,6 +40,7 @@ import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.skills.repair.RepairManager;
|
||||
import com.gmail.nossr50.skills.salvage.SalvageManager;
|
||||
import com.gmail.nossr50.skills.smelting.SmeltingManager;
|
||||
import com.gmail.nossr50.skills.spears.SpearsManager;
|
||||
import com.gmail.nossr50.skills.swords.SwordsManager;
|
||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||
import com.gmail.nossr50.skills.tridents.TridentsManager;
|
||||
@@ -63,6 +64,7 @@ import com.gmail.nossr50.util.sounds.SoundType;
|
||||
import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import net.kyori.adventure.identity.Identified;
|
||||
import net.kyori.adventure.identity.Identity;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -171,73 +173,50 @@ public class McMMOPlayer implements Identified {
|
||||
try {
|
||||
initManager(primarySkillType);
|
||||
} catch (InvalidSkillException e) {
|
||||
e.printStackTrace();
|
||||
mcMMO.p.getLogger().log(Level.SEVERE,
|
||||
"Invalid skill while initializing skill managers for player "
|
||||
+ player.getName()
|
||||
+ ". Contact the plugin developers.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: Add test
|
||||
private void initManager(PrimarySkillType primarySkillType) throws InvalidSkillException {
|
||||
switch (primarySkillType) {
|
||||
case ACROBATICS:
|
||||
skillManagers.put(primarySkillType, new AcrobaticsManager(this));
|
||||
break;
|
||||
case ALCHEMY:
|
||||
skillManagers.put(primarySkillType, new AlchemyManager(this));
|
||||
break;
|
||||
case ARCHERY:
|
||||
skillManagers.put(primarySkillType, new ArcheryManager(this));
|
||||
break;
|
||||
case AXES:
|
||||
skillManagers.put(primarySkillType, new AxesManager(this));
|
||||
break;
|
||||
case CROSSBOWS:
|
||||
skillManagers.put(primarySkillType, new CrossbowsManager(this));
|
||||
break;
|
||||
case EXCAVATION:
|
||||
skillManagers.put(primarySkillType, new ExcavationManager(this));
|
||||
break;
|
||||
case FISHING:
|
||||
skillManagers.put(primarySkillType, new FishingManager(this));
|
||||
break;
|
||||
case HERBALISM:
|
||||
skillManagers.put(primarySkillType, new HerbalismManager(this));
|
||||
break;
|
||||
case MINING:
|
||||
skillManagers.put(primarySkillType, new MiningManager(this));
|
||||
break;
|
||||
case REPAIR:
|
||||
skillManagers.put(primarySkillType, new RepairManager(this));
|
||||
break;
|
||||
case SALVAGE:
|
||||
skillManagers.put(primarySkillType, new SalvageManager(this));
|
||||
break;
|
||||
case SMELTING:
|
||||
skillManagers.put(primarySkillType, new SmeltingManager(this));
|
||||
break;
|
||||
case SWORDS:
|
||||
skillManagers.put(primarySkillType, new SwordsManager(this));
|
||||
break;
|
||||
case TAMING:
|
||||
skillManagers.put(primarySkillType, new TamingManager(this));
|
||||
break;
|
||||
case TRIDENTS:
|
||||
skillManagers.put(primarySkillType, new TridentsManager(this));
|
||||
break;
|
||||
case UNARMED:
|
||||
skillManagers.put(primarySkillType, new UnarmedManager(this));
|
||||
break;
|
||||
case WOODCUTTING:
|
||||
skillManagers.put(primarySkillType, new WoodcuttingManager(this));
|
||||
break;
|
||||
case MACES:
|
||||
if (mcMMO.getCompatibilityManager().getMinecraftGameVersion().isAtLeast(1, 21, 0)) {
|
||||
skillManagers.put(primarySkillType, new MacesManager(this));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new InvalidSkillException(
|
||||
"The skill named has no manager! Contact the devs!");
|
||||
final var version = mcMMO.getCompatibilityManager().getMinecraftGameVersion();
|
||||
|
||||
final SkillManager manager = switch (primarySkillType) {
|
||||
case ACROBATICS -> new AcrobaticsManager(this);
|
||||
case ALCHEMY -> new AlchemyManager(this);
|
||||
case ARCHERY -> new ArcheryManager(this);
|
||||
case AXES -> new AxesManager(this);
|
||||
case CROSSBOWS -> new CrossbowsManager(this);
|
||||
case EXCAVATION -> new ExcavationManager(this);
|
||||
case FISHING -> new FishingManager(this);
|
||||
case HERBALISM -> new HerbalismManager(this);
|
||||
case MINING -> new MiningManager(this);
|
||||
case REPAIR -> new RepairManager(this);
|
||||
case SALVAGE -> new SalvageManager(this);
|
||||
case SMELTING -> new SmeltingManager(this);
|
||||
case SWORDS -> new SwordsManager(this);
|
||||
case TAMING -> new TamingManager(this);
|
||||
case TRIDENTS -> new TridentsManager(this);
|
||||
case UNARMED -> new UnarmedManager(this);
|
||||
case WOODCUTTING -> new WoodcuttingManager(this);
|
||||
|
||||
case MACES -> version.isAtLeast(1, 21, 0)
|
||||
? new MacesManager(this)
|
||||
: null; // keep current behavior: no manager on older versions
|
||||
|
||||
case SPEARS -> version.isAtLeast(1, 21, 11)
|
||||
? new SpearsManager(this)
|
||||
: null; // same here
|
||||
};
|
||||
|
||||
if (manager != null) {
|
||||
skillManagers.put(primarySkillType, manager);
|
||||
} else {
|
||||
throw new InvalidSkillException("No valid skill manager for skill: " + primarySkillType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,6 +348,10 @@ public class McMMOPlayer implements Identified {
|
||||
return (SmeltingManager) skillManagers.get(PrimarySkillType.SMELTING);
|
||||
}
|
||||
|
||||
public SpearsManager getSpearsManager() {
|
||||
return (SpearsManager) skillManagers.get(PrimarySkillType.SPEARS);
|
||||
}
|
||||
|
||||
public SwordsManager getSwordsManager() {
|
||||
return (SwordsManager) skillManagers.get(PrimarySkillType.SWORDS);
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ public class PlayerProfile {
|
||||
this.loaded = isLoaded;
|
||||
}
|
||||
|
||||
public PlayerProfile(@NotNull String playerName, UUID uuid, boolean isLoaded, int startingLvl) {
|
||||
public PlayerProfile(@NotNull String playerName, @Nullable UUID uuid, boolean isLoaded, int startingLvl) {
|
||||
this(playerName, uuid, startingLvl);
|
||||
this.loaded = isLoaded;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ JSON.Salvage=Salvage
|
||||
JSON.Swords=Swords
|
||||
JSON.Taming=Taming
|
||||
JSON.Tridents=Tridents
|
||||
JSON.Spears=Spears
|
||||
JSON.Maces=Maces
|
||||
JSON.Unarmed=Unarmed
|
||||
JSON.Woodcutting=Woodcutting
|
||||
@@ -98,6 +99,7 @@ Overhaul.Name.Smelting=Smelting
|
||||
Overhaul.Name.Swords=Swords
|
||||
Overhaul.Name.Taming=Taming
|
||||
Overhaul.Name.Tridents=Tridents
|
||||
Overhaul.Name.Spears=Spears
|
||||
Overhaul.Name.Maces=Maces
|
||||
Overhaul.Name.Unarmed=Unarmed
|
||||
Overhaul.Name.Woodcutting=Woodcutting
|
||||
@@ -125,6 +127,7 @@ XPBar.Smelting=Smelting Lv.&6{0}
|
||||
XPBar.Swords=Swords Lv.&6{0}
|
||||
XPBar.Taming=Taming Lv.&6{0}
|
||||
XPBar.Tridents=Tridents Lv.&6{0}
|
||||
XPBar.Spears=Spears Lv.&6{0}
|
||||
XPBar.Maces=Maces Lv.&6{0}
|
||||
XPBar.Unarmed=Unarmed Lv.&6{0}
|
||||
XPBar.Woodcutting=Woodcutting Lv.&6{0}
|
||||
@@ -474,6 +477,16 @@ Maces.SubSkill.Cripple.Stat=Cripple Chance
|
||||
Maces.SubSkill.Cripple.Stat.Extra=[[DARK_AQUA]]Cripple Duration: &e{0}s&a vs Players, &e{1}s&a vs Mobs.
|
||||
Maces.Listener=Maces:
|
||||
|
||||
#SPEARS
|
||||
Spears.SkillName=SPEARS
|
||||
Spears.Ability.Lower=&7You lower your spear.
|
||||
Spears.Ability.Ready=&3You &6ready&3 your spear.
|
||||
Spears.SubSkill.SpearsLimitBreak.Name=Spears Limit Break
|
||||
Spears.SubSkill.SpearsLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
|
||||
Spears.SubSkill.SpearsLimitBreak.Stat=Limit Break Max DMG
|
||||
Spears.SubSkill.SpearAbility.Name=WIP
|
||||
Spears.Listener=Spears:
|
||||
|
||||
#SWORDS
|
||||
Swords.Ability.Lower=&7You lower your sword.
|
||||
Swords.Ability.Ready=&3You &6ready&3 your Sword.
|
||||
@@ -913,6 +926,7 @@ Commands.XPGain.Repair=Repairing
|
||||
Commands.XPGain.Swords=Attacking Monsters
|
||||
Commands.XPGain.Taming=Animal Taming, or combat w/ your wolves
|
||||
Commands.XPGain.Tridents=Attacking Monsters
|
||||
Commands.XPGain.Spears=Attacking Monsters
|
||||
Commands.XPGain.Unarmed=Attacking Monsters
|
||||
Commands.XPGain.Woodcutting=Chopping down trees
|
||||
Commands.XPGain=&8XP GAIN: &f{0}
|
||||
@@ -1047,12 +1061,12 @@ Guides.Woodcutting.Section.1=&3How does Tree Feller work?\n&eTree Feller is an a
|
||||
Guides.Woodcutting.Section.2=&3How does Leaf Blower work?\n&eLeaf Blower is a passive ability that will cause leaf\n&eblocks to break instantly when hit with an axe. By default,\nðis ability unlocks at level 100.
|
||||
Guides.Woodcutting.Section.3=&3How do Double Drops work?\n&eThis passive ability gives you a chance to obtain an extra\n&eblock for every log you chop.
|
||||
# Crossbows
|
||||
Guides.Crossbows.Section.0=&3About Crossbows:\n&eCrossbows is all about shooting with your crossbow.\n\n&3XP GAIN:\n&eXP is gained whenever you shoot mobs with a crossbow.\nThis is a WIP skill and more information will be added soon.
|
||||
Guides.Crossbows.Section.0=&3About Crossbows:\n&eCrossbows is all about shooting with your crossbow.\n\n&3XP GAIN:\n&eXP is gained whenever you shoot mobs with a crossbow.
|
||||
Guides.Crossbows.Section.1=&3How does Trickshot work?\n&eTrickshot is an passive ability, you shoot your bolts at a shallow angle with a crossbow to attempt a Trickshot. This will cause the arrow to ricochet off of blocks and potentially hit a target. The number of potential bounces from a ricochet depend on the rank of Trickshot.
|
||||
# Tridents
|
||||
Guides.Tridents.Section.0=&3About Tridents:\n&eTridents skill involves impaling foes with your trident.\n\n&3XP GAIN:\n&eXP is gained whenever you hit mobs with a trident.\nThis is a WIP skill and more information will be added soon.
|
||||
Guides.Maces.Section.0=&3About Maces:\n&eMaces is all about smashing your foes with a mace.\n\n&3XP GAIN:\n&eXP is gained whenever you hit mobs with a mace.\nThis is a WIP skill and more information will be added soon.
|
||||
|
||||
Guides.Tridents.Section.0=&3About Tridents:\n&eTridents skill involves impaling foes with your trident.\n\n&3XP GAIN:\n&eXP is gained whenever you hit mobs with a trident.
|
||||
Guides.Maces.Section.0=&3About Maces:\n&eMaces is all about smashing your foes with a mace.\n\n&3XP GAIN:\n&eXP is gained whenever you hit mobs with a mace.
|
||||
Guides.Spears.Section.0=&3About Spears:\n&eSpears is all about impaling your foes with a spear.\n\n&3XP GAIN:\n&eXP is gained whenever you hit mobs with a spear.
|
||||
#INSPECT
|
||||
Inspect.Offline= &cYou do not have permission to inspect offline players!
|
||||
Inspect.OfflineStats=mcMMO Stats for Offline Player &e{0}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user