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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user