.
This commit is contained in:
parent
a365f70873
commit
0e8c48f570
39 changed files with 379 additions and 327 deletions
|
|
@ -4,7 +4,9 @@ import org.bukkit.plugin.Plugin;
|
|||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import site.lab0x13.scrow.configurator.configfile.ConfigFileRegistry;
|
||||
import site.lab0x13.scrow.extraction.config.ExtractionConfig;
|
||||
import site.lab0x13.scrow.extraction.config.ExtractionConfigStorable;
|
||||
|
||||
public class ExtractionPlugin extends JavaPlugin {
|
||||
|
||||
|
|
@ -18,6 +20,7 @@ public class ExtractionPlugin extends JavaPlugin {
|
|||
@Override
|
||||
public void onEnable() {
|
||||
_plugin = this;
|
||||
ExtractionConfig.registerAndLoad(this);
|
||||
var config = new ExtractionConfigStorable(this.getDataPath().resolve("config.json"));
|
||||
ConfigFileRegistry.get().register(config, ExtractionConfig.defaultConfig());
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import net.kyori.adventure.text.Component;
|
|||
import org.bukkit.Location;
|
||||
import site.lab0x13.scrow.extraction.extractionpoint.ExtractionPoint;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public record ArenaConfig(
|
||||
|
|
@ -12,4 +13,7 @@ public record ArenaConfig(
|
|||
List<Location> spawnLocations,
|
||||
List<ExtractionPoint> extractionPoints
|
||||
) {
|
||||
public static ArenaConfig defaultConfig() {
|
||||
return new ArenaConfig("", Component.empty(), new ArrayList<>(), new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ package site.lab0x13.scrow.extraction.config;
|
|||
import site.lab0x13.scrow.configurator.storable.complex.ComplexStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.complex.FieldReader;
|
||||
import site.lab0x13.scrow.configurator.storable.complex.FieldRegistry;
|
||||
import site.lab0x13.scrow.configurator.storable.impl.MiniMessageStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.list.ListStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.impl.component.ComponentStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.impl.location.LocationStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.list.ListStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.primitive.StringStorable;
|
||||
|
||||
public class ArenaConfigStorable extends ComplexStorable<ArenaConfig> {
|
||||
|
|
@ -13,9 +13,12 @@ public class ArenaConfigStorable extends ComplexStorable<ArenaConfig> {
|
|||
@Override
|
||||
protected void registerFields(FieldRegistry<ArenaConfig> registry) {
|
||||
registry.registerField("id", new StringStorable(), ArenaConfig::id);
|
||||
registry.registerField("name", new MiniMessageStorable(), ArenaConfig::name);
|
||||
registry.registerField("spawnLocations", new ListStorable<>(LocationStorable::new), ArenaConfig::spawnLocations);
|
||||
registry.registerField("extractionPoints", new ListStorable<>(ExtractionPointStorable::new), ArenaConfig::extractionPoints);
|
||||
registry.registerField("name", new ComponentStorable(), ArenaConfig::name);
|
||||
registry.registerField("spawnLocations",
|
||||
new ListStorable<>(LocationStorable::new), ArenaConfig::spawnLocations);
|
||||
registry.registerField("extractionPoints",
|
||||
new ListStorable<>(ExtractionPointStorable::new),
|
||||
ArenaConfig::extractionPoints);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,32 +1,27 @@
|
|||
package site.lab0x13.scrow.extraction.config;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import site.lab0x13.scrow.configurator.configfile.ConfigFile;
|
||||
import site.lab0x13.scrow.configurator.configfile.ConfigFileRegistry;
|
||||
import site.lab0x13.scrow.configurator.storable.impl.DurationStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.list.ListStorable;
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import java.io.IOException;
|
||||
public record ExtractionConfig(
|
||||
List<ArenaConfig> arenas,
|
||||
Duration extractionDuration
|
||||
) {
|
||||
private static ExtractionConfig instance;
|
||||
|
||||
public final class ExtractionConfig {
|
||||
private ExtractionConfig() {
|
||||
public static ExtractionConfig defaultConfig() {
|
||||
return new ExtractionConfig(
|
||||
new ArrayList<>(),
|
||||
Duration.ofMillis(100)
|
||||
);
|
||||
}
|
||||
|
||||
public static final ListStorable<ArenaConfig> arenas = new ListStorable<>(ArenaConfigStorable::new);
|
||||
public static final DurationStorable extractionDuration = new DurationStorable();
|
||||
public ExtractionConfig {
|
||||
instance = this;
|
||||
}
|
||||
|
||||
public static void registerAndLoad(Plugin plugin) {
|
||||
var configFile = ConfigFile.of(plugin.getDataPath().resolve("config.json"));
|
||||
ConfigFileRegistry.get().register(configFile);
|
||||
{
|
||||
configFile.registerStorable("arenas", arenas);
|
||||
configFile.registerStorable("extractionDuration", extractionDuration);
|
||||
}
|
||||
try {
|
||||
configFile.load();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("failed loading config", e);
|
||||
}
|
||||
public static ExtractionConfig get() {
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package site.lab0x13.scrow.extraction.config;
|
||||
|
||||
import site.lab0x13.scrow.configurator.configfile.ConfigFile;
|
||||
import site.lab0x13.scrow.configurator.storable.complex.FieldReader;
|
||||
import site.lab0x13.scrow.configurator.storable.complex.FieldRegistry;
|
||||
import site.lab0x13.scrow.configurator.storable.impl.DurationStorable;
|
||||
import site.lab0x13.scrow.configurator.storable.list.ListStorable;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class ExtractionConfigStorable extends ConfigFile<ExtractionConfig> {
|
||||
public ExtractionConfigStorable(Path path) {
|
||||
super(path);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerFields(FieldRegistry<ExtractionConfig> registry) {
|
||||
registry.registerField("arenas", new ListStorable<>(ArenaConfigStorable::new), ExtractionConfig::arenas);
|
||||
registry.registerField("extractionDuration", new DurationStorable(), ExtractionConfig::extractionDuration);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ExtractionConfig construct(FieldReader<ExtractionConfig> reader) {
|
||||
return new ExtractionConfig(
|
||||
reader.read("arenas"),
|
||||
reader.read("extractionDuration")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package site.lab0x13.scrow.extraction.extractionpoint;
|
|||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import site.lab0x13.scrow.extraction.compass.CompassTarget;
|
||||
import site.lab0x13.scrow.extraction.config.ExtractionConfig;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import site.lab0x13.scrow.extraction.config.ExtractionConfig;
|
|||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
|
@ -28,12 +27,12 @@ public class ExtractionProgress {
|
|||
private final List<Consumer<Double>> changeSubscribers = new ArrayList<>();
|
||||
private final long requiredMs;
|
||||
/**
|
||||
* System.currentTimeMillis() at first click (in this attempt to extract)
|
||||
* or < 0 if extracting hasn't been attempted recently.
|
||||
* System.currentTimeMillis() at first click (in this attempt to extract)
|
||||
* or < 0 if extracting hasn't been attempted recently.
|
||||
*/
|
||||
private long clickingSince = -1;
|
||||
/**
|
||||
* System.currentTimeMillis() at last click
|
||||
* System.currentTimeMillis() at last click
|
||||
*/
|
||||
private long lastClickMs = 0;
|
||||
|
||||
|
|
@ -45,7 +44,7 @@ public class ExtractionProgress {
|
|||
}
|
||||
|
||||
public ExtractionProgress() {
|
||||
this(requireNonNull(ExtractionConfig.extractionDuration.value()));
|
||||
this(ExtractionConfig.get().extractionDuration());
|
||||
}
|
||||
|
||||
public void advanceExtraction() {
|
||||
|
|
@ -57,6 +56,7 @@ public class ExtractionProgress {
|
|||
/* reset if not called again for a while */
|
||||
new BukkitRunnable() {
|
||||
final long lastClickMsAtStart = lastClickMs;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (lastClickMsAtStart == lastClickMs)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue