mirror of
https://github.com/Oth3r/Sit.git
synced 2025-09-19 07:53:22 +02:00
hand-config -> sitting-config
This commit is contained in:
parent
ba18027bcf
commit
e105f36dc8
4 changed files with 65 additions and 61 deletions
|
@ -20,28 +20,28 @@ public class Data {
|
|||
}
|
||||
|
||||
/**
|
||||
* The default hand config for all new players
|
||||
* The default sitting config for all new players
|
||||
*/
|
||||
private static HandConfig handConfig = new HandConfig();
|
||||
private static SittingConfig sittingConfig = new SittingConfig();
|
||||
|
||||
public static HandConfig getHandConfig() {
|
||||
return new HandConfig(handConfig);
|
||||
public static SittingConfig getSittingConfig() {
|
||||
return new SittingConfig(sittingConfig);
|
||||
}
|
||||
|
||||
public static void setHandConfig(HandConfig newHandConfig) {
|
||||
handConfig = new HandConfig(newHandConfig);
|
||||
public static void setSittingConfig(SittingConfig newSittingConfig) {
|
||||
sittingConfig = new SittingConfig(newSittingConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* the hand config stored per player on the server
|
||||
* the sitting config stored per player on the server
|
||||
*/
|
||||
private static final HashMap<ServerPlayerEntity, HandConfig> playerSettings = new HashMap<>();
|
||||
private static final HashMap<ServerPlayerEntity, SittingConfig> playerSettings = new HashMap<>();
|
||||
|
||||
public static void clearPlayerSettings() {
|
||||
playerSettings.clear();
|
||||
}
|
||||
|
||||
public static void setPlayerSetting(ServerPlayerEntity player, HandConfig config) {
|
||||
public static void setPlayerSetting(ServerPlayerEntity player, SittingConfig config) {
|
||||
playerSettings.put(player, config);
|
||||
}
|
||||
|
||||
|
@ -49,8 +49,8 @@ public class Data {
|
|||
playerSettings.remove(player);
|
||||
}
|
||||
|
||||
public static HandConfig getPlayerSetting(ServerPlayerEntity player) {
|
||||
return playerSettings.getOrDefault(player,handConfig);
|
||||
public static SittingConfig getPlayerSetting(ServerPlayerEntity player) {
|
||||
return playerSettings.getOrDefault(player, sittingConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -97,6 +97,6 @@ public class Data {
|
|||
*/
|
||||
public static void loadFiles(boolean tryLegacy) {
|
||||
ServerConfig.load(tryLegacy);
|
||||
HandConfig.load();
|
||||
SittingConfig.load();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,32 +12,36 @@ import java.nio.charset.StandardCharsets;
|
|||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class HandConfig {
|
||||
public class SittingConfig {
|
||||
|
||||
@SerializedName("version")
|
||||
private Double version = 1.0;
|
||||
@SerializedName("enabled")
|
||||
private Boolean enabled = true;
|
||||
@SerializedName("hand-sitting")
|
||||
private boolean handSitting = true;
|
||||
private Boolean handSitting = true;
|
||||
@SerializedName("main-hand")
|
||||
private HandSetting mainHand = new HandSetting(HandSetting.SittingRequirement.EMPTY, new HandSetting.Filter());
|
||||
@SerializedName("off-hand")
|
||||
private HandSetting offHand = new HandSetting(HandSetting.SittingRequirement.FILTER,
|
||||
new HandSetting.Filter(false,true,false,new ArrayList<>(),new ArrayList<>())); // todo fill out some fox examples sake
|
||||
|
||||
public HandConfig() {}
|
||||
public SittingConfig() {}
|
||||
|
||||
public HandConfig(double version, boolean handSitting, HandSetting mainHand, HandSetting offHand) {
|
||||
public SittingConfig(double version, boolean enabled, boolean handSitting, HandSetting mainHand, HandSetting offHand) {
|
||||
this.version = version;
|
||||
this.enabled = enabled;
|
||||
this.handSitting = handSitting;
|
||||
this.mainHand = mainHand;
|
||||
this.offHand = offHand;
|
||||
}
|
||||
|
||||
public HandConfig(HandConfig handConfig) {
|
||||
this.version = handConfig.version;
|
||||
this.handSitting = handConfig.handSitting;
|
||||
this.mainHand = handConfig.mainHand;
|
||||
this.offHand = handConfig.offHand;
|
||||
public SittingConfig(SittingConfig sittingConfig) {
|
||||
this.version = sittingConfig.version;
|
||||
this.enabled = sittingConfig.enabled;
|
||||
this.handSitting = sittingConfig.handSitting;
|
||||
this.mainHand = sittingConfig.mainHand;
|
||||
this.offHand = sittingConfig.offHand;
|
||||
}
|
||||
|
||||
public Double getVersion() {
|
||||
|
@ -61,7 +65,7 @@ public class HandConfig {
|
|||
}
|
||||
|
||||
public static File getFile() {
|
||||
return new File(Sit.CONFIG_DIR+"hand-config.json");
|
||||
return new File(Sit.CONFIG_DIR+"sitting-config.json");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -73,7 +77,7 @@ public class HandConfig {
|
|||
if (!file.exists()) save();
|
||||
// try reading the file
|
||||
try (BufferedReader reader = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8)) {
|
||||
Updater.HandConfigFile.run(reader);
|
||||
Updater.SittingConfigFile.run(reader);
|
||||
} catch (Exception e) {
|
||||
Sit.LOGGER.error(String.format("ERROR LOADING '%s`: %s", file.getName(),e.getMessage()));
|
||||
}
|
||||
|
@ -89,7 +93,7 @@ public class HandConfig {
|
|||
Sit.LOGGER.info(String.format("Creating new `%s`", getFile().getName()));
|
||||
}
|
||||
try (BufferedWriter writer = Files.newBufferedWriter(getFile().toPath(), StandardCharsets.UTF_8)) {
|
||||
writer.write(Utl.getGson().toJson(Data.getHandConfig()));
|
||||
writer.write(Utl.getGson().toJson(Data.getSittingConfig()));
|
||||
} catch (Exception e) {
|
||||
Sit.LOGGER.error(String.format("ERROR SAVING '%s`: %s", getFile().getName(), e.getMessage()));
|
||||
}
|
|
@ -17,7 +17,7 @@ import java.util.*;
|
|||
|
||||
public class Updater {
|
||||
|
||||
public static class HandConfigFile {
|
||||
public static class SittingConfigFile {
|
||||
|
||||
/**
|
||||
* runs the updater from the file reader and sets the loaded settings when finished
|
||||
|
@ -27,34 +27,34 @@ public class Updater {
|
|||
public static void run(BufferedReader reader)
|
||||
throws NullPointerException {
|
||||
// try to read the json
|
||||
HandConfig handConfig;
|
||||
SittingConfig sittingConfig;
|
||||
try {
|
||||
handConfig = Utl.getGson().fromJson(reader, HandConfig.class);
|
||||
sittingConfig = Utl.getGson().fromJson(reader, SittingConfig.class);
|
||||
} catch (Exception e) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
|
||||
// throw null if the fileData is null or version is null
|
||||
if (handConfig == null) throw new NullPointerException();
|
||||
if (sittingConfig == null) throw new NullPointerException();
|
||||
|
||||
// get the file version
|
||||
Double version = handConfig.getVersion();
|
||||
Double version = sittingConfig.getVersion();
|
||||
|
||||
// if there's no version, throw
|
||||
if (version == null) throw new NullPointerException();
|
||||
|
||||
// update the config (using the non-null version)
|
||||
handConfig = update(handConfig);
|
||||
sittingConfig = update(sittingConfig);
|
||||
|
||||
// set the config in the mod data
|
||||
Data.setHandConfig(handConfig);
|
||||
Data.setSittingConfig(sittingConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* updates the file
|
||||
*/
|
||||
public static HandConfig update(HandConfig old) {
|
||||
HandConfig serverConfig = new HandConfig(old);
|
||||
public static SittingConfig update(SittingConfig old) {
|
||||
SittingConfig serverConfig = new SittingConfig(old);
|
||||
return serverConfig;
|
||||
}
|
||||
}
|
||||
|
@ -202,19 +202,19 @@ public class Updater {
|
|||
new ArrayList<>()
|
||||
);
|
||||
|
||||
HandConfig defaultHandConfig = new HandConfig();
|
||||
SittingConfig defaultSittingConfig = new SittingConfig();
|
||||
|
||||
HandConfig handConfig = null;
|
||||
SittingConfig sittingConfig = null;
|
||||
// * filters are flipped because the way they work are flipped
|
||||
try {
|
||||
handConfig = new HandConfig(
|
||||
1.0, Boolean.parseBoolean((String) properties.computeIfAbsent("hand.sitting", a -> String.valueOf(defaultHandConfig.canSitWithHand()))),
|
||||
sittingConfig = new SittingConfig(
|
||||
1.0, true, Boolean.parseBoolean((String) properties.computeIfAbsent("hand.sitting", a -> String.valueOf(defaultSittingConfig.canSitWithHand()))),
|
||||
new HandSetting(
|
||||
Utl.Enum.get(properties.computeIfAbsent("hand.main.requirement", a -> String.valueOf(defaultHandConfig.getHand(Hand.MAIN_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
Utl.Enum.get(properties.computeIfAbsent("hand.main.requirement", a -> String.valueOf(defaultSittingConfig.getHand(Hand.MAIN_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
new HandSetting.Filter(
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.main.block", a -> String.valueOf(!defaultHandConfig.getHand(Hand.MAIN_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.main.food", a -> String.valueOf(!defaultHandConfig.getHand(Hand.MAIN_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.main.usable", a -> String.valueOf(!defaultHandConfig.getHand(Hand.MAIN_HAND).getFilter().isUsable()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.main.block", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.MAIN_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.main.food", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.MAIN_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.main.usable", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.MAIN_HAND).getFilter().isUsable()))),
|
||||
getFilterList(
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("hand.main.whitelist", a -> "[]"), listType),
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("hand.main.blacklist", a -> "[]"), listType)
|
||||
|
@ -223,11 +223,11 @@ public class Updater {
|
|||
)
|
||||
),
|
||||
new HandSetting(
|
||||
Utl.Enum.get(properties.computeIfAbsent("hand.off.requirement", a -> String.valueOf(defaultHandConfig.getHand(Hand.OFF_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
Utl.Enum.get(properties.computeIfAbsent("hand.off.requirement", a -> String.valueOf(defaultSittingConfig.getHand(Hand.OFF_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
new HandSetting.Filter(
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.off.block", a -> String.valueOf(!defaultHandConfig.getHand(Hand.OFF_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.off.food", a -> String.valueOf(!defaultHandConfig.getHand(Hand.OFF_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.off.usable", a -> String.valueOf(!defaultHandConfig.getHand(Hand.OFF_HAND).getFilter().isUsable()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.off.block", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.OFF_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.off.food", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.OFF_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("hand.off.usable", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.OFF_HAND).getFilter().isUsable()))),
|
||||
getFilterList(
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("hand.off.whitelist", a -> "[]"), listType),
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("hand.off.blacklist", a -> "[]"), listType)
|
||||
|
@ -241,14 +241,14 @@ public class Updater {
|
|||
// load an older version
|
||||
if (version == 1.0) {
|
||||
try {
|
||||
handConfig = new HandConfig(
|
||||
1.0, defaultHandConfig.canSitWithHand(),
|
||||
sittingConfig = new SittingConfig(
|
||||
1.0, true, defaultSittingConfig.canSitWithHand(),
|
||||
new HandSetting(
|
||||
Utl.Enum.get(properties.computeIfAbsent("main-hand-requirement", a -> String.valueOf(defaultHandConfig.getHand(Hand.MAIN_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
Utl.Enum.get(properties.computeIfAbsent("main-hand-requirement", a -> String.valueOf(defaultSittingConfig.getHand(Hand.MAIN_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
new HandSetting.Filter(
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("main-hand-block", a -> String.valueOf(!defaultHandConfig.getHand(Hand.MAIN_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("main-hand-food", a -> String.valueOf(!defaultHandConfig.getHand(Hand.MAIN_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("main-hand-usable", a -> String.valueOf(!defaultHandConfig.getHand(Hand.MAIN_HAND).getFilter().isUsable()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("main-hand-block", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.MAIN_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("main-hand-food", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.MAIN_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("main-hand-usable", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.MAIN_HAND).getFilter().isUsable()))),
|
||||
getFilterList(
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("main-hand-whitelist", a -> "[]"), listType),
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("main-hand-blacklist", a -> "[]"), listType)
|
||||
|
@ -257,11 +257,11 @@ public class Updater {
|
|||
)
|
||||
),
|
||||
new HandSetting(
|
||||
Utl.Enum.get(properties.computeIfAbsent("off-hand-requirement", a -> String.valueOf(defaultHandConfig.getHand(Hand.OFF_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
Utl.Enum.get(properties.computeIfAbsent("off-hand-requirement", a -> String.valueOf(defaultSittingConfig.getHand(Hand.OFF_HAND).getSittingRequirement())),HandSetting.SittingRequirement.class,HandSetting.SittingRequirement.FILTER),
|
||||
new HandSetting.Filter(
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("off-hand-block", a -> String.valueOf(!defaultHandConfig.getHand(Hand.OFF_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("off-hand-food", a -> String.valueOf(!defaultHandConfig.getHand(Hand.OFF_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("off-hand-usable", a -> String.valueOf(!defaultHandConfig.getHand(Hand.OFF_HAND).getFilter().isUsable()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("off-hand-block", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.OFF_HAND).getFilter().isBlock()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("off-hand-food", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.OFF_HAND).getFilter().isFood()))),
|
||||
!Boolean.parseBoolean((String) properties.computeIfAbsent("off-hand-usable", a -> String.valueOf(!defaultSittingConfig.getHand(Hand.OFF_HAND).getFilter().isUsable()))),
|
||||
getFilterList(
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("off-hand-whitelist", a -> "[]"), listType),
|
||||
new Gson().fromJson((String) properties.computeIfAbsent("off-hand-blacklist", a -> "[]"), listType)
|
||||
|
@ -274,9 +274,9 @@ public class Updater {
|
|||
}
|
||||
|
||||
Data.setServerConfig(serverConfig);
|
||||
Data.setHandConfig(handConfig);
|
||||
Data.setSittingConfig(sittingConfig);
|
||||
ServerConfig.save();
|
||||
HandConfig.save();
|
||||
SittingConfig.save();
|
||||
} catch (Exception e) {
|
||||
Sit.LOGGER.error("Error loading legacy config: {}", e.getMessage());
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import net.minecraft.util.Hand;
|
|||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import one.oth3r.sit.file.Data;
|
||||
import one.oth3r.sit.file.HandConfig;
|
||||
import one.oth3r.sit.file.SittingConfig;
|
||||
import one.oth3r.sit.file.HandSetting;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
@ -46,9 +46,9 @@ public class Logic {
|
|||
* checks the hands of the player and the items in each hand and sees if the player can sit down
|
||||
*/
|
||||
public static boolean checkHands(ServerPlayerEntity player) {
|
||||
HandConfig handConfig = Data.getPlayerSetting(player);
|
||||
SittingConfig sittingConfig = Data.getPlayerSetting(player);
|
||||
// if can't sit with hand, false
|
||||
if (!handConfig.canSitWithHand()) return false;
|
||||
if (!sittingConfig.canSitWithHand()) return false;
|
||||
|
||||
boolean canSit = true;
|
||||
|
||||
|
@ -57,7 +57,7 @@ public class Logic {
|
|||
// if they can't sit, no need to run extra code
|
||||
if (!canSit) break;
|
||||
|
||||
HandSetting handSetting = handConfig.getHand(hand);
|
||||
HandSetting handSetting = sittingConfig.getHand(hand);
|
||||
switch (handSetting.getSittingRequirement()) {
|
||||
case EMPTY -> canSit = player.getStackInHand(hand).isEmpty();
|
||||
case FILTER -> canSit = Utl.checkItem(handSetting.getFilter(), player.getStackInHand(hand));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue