compiler target -> 17

totem settings will be saved now
added command to set and get totem fraction amount
master
Benjamin Kraft 3 years ago
parent c87d5f4e20
commit d3caaaad18
  1. 2
      .idea/compiler.xml
  2. 54
      src/main/java/com/benjocraeft/sharehealth/Commands.java
  3. 19
      src/main/java/com/benjocraeft/sharehealth/Messenger.java
  4. 8
      src/main/java/com/benjocraeft/sharehealth/Sharehealth.java
  5. 10
      src/main/java/com/benjocraeft/sharehealth/TotemManager.java

@ -9,7 +9,7 @@
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="Sharehealth" target="15" />
<module name="Sharehealth" target="17" />
</bytecodeTargetLevel>
</component>
</project>

@ -44,11 +44,17 @@ public class Commands implements TabExecutor {
"Totem of Undying: All players need to hold it."
);
putTotemCommand.apply("fraction").apply((sender, arg) -> commandSetTotemMode(sender, TotemManager.Mode.Fraction)).accept(
"Totem of Undying: At least fraction * player-count needs to hold it."
"Totem of Undying: At least fraction * player-count need to hold it."
);
putTotemCommand.apply("disabled").apply((sender, arg) -> commandSetTotemMode(sender, TotemManager.Mode.Disabled)).accept(
"Totem of Undying: Disabled"
);
putTotemCommand.apply("setfraction").apply(this::commandSetTotemFraction).accept(
"Totem of Undying: Set amount for mode: fraction."
);
putTotemCommand.apply("getfraction").apply((sender, arg) -> commandGetTotemFraction(sender)).accept(
"Totem of Undying: Get amount for mode: fraction."
);
commands.put(
Arrays.asList("log", "on"),
Pair.pair((sender, arg) -> commandSetLogging(sender, true), "Enables Logging.")
@ -117,18 +123,28 @@ public class Commands implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
List<String> argList = Arrays.asList(args);
Pair<BiConsumer<CommandSender, String>, String> command = commands.get(argList);
if (args.length > 1 && (args[0].equals("add") || args[0].equals("remove"))){
command = commands.get(Arrays.asList(args[0]));
}
if (command == null)
command = Pair.pair((cmdSender, arg) -> unknownCommand(cmdSender), "");
Pair<BiConsumer<CommandSender, String>, String> command = getCommand(args);
command.first.accept(sender, args.length > 0 ? args[args.length - 1] : "");
return true;
}
private Pair<BiConsumer<CommandSender, String>, String> getCommand(String[] args){
List<String> argList = Arrays.asList(args);
if (commands.containsKey(argList))
return commands.get(argList);
if (args.length > 1){
List<String> argListWithoutLast = argList.subList(0, args.length - 1);
if (commands.containsKey(argListWithoutLast))
return commands.get(argListWithoutLast);
}
return Pair.pair((cmdSender, arg) -> unknownCommand(cmdSender), "");
}
private void commandReset(CommandSender sender){
if (!sender.hasPermission("sharehealth.reset")){
sender.sendMessage("You don't have permissions for this command!");
@ -166,6 +182,27 @@ public class Commands implements TabExecutor {
sender.sendMessage("Set Totem mode to " + mode.name());
}
private void commandSetTotemFraction(CommandSender sender, String amountStr){
if (!sender.hasPermission("sharehealth.totem")){
sender.sendMessage("You don't have permissions for this command!");
return;
}
try {
double fraction = Double.parseDouble(amountStr);
Sharehealth.Instance.getTotemManager().setFractionNeeded(fraction);
double newValue = Sharehealth.Instance.getTotemManager().getFractionNeeded();
sender.sendMessage("Set totem fraction value to " + newValue);
} catch (NumberFormatException e){
sender.sendMessage("Provided value was not a number between 0.0 and 1.0!");
}
}
private void commandGetTotemFraction(CommandSender sender){
double value = Sharehealth.Instance.getTotemManager().getFractionNeeded();
sender.sendMessage("Totem fraction value: " + value);
}
private void commandSetLogging(CommandSender sender, boolean hasLogging){
if (sender instanceof Player){
if (!Sharehealth.GetPlayers().contains(sender))
@ -184,7 +221,6 @@ public class Commands implements TabExecutor {
String message = "Logging enabled: " + Sharehealth.Instance.getLogging((Player) sender);
sender.sendMessage(message);
}
}
private void commandSendStats(CommandSender sender){

@ -4,19 +4,19 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender;
import org.bukkit.projectiles.BlockProjectileSource;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.projectiles.BlockProjectileSource;
import org.bukkit.projectiles.ProjectileSource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.logging.Logger;
public class Messenger {
@ -132,17 +132,22 @@ public class Messenger {
}
String helpMessage(Map<List<String>, Pair<BiConsumer<CommandSender, String>, String>> commands){
StringBuilder helpMessage = new StringBuilder("Usage:");
List<String> lines = new ArrayList<>();
commands.forEach((nameList, pair) -> {
StringBuilder name = new StringBuilder();
nameList.forEach(str -> name.append(str).append(" "));
String description = pair.second;
helpMessage.append("\n").
append(ChatColor.AQUA).append(name).
append(ChatColor.WHITE).append("-> ").append(description);
String message = "\n" +
ChatColor.AQUA + name +
ChatColor.WHITE + "-> " + description;
lines.add(message);
});
return helpMessage.toString();
StringBuilder completeMessage = new StringBuilder("Usage:");
for (String line : lines.stream().sorted().toList())
completeMessage.append(line);
return completeMessage.toString();
}
private String getPlayerName(Player player){

@ -52,6 +52,8 @@ public class Sharehealth extends JavaPlugin {
defaultStatus.put("isFailed", false);
defaultStatus.put("absorptionAmount", 0.);
defaultStatus.put("absorptionDuration", 0);
defaultStatus.put("totemMode", 0);
defaultStatus.put("totemFraction", 0.5);
}
@Override
@ -207,7 +209,7 @@ public class Sharehealth extends JavaPlugin {
statistics.reset();
fileManager.saveStatistics(statistics.getStatistics());
healthManager.reset();
Sharehealth.GetPlayers().forEach(p -> p.setGameMode(GameMode.SURVIVAL));
GetPlayers().forEach(p -> p.setGameMode(GameMode.SURVIVAL));
saveStatus();
}
@ -244,6 +246,8 @@ public class Sharehealth extends JavaPlugin {
map.put("isFailed", isFailed);
map.put("absorptionAmount", healthManager.absorptionManager.amount);
map.put("absorptionDuration", healthManager.absorptionManager.duration);
map.put("totemMode", totemManager.getMode().ordinal());
map.put("totemFraction", totemManager.getFractionNeeded());
fileManager.saveStatus(map);
}
@ -260,6 +264,8 @@ public class Sharehealth extends JavaPlugin {
(int)map.get("absorptionDuration"),
(Double)map.get("absorptionAmount")
);
totemManager.setMode(TotemManager.Mode.values()[(int)map.get("totemMode")]);
totemManager.setFractionNeeded((Double)map.get("totemFraction"));
}
void onLoggingUpdated(Player player, boolean hasLogging){

@ -17,12 +17,22 @@ public class TotemManager {
public void setMode(Mode mode){
this.mode = mode;
}
public Mode getMode(){
return mode;
}
//between 0 and 1
private double fractionNeeded;
public void setFractionNeeded(double value){
if (value < 0)
value = 0;
if (value > 1)
value = 1;
fractionNeeded = value;
}
public double getFractionNeeded() {
return fractionNeeded;
}
//Determine if enough players hold a totem of undying
public boolean totemCanBeUsed(){

Loading…
Cancel
Save