refactor config

This commit is contained in:
Stachelbeere1248 2024-06-02 01:30:00 +02:00
parent 93df8513bc
commit 328f07d6f6
Signed by: Stachelbeere1248
SSH key fingerprint: SHA256:IozEKdw2dB8TZxkpPdMxcWSoWTIMwoLaCcZJ1AJnY2o
22 changed files with 492 additions and 150 deletions

View file

@ -3,4 +3,4 @@ org.gradle.jvmargs=-Xmx2g
baseGroup = com.github.stachelbeere1248.zombiesutils
mcVersion = 1.8.9
modid = zombiesutils
version = 1.2.5
version = 1.3

View file

@ -16,6 +16,7 @@ import org.jetbrains.annotations.NotNull;
public class ZombiesUtils {
private static ZombiesUtils instance;
private final Hotkeys hotkeys;
private ZombiesUtilsConfig config;
private Handlers handlers;
private Logger logger;
@ -28,14 +29,18 @@ public class ZombiesUtils {
return instance;
}
public static boolean isHypixel() {
String ip = Minecraft.getMinecraft().getCurrentServerData().serverIP;
return (ip.equals("localhost") || ip.matches("(.+\\.)?(hypixel\\.net)(:25565)?"));
}
@Mod.EventHandler
public void preInit(@NotNull FMLPreInitializationEvent event) {
logger = event.getModLog();
ZombiesUtilsConfig.config = new Configuration(
this.config = new ZombiesUtilsConfig(new Configuration(
event.getSuggestedConfigurationFile(),
"1.2.4"
"1.2.4")
);
ZombiesUtilsConfig.load();
}
@Mod.EventHandler
@ -58,7 +63,7 @@ public class ZombiesUtils {
return handlers;
}
public static boolean isHypixel() {
return Minecraft.getMinecraft().getCurrentServerData().serverIP.matches("(.+\\.)?(hypixel\\.net)(:25565)?");
public ZombiesUtilsConfig getConfig() {
return config;
}
}

View file

@ -2,8 +2,8 @@ package com.github.stachelbeere1248.zombiesutils.commands;
import com.github.stachelbeere1248.zombiesutils.timer.Timer;
import com.github.stachelbeere1248.zombiesutils.timer.recorder.Category;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import net.minecraft.util.BlockPos;
@ -13,7 +13,7 @@ import java.io.File;
import java.util.Arrays;
import java.util.List;
public class CategoryCommand extends CommandBase {
public class CategoryCommand implements ICommand {
public CategoryCommand() {
}
@ -28,13 +28,18 @@ public class CategoryCommand extends CommandBase {
return "/category <category-name>";
}
@Override
public List<String> getCommandAliases() {
return Arrays.asList("runCategory", "cat");
}
@Override
public void processCommand(ICommandSender sender, String @NotNull [] args) throws CommandException {
if (args.length == 0) throw new WrongUsageException("Please enter a name for the category");
else {
String cat = args[0];
if (cat.contains(File.separator))
throw new WrongUsageException("Your name must not contain '" + File.separator + "' as this is the systems separator character for folder" + File.separator + "subfolder");
throw new WrongUsageException("Your name must not contain '" + File.separator + "' as this is the systems separator character for folder" + File.separator + "sub-folder");
Category.setSelectedCategory(cat);
Timer.getInstance().ifPresent(timer -> timer.setCategory(new Category()));
}
@ -45,8 +50,18 @@ public class CategoryCommand extends CommandBase {
return Arrays.asList(Category.getCategories());
}
@Override
public boolean isUsernameIndex(String[] args, int index) {
return false;
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return true;
}
@Override
public int compareTo(@NotNull ICommand command) {
return this.getCommandName().compareTo(command.getCommandName());
}
}

View file

@ -1,8 +1,8 @@
package com.github.stachelbeere1248.zombiesutils.commands;
import com.github.stachelbeere1248.zombiesutils.game.SLA;
import com.github.stachelbeere1248.zombiesutils.game.enums.Map;
import com.github.stachelbeere1248.zombiesutils.game.sla.QuickSLA;
import com.github.stachelbeere1248.zombiesutils.game.SLA;
import net.minecraft.command.*;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;

View file

@ -0,0 +1,244 @@
package com.github.stachelbeere1248.zombiesutils.config;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.ConfigElement;
import net.minecraftforge.common.config.Property;
import net.minecraftforge.fml.client.config.ConfigGuiType;
import net.minecraftforge.fml.client.config.GuiConfigEntries;
import net.minecraftforge.fml.client.config.GuiEditArrayEntries;
import net.minecraftforge.fml.client.config.IConfigElement;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
public class CustomConfigElement implements IConfigElement {
private final String name;
private final boolean isProperty;
private Property prop;
private ConfigCategory category;
public CustomConfigElement(String name, Property prop) {
this.prop = prop;
this.isProperty = true;
this.name = name;
}
public CustomConfigElement(String name, ConfigCategory category) {
this.category = category;
this.isProperty = false;
this.name = name;
}
public static ConfigGuiType getType(Property prop) {
return prop.getType() == Property.Type.BOOLEAN ? ConfigGuiType.BOOLEAN : prop.getType() == Property.Type.DOUBLE ? ConfigGuiType.DOUBLE :
prop.getType() == Property.Type.INTEGER ? ConfigGuiType.INTEGER : prop.getType() == Property.Type.COLOR ? ConfigGuiType.COLOR :
prop.getType() == Property.Type.MOD_ID ? ConfigGuiType.MOD_ID : ConfigGuiType.STRING;
}
@Override
public List<IConfigElement> getChildElements() {
if (!isProperty) {
List<IConfigElement> elements = new ArrayList<>();
for (Property property : category.getOrderedValues()) {
ConfigElement temp = new ConfigElement(property);
if (temp.showInGui())
elements.add(temp);
}
return elements;
}
return null;
}
@Override
public String getName() {
return this.name;
}
@Override
public boolean isProperty() {
return isProperty;
}
@Override
public Class<? extends GuiConfigEntries.IConfigEntry> getConfigEntryClass() {
return isProperty ? prop.getConfigEntryClass() : category.getConfigEntryClass();
}
@Override
public Class<? extends GuiEditArrayEntries.IArrayEntry> getArrayEntryClass() {
return isProperty ? prop.getArrayEntryClass() : null;
}
@Override
public String getQualifiedName() {
return isProperty ? prop.getName() : category.getQualifiedName();
}
@Override
public ConfigGuiType getType() {
return isProperty ? getType(this.prop) : ConfigGuiType.CONFIG_CATEGORY;
}
@Override
public boolean isList() {
return isProperty && prop.isList();
}
@Override
public boolean isListLengthFixed() {
return isProperty && prop.isListLengthFixed();
}
@Override
public int getMaxListLength() {
return isProperty ? prop.getMaxListLength() : -1;
}
@Override
public String getComment() {
return isProperty ? prop.comment : category.getComment();
}
@Override
public boolean isDefault() {
return !isProperty || prop.isDefault();
}
@Override
public void setToDefault() {
if (isProperty)
prop.setToDefault();
}
@Override
public boolean requiresWorldRestart() {
return isProperty ? prop.requiresWorldRestart() : category.requiresWorldRestart();
}
@Override
public boolean showInGui() {
return isProperty ? prop.showInGui() : category.showInGui();
}
@Override
public boolean requiresMcRestart() {
return isProperty ? prop.requiresMcRestart() : category.requiresMcRestart();
}
@Override
public String[] getValidValues() {
return isProperty ? prop.getValidValues() : null;
}
@Override
public String getLanguageKey() {
return isProperty ? prop.getLanguageKey() : category.getLanguagekey();
}
@Override
public Object getDefault() {
return isProperty ? prop.getDefault() : null;
}
@Override
public Object[] getDefaults() {
if (isProperty) {
String[] aVal = prop.getDefaults();
return getObjects(aVal);
}
return null;
}
private Object[] getObjects(String[] aVal) {
if (prop.getType() == Property.Type.BOOLEAN) {
Boolean[] ba = new Boolean[aVal.length];
for (int i = 0; i < aVal.length; i++)
ba[i] = Boolean.valueOf(aVal[i]);
return ba;
} else if (prop.getType() == Property.Type.DOUBLE) {
Double[] da = new Double[aVal.length];
for (int i = 0; i < aVal.length; i++)
da[i] = Double.valueOf(aVal[i]);
return da;
} else if (prop.getType() == Property.Type.INTEGER) {
Integer[] ia = new Integer[aVal.length];
for (int i = 0; i < aVal.length; i++)
ia[i] = Integer.valueOf(aVal[i]);
return ia;
} else
return aVal;
}
@Override
public Pattern getValidationPattern() {
return isProperty ? prop.getValidationPattern() : null;
}
@Override
public Object get() {
return isProperty ? prop.getString() : null;
}
@Override
public Object[] getList() {
if (isProperty) {
String[] aVal = prop.getStringList();
return getObjects(aVal);
}
return null;
}
@Override
public void set(Object value) {
if (isProperty) {
if (prop.getType() == Property.Type.BOOLEAN)
prop.set(Boolean.parseBoolean(value.toString()));
else if (prop.getType() == Property.Type.DOUBLE)
prop.set(Double.parseDouble(value.toString()));
else if (prop.getType() == Property.Type.INTEGER)
prop.set(Integer.parseInt(value.toString()));
else
prop.set(value.toString());
}
}
@Override
public void set(Object[] aVal) {
if (isProperty) {
if (prop.getType() == Property.Type.BOOLEAN) {
boolean[] ba = new boolean[aVal.length];
for (int i = 0; i < aVal.length; i++)
ba[i] = Boolean.parseBoolean(aVal[i].toString());
prop.set(ba);
} else if (prop.getType() == Property.Type.DOUBLE) {
double[] da = new double[aVal.length];
for (int i = 0; i < aVal.length; i++)
da[i] = Double.parseDouble(aVal[i].toString());
prop.set(da);
} else if (prop.getType() == Property.Type.INTEGER) {
int[] ia = new int[aVal.length];
for (int i = 0; i < aVal.length; i++)
ia[i] = Integer.parseInt(aVal[i].toString());
prop.set(ia);
} else {
String[] is = new String[aVal.length];
for (int i = 0; i < aVal.length; i++)
is[i] = aVal[i].toString();
prop.set(is);
}
}
}
@Override
public Object getMinValue() {
return isProperty ? prop.getMinValue() : null;
}
@Override
public Object getMaxValue() {
return isProperty ? prop.getMaxValue() : null;
}
}

View file

@ -1,14 +1,13 @@
package com.github.stachelbeere1248.zombiesutils.config;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import net.minecraft.client.gui.GuiScreen;
import net.minecraftforge.common.config.ConfigElement;
import net.minecraftforge.common.config.Configuration;
public class GuiConfig extends net.minecraftforge.fml.client.config.GuiConfig {
public GuiConfig(GuiScreen parentScreen) {
super(
parentScreen,
new ConfigElement(ZombiesUtilsConfig.config.getCategory(Configuration.CATEGORY_GENERAL)).getChildElements(),
ZombiesUtils.getInstance().getConfig().getRootElements(),
"zombiesutils",
false,
false,

View file

@ -4,29 +4,109 @@ import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.utils.LanguageSupport;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
import net.minecraftforge.fml.client.config.DummyConfigElement;
import net.minecraftforge.fml.client.config.IConfigElement;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.jetbrains.annotations.NotNull;
public class ZombiesUtilsConfig {
public static Configuration config;
private static Property slaToggle;
private static Property slaShortener;
private static Property shortSpawntime;
private static Property sst;
private static Property chatMacro;
private static Property defaultCategory;
private static Property waveOffset;
private static Property language;
private static Property auditory;
private static Property copyDelta;
private static Property cpsCounter;
import java.util.Arrays;
import java.util.List;
public static void load() {
public class ZombiesUtilsConfig {
public final Configuration config;
private Property sstHud;
private Property offset;
private Property slaToggle;
private Property slaShortener;
private Property shortSpawntime;
private Property chatMacro;
private Property defaultCategory;
private Property language;
private Property auditory;
private Property copyDelta;
private Property cpsCounter;
private Property announcePB;
public ZombiesUtilsConfig(Configuration config) {
this.config = config;
this.read();
}
private void read() {
ZombiesUtils.getInstance().getLogger().debug("Loading config...");
config.load();
ZombiesUtils.getInstance().getLogger().debug("Config loaded.");
//SST
sstHud = config.get(
"SST",
"enabled",
true,
"Show the spawn-time HUD?"
);
auditory = config.get(
"SST",
"auditory",
new int[]{-40, -20, 0},
"For every entry a sound will be played x ticks before the wave spawn.",
-200,
200,
false,
5
);
//noinspection SpellCheckingInspection
shortSpawntime = config.get(
"SST",
"autohide",
false,
"Hide passed rounds?"
);
offset = config.get(
"SST",
"offset",
-28,
"Offset is added while in RL-mode",
-200,
200
);
//SLA
slaToggle = config.get(
"SLA",
"autostart",
false,
"Should SLA be started when a game starts?"
);
slaShortener = config.get(
"SLA",
"shortened SLA",
true,
"If on, inactive windows / rooms will not show"
);
//Timer
defaultCategory = config.get(
"timer",
"Default Category",
"general",
"name of the category to be selected unless specified using /runCategory"
);
copyDelta = config.get(
"timer",
"copy delta",
false,
"Also copy the delta-time when clicking the round-end message?"
);
announcePB = config.get(
"timer",
"announce",
true,
"Whether to announce PBs."
);
//ROOT
language = config.get(
Configuration.CATEGORY_GENERAL,
"Language",
@ -34,66 +114,12 @@ public class ZombiesUtilsConfig {
"Your Hypixel language",
LanguageSupport.getLanguages()
);
slaToggle = config.get(
Configuration.CATEGORY_GENERAL,
"SLA Launcher",
false,
"Should SLA be started when a game starts?"
);
slaShortener = config.get(
Configuration.CATEGORY_GENERAL,
"shortened SLA",
true,
"If on, inactive windows / rooms will not show"
);
chatMacro = config.get(
Configuration.CATEGORY_GENERAL,
"Chat Macro",
"T",
"The Text to be sent when pressing the chat-macro hotkey"
);
defaultCategory = config.get(
Configuration.CATEGORY_GENERAL,
"Default Category",
"general",
"name of the category to be selected unless specified using /runCategory"
);
waveOffset = config.get(
Configuration.CATEGORY_GENERAL,
"RL-mode offset",
-28,
"ticks to be added to the wave spawn time",
-200,
200
);
shortSpawntime = config.get(
Configuration.CATEGORY_GENERAL,
"passed wave spawns",
true,
"Display spawn-time for passed waves"
);
auditory = config.get(Configuration.CATEGORY_GENERAL,
"auditory sst",
new int[]{-40, -20, 0},
"Tick-offset to play sound",
-200,
200,
false,
5
);
sst = config.get(
Configuration.CATEGORY_GENERAL,
"SST HUD",
false,
"Enable if not using SST by Sosean"
);
copyDelta = config.get(
Configuration.CATEGORY_GENERAL,
"copy delta",
false,
"Also copy the delta-time when clicking the round-end message?"
);
cpsCounter = config.get(
Configuration.CATEGORY_GENERAL,
"cps",
@ -102,52 +128,95 @@ public class ZombiesUtilsConfig {
);
}
public static short getWaveOffset() {
return (short) waveOffset.getInt();
private List<IConfigElement> getSpawntimeElements() {
return Arrays.asList(
new CustomConfigElement("Enabled", sstHud),
new CustomConfigElement("Auditory", auditory),
new CustomConfigElement("RL pre-timing", offset),
new CustomConfigElement("Truncate", shortSpawntime)
);
}
public static boolean isSlaToggled() {
private List<IConfigElement> getSlaElements() {
return Arrays.asList(
new CustomConfigElement("Enabled", slaToggle),
new CustomConfigElement("Truncate", slaShortener),
new CustomConfigElement("PB announcements", announcePB)
);
}
private List<IConfigElement> getTimerElements() {
return Arrays.asList(
new CustomConfigElement("Default category", defaultCategory),
new CustomConfigElement("Paste delta", copyDelta)
);
}
List<IConfigElement> getRootElements() {
return Arrays.asList(
new DummyConfigElement.DummyCategoryElement("Timer", "", getSpawntimeElements()),
new DummyConfigElement.DummyCategoryElement("SST", "", getSpawntimeElements()),
new DummyConfigElement.DummyCategoryElement("SLA", "", getSpawntimeElements()),
new CustomConfigElement("Language", language),
new CustomConfigElement("Macro message", chatMacro),
new CustomConfigElement("CPS counter", cpsCounter)
);
}
public short getOffset() {
return (short) offset.getInt();
}
public boolean isSlaToggled() {
return slaToggle.getBoolean();
}
public static boolean isSlaShortened() {
public boolean isSlaShortened() {
return slaShortener.getBoolean();
}
public static boolean isSpawntimeNotShortened() {
public boolean isSpawntimeShortened() {
return shortSpawntime.getBoolean();
}
public static String getChatMacro() {
public String getChatMacro() {
return chatMacro.getString();
}
public static String getDefaultCategory() {
public String getDefaultCategory() {
return defaultCategory.getString();
}
public static String getLanguage() {
public String getLanguage() {
return language.getString();
}
public static int[] getAuditory() {
public int[] getAuditory() {
return auditory.getIntList();
}
public static boolean getSST() {
return sst.getBoolean();
public boolean getSST() {
return sstHud.getBoolean();
}
public static boolean getCopyDelta() {
public boolean getCopyDelta() {
return copyDelta.getBoolean();
}
public static boolean getCpsToggle() {
public boolean getCpsToggle() {
return cpsCounter.getBoolean();
}
public boolean getAnnouncePB() {
return announcePB.getBoolean();
}
@SubscribeEvent
public void onConfigChange(ConfigChangedEvent.@NotNull OnConfigChangedEvent event) {
if (event.modID.equals("zombiesutils") && event.configID == null) {
config.save();
ZombiesUtilsConfig.load();
}
}
}

View file

@ -1,4 +1,5 @@
package com.github.stachelbeere1248.zombiesutils.game.enums;
public enum Map {
DEAD_END, BAD_BLOOD, ALIEN_ARCADIUM, PRISON;
DEAD_END, BAD_BLOOD, ALIEN_ARCADIUM, PRISON
}

View file

@ -1,7 +1,8 @@
package com.github.stachelbeere1248.zombiesutils.game.waves;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.timer.Timer;
import com.github.stachelbeere1248.zombiesutils.utils.Scoreboard;
import net.minecraft.client.Minecraft;
import org.jetbrains.annotations.NotNull;
@ -16,6 +17,7 @@ public class WaveTiming {
timer.getRound()
);
}
public static byte getLastWave(@NotNull Timer timer) {
return Waves.getLastWave(
timer.getGameMode().getMap(),
@ -24,19 +26,23 @@ public class WaveTiming {
}
public static void onTick() {
if (Scoreboard.isNotZombies()) return;
Timer.getInstance().ifPresent(timer -> {
int wave = (getLastWave(timer)*20)+rl;
byte[] waves = getWaves(timer);
final int roundTime = timer.roundTime();
final int[] auditory = ZombiesUtilsConfig.getAuditory();
final int[] auditory = ZombiesUtils.getInstance().getConfig().getAuditory();
for (int wave : waves) {
wave = wave * 20 + rl;
final Integer pre = roundTime - wave;
if (Arrays.stream(auditory).anyMatch(pre::equals)) {
Minecraft.getMinecraft().thePlayer.playSound("note.pling", 1, 2);
}
}
});
}
public static void toggleRL() {
if (rl == 0) rl = ZombiesUtilsConfig.getWaveOffset();
if (rl == 0) rl = ZombiesUtils.getInstance().getConfig().getOffset();
else rl = 0;
}
}

View file

@ -1,6 +1,6 @@
package com.github.stachelbeere1248.zombiesutils.game.windows;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import net.minecraft.util.Vec3;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
@ -179,7 +179,8 @@ public class Room {
StringBuilder slaString = new StringBuilder(String.format("§6%s§r§d %x§e:", this.getName(), activeWindowCount));
for (Window window : this.windows) {
if (window.isActive()) slaString.append("§2 ").append(alias).append(window.getID());
else if (!ZombiesUtilsConfig.isSlaShortened()) slaString.append("§c ").append(alias).append(window.getID());
else if (!ZombiesUtils.getInstance().getConfig().isSlaShortened())
slaString.append("§c ").append(alias).append(window.getID());
}
return slaString.toString();
}

View file

@ -1,7 +1,7 @@
package com.github.stachelbeere1248.zombiesutils.handlers;
import com.github.stachelbeere1248.zombiesutils.game.enums.Difficulty;
import com.github.stachelbeere1248.zombiesutils.game.GameMode;
import com.github.stachelbeere1248.zombiesutils.game.enums.Difficulty;
import com.github.stachelbeere1248.zombiesutils.timer.Timer;
import com.github.stachelbeere1248.zombiesutils.utils.LanguageSupport;
import net.minecraftforge.client.event.ClientChatReceivedEvent;

View file

@ -1,6 +1,6 @@
package com.github.stachelbeere1248.zombiesutils.handlers;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import net.minecraftforge.common.MinecraftForge;
public class Handlers {
@ -11,7 +11,7 @@ public class Handlers {
}
public void registerAll() {
MinecraftForge.EVENT_BUS.register(new ZombiesUtilsConfig());
MinecraftForge.EVENT_BUS.register(ZombiesUtils.getInstance().getConfig());
MinecraftForge.EVENT_BUS.register(renderer);
MinecraftForge.EVENT_BUS.register(new TickHandler());
MinecraftForge.EVENT_BUS.register(new ChatHandler());

View file

@ -2,7 +2,6 @@ package com.github.stachelbeere1248.zombiesutils.handlers;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.config.Hotkeys;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.game.waves.WaveTiming;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@ -20,7 +19,7 @@ public class KeyInputHandler {
Hotkeys hotkeys = ZombiesUtils.getInstance().getHotkeys();
if (Keyboard.getEventKey() == hotkeys.getChatMacro().getKeyCode()) {
Minecraft.getMinecraft().thePlayer.sendChatMessage(
ZombiesUtilsConfig.getChatMacro()
ZombiesUtils.getInstance().getConfig().getChatMacro()
);
} else if (Keyboard.getEventKey() == hotkeys.getRlSpawn().getKeyCode()) {
ZombiesUtils.getInstance().getHandlers().getRenderer().toggleRL();

View file

@ -1,6 +1,6 @@
package com.github.stachelbeere1248.zombiesutils.handlers;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.game.SLA;
import com.github.stachelbeere1248.zombiesutils.game.waves.Waves;
import com.github.stachelbeere1248.zombiesutils.game.windows.Room;
@ -16,10 +16,10 @@ import org.jetbrains.annotations.NotNull;
import java.util.Objects;
public class RenderGameOverlayHandler {
private int rl = 0;
private final boolean[] clicks = new boolean[20];
private int clickPointer = 0;
private final byte[] clicks = new byte[20];
private final FontRenderer fontRenderer;
private int rl = 0;
private int clickPointer = 0;
public RenderGameOverlayHandler() {
this.fontRenderer = Objects.requireNonNull(Minecraft.getMinecraft().fontRendererObj, "FontRenderer must not be null!");
@ -40,7 +40,7 @@ public class RenderGameOverlayHandler {
}
void toggleRL() {
if (rl == 0) rl = ZombiesUtilsConfig.getWaveOffset();
if (rl == 0) rl = ZombiesUtils.getInstance().getConfig().getOffset();
else rl = 0;
}
@ -64,7 +64,7 @@ public class RenderGameOverlayHandler {
renderSla(sla.getRooms());
});
if (ZombiesUtilsConfig.getCpsToggle()) renderCPS();
if (ZombiesUtils.getInstance().getConfig().getCpsToggle()) renderCPS();
}
private void renderTime(long timerTicks) {
@ -88,7 +88,7 @@ public class RenderGameOverlayHandler {
private void renderSla(Room @NotNull [] rooms) {
int y = 0;
for (Room room : rooms) {
if (ZombiesUtilsConfig.isSlaShortened() && room.getActiveWindowCount() == 0) continue;
if (ZombiesUtils.getInstance().getConfig().isSlaShortened() && room.getActiveWindowCount() == 0) continue;
fontRenderer.drawStringWithShadow(
room.getSlaString(),
1,
@ -100,7 +100,7 @@ public class RenderGameOverlayHandler {
}
private void renderSpawnTime(byte @NotNull [] waveTimes, short roundTicks) {
if (Scoreboard.isNotZombies() || !ZombiesUtilsConfig.getSST()) return;
if (Scoreboard.isNotZombies() || !ZombiesUtils.getInstance().getConfig().getSST()) return;
final int length = waveTimes.length + 1;
int heightIndex = 0;
@ -111,7 +111,7 @@ public class RenderGameOverlayHandler {
final short waveTicks = (short) ((waveTime * 20) + rl);
if (roundTicks > waveTicks) {
if (ZombiesUtilsConfig.isSpawntimeNotShortened()) clonedColor = 0x555555;
if (!ZombiesUtils.getInstance().getConfig().isSpawntimeShortened()) clonedColor = 0x555555;
else {
heightIndex++;
continue;
@ -134,6 +134,7 @@ public class RenderGameOverlayHandler {
heightIndex++;
}
}
public void renderCPS() {
final String cps = String.format("%2d", getClicks());
final ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
@ -150,18 +151,18 @@ public class RenderGameOverlayHandler {
public int getClicks() {
int i = 0;
for (boolean tick : clicks) {
if (tick) i++;
for (byte tick : clicks) {
i += tick;
}
return i;
}
public void addClick() {
clicks[clickPointer] = true;
clicks[clickPointer]++;
}
public void tick() {
clickPointer = (clickPointer + 1) % 20;
clicks[clickPointer] = false;
clicks[clickPointer] = 0;
}
}

View file

@ -1,6 +1,6 @@
package com.github.stachelbeere1248.zombiesutils.timer;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.timer.recorder.Category;
import com.github.stachelbeere1248.zombiesutils.timer.recorder.files.CategoryFile;
import net.minecraft.client.Minecraft;
@ -14,8 +14,7 @@ public class RecordManager {
private static final String bar = "§l§a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬";
public static void compareSegment(byte round, short roundTime, @NotNull Category category) throws IndexOutOfBoundsException {
@SuppressWarnings("OptionalGetWithoutIsPresent")
final CategoryFile categoryFile = category.getByGameMode(Timer.getInstance().get().getGameMode());
@SuppressWarnings("OptionalGetWithoutIsPresent") final CategoryFile categoryFile = category.getByGameMode(Timer.getInstance().get().getGameMode());
final short bestSegment = categoryFile.getBestSegment(round);
final String timeString = formattedTime(roundTime);
@ -26,16 +25,18 @@ public class RecordManager {
if (bestSegment == (short) 0) {
categoryFile.setBestSegment(round, roundTime);
if (ZombiesUtils.getInstance().getConfig().getAnnouncePB())
segmentMessage += "\n§e§l***§6§l NEW BEST SEGMENT! §e§l***";
segmentMessage += "\n§cRound " + round + "§e took §a" + timeString + "§e!";
} else {
if (roundTime < bestSegment) {
if (ZombiesUtils.getInstance().getConfig().getAnnouncePB())
segmentMessage += "\n§e§l***§6§l NEW BEST SEGMENT! §e§l***";
categoryFile.setBestSegment(round, roundTime);
}
deltaString = formattedDelta(roundTime, bestSegment);
segmentMessage += "\n§cRound " + round + "§e took §a" + timeString + " §9" + deltaString;
if (ZombiesUtilsConfig.getCopyDelta()) deltaString = " (" + deltaString + ")";
if (ZombiesUtils.getInstance().getConfig().getCopyDelta()) deltaString = " (" + deltaString + ")";
}
@ -49,8 +50,7 @@ public class RecordManager {
}
public static void compareBest(byte round, int gameTime, @NotNull Category category) throws IndexOutOfBoundsException {
@SuppressWarnings("OptionalGetWithoutIsPresent")
final CategoryFile categoryFile = category.getByGameMode(Timer.getInstance().get().getGameMode());
@SuppressWarnings("OptionalGetWithoutIsPresent") final CategoryFile categoryFile = category.getByGameMode(Timer.getInstance().get().getGameMode());
final int personalBest = categoryFile.getPersonalBest(round);
String deltaString = "";
@ -60,16 +60,18 @@ public class RecordManager {
if (personalBest == 0) {
categoryFile.setPersonalBest(round, gameTime);
if (ZombiesUtils.getInstance().getConfig().getAnnouncePB())
bestMessage += "\n§e§l***§6§l NEW PERSONAL BEST! §e§l***";
bestMessage += "\n§cRound " + round + "§e finished at §a" + timeString + "§e!";
} else {
if (gameTime < personalBest) {
if (ZombiesUtils.getInstance().getConfig().getAnnouncePB())
bestMessage += "\n§e§l***§6§l NEW PERSONAL BEST! §e§l***";
categoryFile.setPersonalBest(round, gameTime);
}
deltaString = formattedDelta(gameTime, personalBest);
bestMessage += "\n§cRound " + round + "§e finished at §a" + timeString + " §9" + deltaString;
if (ZombiesUtilsConfig.getCopyDelta()) deltaString = " (" + deltaString + ")";
if (ZombiesUtils.getInstance().getConfig().getCopyDelta()) deltaString = " (" + deltaString + ")";
}
bestMessage += "\n" + bar;
final ChatComponentText message = new ChatComponentText(bestMessage);

View file

@ -1,10 +1,9 @@
package com.github.stachelbeere1248.zombiesutils.timer;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.game.GameMode;
import com.github.stachelbeere1248.zombiesutils.game.enums.Map;
import com.github.stachelbeere1248.zombiesutils.game.SLA;
import com.github.stachelbeere1248.zombiesutils.game.enums.Map;
import com.github.stachelbeere1248.zombiesutils.handlers.Round1Correction;
import com.github.stachelbeere1248.zombiesutils.timer.recorder.Category;
import com.github.stachelbeere1248.zombiesutils.timer.recorder.files.GameFile;
@ -44,7 +43,7 @@ public class Timer {
this.gameMode = new GameMode(map);
this.round = round;
if (ZombiesUtilsConfig.isSlaToggled()) SLA.instance = new SLA(map);
if (ZombiesUtils.getInstance().getConfig().isSlaToggled()) SLA.instance = new SLA(map);
MinecraftForge.EVENT_BUS.register(new Round1Correction());
}

View file

@ -1,9 +1,8 @@
package com.github.stachelbeere1248.zombiesutils.timer.recorder;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.game.enums.Difficulty;
import com.github.stachelbeere1248.zombiesutils.game.GameMode;
import com.github.stachelbeere1248.zombiesutils.game.enums.Difficulty;
import com.github.stachelbeere1248.zombiesutils.game.enums.Map;
import com.github.stachelbeere1248.zombiesutils.timer.Timer;
import com.github.stachelbeere1248.zombiesutils.timer.recorder.files.CategoryFile;
@ -12,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
import java.io.File;
public class Category {
private static String selectedCategory = ZombiesUtilsConfig.getDefaultCategory();
private static String selectedCategory = ZombiesUtils.getInstance().getConfig().getDefaultCategory();
public final CategoryFile[] categoryFiles = new CategoryFile[7];
private final String name;

View file

@ -29,7 +29,8 @@ public class CategoryData implements ISplitsData {
Arrays.fill(personalBests, 0);
}
@Override @NotNull
@Override
@NotNull
public String toJSON() {
Gson gson = new Gson();
return gson.toJson(this, CategoryData.class);

View file

@ -25,7 +25,8 @@ public class GameData implements ISplitsData {
Arrays.fill(segments, (short) 0);
}
@Override @NotNull
@Override
@NotNull
public String toJSON() {
Gson gson = new Gson();
return gson.toJson(this.segments);

View file

@ -24,6 +24,7 @@ public class GameFile extends SplitsFile {
this.data = new GameData(map);
FileManager.createDataFile(this, this.data);
}
@NotNull
private static String formattedTime() {
final LocalDateTime dateTime = LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES);

View file

@ -1,7 +1,6 @@
package com.github.stachelbeere1248.zombiesutils.utils;
import com.github.stachelbeere1248.zombiesutils.ZombiesUtils;
import com.github.stachelbeere1248.zombiesutils.config.ZombiesUtilsConfig;
import com.github.stachelbeere1248.zombiesutils.game.enums.Map;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@ -67,7 +66,7 @@ public class Scoreboard {
} catch (IndexOutOfBoundsException | NullPointerException ignored) {
return 0;
}
final Pattern ROUND_LINE_PATTERN = LanguageSupport.roundPattern(ZombiesUtilsConfig.getLanguage());
final Pattern ROUND_LINE_PATTERN = LanguageSupport.roundPattern(ZombiesUtils.getInstance().getConfig().getLanguage());
String string = ROUND_LINE_PATTERN.matcher(line).replaceAll("$1");
@ -105,7 +104,7 @@ public class Scoreboard {
return Optional.empty();
}
}
final Pattern MAP_PATTERN = LanguageSupport.mapPattern(ZombiesUtilsConfig.getLanguage());
final Pattern MAP_PATTERN = LanguageSupport.mapPattern(ZombiesUtils.getInstance().getConfig().getLanguage());
String mapString = MAP_PATTERN.matcher(line).replaceAll("$1");
switch (mapString) {
case "Dead End":