Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ dependencies {
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

modImplementation "com.github.UselessSolutions:serverlibe:${project.serverlibe_version}"
modImplementation("turniplabs:halplibe:${project.halplibe_version}")

implementation "org.slf4j:slf4j-api:1.8.0-beta4"
implementation "org.apache.logging.log4j:log4j-slf4j18-impl:2.16.0"
Expand Down
5 changes: 4 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ loader_version=0.15.6-bta.7
# ServerLibe
serverlibe_version=beta.2.7-7.3_03

# Halplibe
halplibe_version=5.2.4

# Mod
mod_version=1.0.1-7.3_03
mod_version=1.0.3-7.3_03
mod_group=MelonModding
mod_name=MelonUtilities
78 changes: 63 additions & 15 deletions src/main/java/MelonUtilities/MelonUtilities.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
package MelonUtilities;

import MelonUtilities.utility.discord.DiscordChatRelay;
import MelonUtilities.utility.discord.DiscordClient;
import MelonUtilities.command.commands.*;
import MelonUtilities.config.Data;
import MelonUtilities.config.datatypes.data.Config;
import MelonUtilities.listeners.ChatInputListener;
import MelonUtilities.utility.MUtil;
import MelonUtilities.utility.discord.DiscordChatRelay;
import MelonUtilities.utility.discord.DiscordClient;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.core.item.ItemStack;
import net.minecraft.core.item.Items;
import net.minecraft.core.net.command.CommandManager;
import net.minecraft.core.net.command.TextFormatting;
import net.minecraft.core.util.helper.DyeColor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.useless.serverlibe.ServerLibe;
import turniplabs.halplibe.helper.RecipeBuilder;
import turniplabs.halplibe.util.GameStartEntrypoint;
import turniplabs.halplibe.util.RecipeEntrypoint;


public class MelonUtilities implements ModInitializer {
public class MelonUtilities implements ModInitializer, RecipeEntrypoint, GameStartEntrypoint {

public static final boolean isServer = FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER;
public static final String MOD_ID = "melonutilities";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
public static final int mainConfigVersion = 0;
//public static final int crewConfigVersion = 0;

public static final int mainConfigVersion = 1;
public static final int kitConfigVersion = 0;
public static final int roleConfigVersion = 0;
public static final int userConfigVersion = 0;
Expand All @@ -30,7 +40,7 @@ public static void reloadAll() {
if(Data.MainConfig.config.enableRoles) Data.Roles.reload();
}

public static void registerCommands(){
public static void registerServerCommands(){
if(Data.MainConfig.config.enableContainerLocking) CommandManager.registerCommand(new CommandLock());
if(Data.MainConfig.config.enableRoles) CommandManager.registerCommand(new CommandRole());
if(Data.MainConfig.config.enableRollback) CommandManager.registerCommand(new CommandRollback());
Expand All @@ -44,6 +54,9 @@ public static void registerCommands(){
CommandManager.registerCommand(new CommandMelonUtilities());
}

public static void registerClientCommands(){
}

public void loadData(){
LOGGER.info("Loading Utility Data...");
reloadAll();
Expand Down Expand Up @@ -71,15 +84,17 @@ public void onInitialize() {
}

public static void afterServerStart(){
Data.Users.reload();
MUtil.timeOnInit = System.currentTimeMillis();

Config config = Data.MainConfig.config;
config.lastSnapshot = correctTimeIfZERO(config.lastSnapshot);
config.lastBackup = correctTimeIfZERO(config.lastBackup);
config.lastSnapshotPrune = correctTimeIfZERO(config.lastSnapshotPrune);
config.lastBackupPrune = correctTimeIfZERO(config.lastBackupPrune);
Data.MainConfig.save();
if(isServer){
Data.Users.reload();
MUtil.timeOnInit = System.currentTimeMillis();

Config config = Data.MainConfig.config;
config.lastSnapshot = correctTimeIfZERO(config.lastSnapshot);
config.lastBackup = correctTimeIfZERO(config.lastBackup);
config.lastSnapshotPrune = correctTimeIfZERO(config.lastSnapshotPrune);
config.lastBackupPrune = correctTimeIfZERO(config.lastBackupPrune);
Data.MainConfig.save();
}
}

public static double correctTimeIfZERO(double d){
Expand All @@ -92,4 +107,37 @@ public static double correctTimeIfZERO(double d){
public static void info(String s) {
LOGGER.info(s);
}

@Override
public void beforeGameStart() {

}

@Override
public void afterGameStart() {

}

@Override
public void onRecipesReady() {
if(Data.MainConfig.config.enableMagnets){
ItemStack magnet = new ItemStack(Items.AMMO_FIREBALL, 1, 1);
magnet.setCustomName(TextFormatting.RESET + "Magnet");

RecipeBuilder.Shaped("minecraft")
.setShape(
"R L",
"S S",
"SSS")
.addInput('R', Items.DUST_REDSTONE)
.addInput('L', Items.DYE, DyeColor.BLUE.itemMeta)
.addInput('S', Items.INGOT_STEEL)
.create("magnet", magnet);
}
}

@Override
public void initNamespaces() {

}
}
Original file line number Diff line number Diff line change
@@ -1,29 +1,50 @@
package MelonUtilities.command.commandlogic;

import MelonUtilities.MelonUtilities;
import MelonUtilities.config.Data;
import MelonUtilities.utility.feedback.FeedbackHandlerClient;
import MelonUtilities.utility.feedback.FeedbackHandlerServer;
import MelonUtilities.utility.feedback.FeedbackType;
import com.mojang.brigadier.Command;
import net.minecraft.core.entity.player.Player;
import net.minecraft.server.entity.player.PlayerServer;

public class CommandLogicElevator {
public static int elevatorAllowobstructions(PlayerServer sender){
if(Data.MainConfig.config.allowObstructions){
Data.MainConfig.config.allowObstructions = false;
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.destructive, sender, "Allow Obstructions Disabled");
public static int elevatorAllowobstructions(Player sender){
if(MelonUtilities.isServer){
if(Data.MainConfig.config.allowObstructions){
Data.MainConfig.config.allowObstructions = false;
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.destructive, (PlayerServer) sender, "Allow Obstructions Disabled");
} else {
Data.MainConfig.config.allowObstructions = true;
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.success, (PlayerServer) sender, "Allow Obstructions Enabled!");
}
} else {
Data.MainConfig.config.allowObstructions = true;
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.success, sender, "Allow Obstructions Enabled!");
if(Data.MainConfig.config.allowObstructions){
Data.MainConfig.config.allowObstructions = false;
Data.MainConfig.save();
FeedbackHandlerClient.sendFeedback(FeedbackType.destructive, sender, "Allow Obstructions Disabled");
} else {
Data.MainConfig.config.allowObstructions = true;
Data.MainConfig.save();
FeedbackHandlerClient.sendFeedback(FeedbackType.success, sender, "Allow Obstructions Enabled!");
}
}
return Command.SINGLE_SUCCESS;
}

public static int elevatorCooldown(PlayerServer sender, int cooldownValue) {
Data.MainConfig.config.elevatorCooldown = cooldownValue;
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.success, sender, "Elevator Cooldown Set to %" + cooldownValue);
public static int elevatorCooldown(Player sender, int cooldownValue) {
if(MelonUtilities.isServer){
Data.MainConfig.config.elevatorCooldown = cooldownValue;
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.success, (PlayerServer) sender, "Elevator Cooldown Set to %" + cooldownValue);
} else {
Data.MainConfig.config.elevatorCooldown = cooldownValue;
Data.MainConfig.save();
FeedbackHandlerClient.sendFeedback(FeedbackType.success, sender, "Elevator Cooldown Set to %" + cooldownValue);
}
return Command.SINGLE_SUCCESS;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@ public static int warpList(PlayerServer sender){

public static int warpDelete(PlayerServer sender, Warp targetWarp){
Data.MainConfig.config.warpData.remove(targetWarp);
Data.Users.save(sender.uuid);
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.destructive, sender, "Deleted Warp %s", new FeedbackArg(targetWarp));
return Command.SINGLE_SUCCESS;
}

public static int warpCreate(PlayerServer sender, String name){
Data.MainConfig.config.warpData.add(new Warp(name, sender.x, sender.y, sender.z, sender.dimension));
Data.Users.save(sender.uuid);
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.success, sender, "Created Warp %s", new FeedbackArg(name));
return Command.SINGLE_SUCCESS;
}
Expand All @@ -49,7 +49,7 @@ public static int warpRename(PlayerServer sender, Warp targetWarp, String name){
Data.MainConfig.config.warpData.remove(targetWarp);
targetWarp.name = name;
Data.MainConfig.config.warpData.add(targetWarp);
Data.Users.save(sender.uuid);
Data.MainConfig.save();
FeedbackHandlerServer.sendFeedback(FeedbackType.success, sender, "Renamed Warp %s to %s", new FeedbackArg(targetWarp), new FeedbackArg(name));
return Command.SINGLE_SUCCESS;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class Config {
public boolean enableSQLPlayerLogging = true;
public boolean enableTXTPlayerLogging = true;
public boolean enableDiscordIntegration = false;
public boolean enableMagnets = true;

public String defaultRole = null;
public String displayMode = "multi";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public Config deserialize(JsonElement json, Type typeOfT, JsonDeserializationCon
config.enableSQLPlayerLogging = mainConfig.get("enableSQLPlayerLogging").getAsBoolean();
config.enableTXTPlayerLogging = mainConfig.get("enableTXTPlayerLogging").getAsBoolean();
config.enableDiscordIntegration = mainConfig.get("enableDiscordIntegration").getAsBoolean();
config.enableMagnets = mainConfig.get("enableMagnets").getAsBoolean();

//Role Options
if(roleConfig.has("defaultRole")){
Expand Down Expand Up @@ -85,9 +86,11 @@ public Config deserialize(JsonElement json, Type typeOfT, JsonDeserializationCon
config.serverName = discordIntegrationConfig.get("serverName").getAsString();

//Warp Options
JsonArray warps = warpConfig.getAsJsonArray("warps");
for(JsonElement element : warps){
config.warpData.add(context.deserialize(element, Warp.class));
if(warpConfig != null){
JsonArray warps = warpConfig.getAsJsonArray("warps");
for(JsonElement element : warps){
config.warpData.add(context.deserialize(element, Warp.class));
}
}

return config;
Expand Down Expand Up @@ -121,6 +124,7 @@ public JsonElement serialize(Config src, Type typeOfSrc, JsonSerializationContex
mainConfig.addProperty("enableSQLPlayerLogging", src.enableSQLPlayerLogging);
mainConfig.addProperty("enableTXTPlayerLogging", src.enableTXTPlayerLogging);
mainConfig.addProperty("enableDiscordIntegration", src.enableDiscordIntegration);
mainConfig.addProperty("enableMagnets", src.enableMagnets);
obj.add("Main Config", mainConfig);

roleConfig.addProperty("defaultRole", src.defaultRole);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,89 @@ public static Config legacyDeserialize0(JsonDeserializationContext context, Json
config.serverName = discordIntegrationConfig.get("serverName").getAsString();

//Warp Options
JsonArray warps = warpConfig.getAsJsonArray("warps");
for(JsonElement element : warps){
config.warpData.add(context.deserialize(element, Warp.class));
if(warpConfig != null){
JsonArray warps = warpConfig.getAsJsonArray("warps");
for(JsonElement element : warps){
config.warpData.add(context.deserialize(element, Warp.class));
}
}

return config;
}
public static Config legacyDeserialize1(JsonDeserializationContext context, JsonObject obj){
//New Config
Config config = new Config();
config.configVersion = MelonUtilities.mainConfigVersion;

//Extra Categories
JsonObject mainConfig = obj.getAsJsonObject("Main Config");
JsonObject roleConfig = obj.getAsJsonObject("Role Config");
JsonObject rollbackConfig = obj.getAsJsonObject("Rollback Config");
JsonObject elevatorConfig = obj.getAsJsonObject("Elevator Config");
JsonObject sqlLogConfig = obj.getAsJsonObject("SQL Log Config");
JsonObject warpConfig = obj.getAsJsonObject("Warp Config");
JsonObject discordIntegrationConfig = obj.getAsJsonObject("Discord Integration Config");


//Main Options
config.enableContainerLocking = mainConfig.get("enableContainerLocking").getAsBoolean();
config.enableRoles = mainConfig.get("enableRoles").getAsBoolean();
config.enableRollback = mainConfig.get("enableRollback").getAsBoolean();
config.enableTPA = mainConfig.get("enableTPA").getAsBoolean();
config.enableHomes = mainConfig.get("enableHomes").getAsBoolean();
config.enableWarps = mainConfig.get("enableWarps").getAsBoolean();
config.enableElevators = mainConfig.get("enableElevators").getAsBoolean();
config.enableKits = mainConfig.get("enableKits").getAsBoolean();
config.enableRules = mainConfig.get("enableRules").getAsBoolean();
config.enableSmite = mainConfig.get("enableSmite").getAsBoolean();
config.enableCrews = mainConfig.get("enableCrews").getAsBoolean();
config.enableSQLPlayerLogging = mainConfig.get("enableSQLPlayerLogging").getAsBoolean();
config.enableTXTPlayerLogging = mainConfig.get("enableTXTPlayerLogging").getAsBoolean();
config.enableDiscordIntegration = mainConfig.get("enableDiscordIntegration").getAsBoolean();
config.enableMagnets = mainConfig.get("enableMagnets").getAsBoolean();

//Role Options
if(roleConfig.has("defaultRole")){
config.defaultRole = roleConfig.get("defaultRole").getAsString();
}
config.displayMode = roleConfig.get("displayMode").getAsString();

//Rollback Options
config.snapshotsEnabled = rollbackConfig.get("snapshotsEnabled").getAsBoolean();
config.backupsEnabled = rollbackConfig.get("backupsEnabled").getAsBoolean();
config.snapshotsImmune = rollbackConfig.get("snapshotsImmune").getAsInt();
config.backupsImmune = rollbackConfig.get("backupsImmune").getAsInt();
config.snapshotsLimit = rollbackConfig.get("snapshotsLimit").getAsInt();
config.backupsLimit = rollbackConfig.get("backupsLimit").getAsInt();
config.sizeLimit = rollbackConfig.get("sizeLimit").getAsString();
config.timeBetweenSnapshots = rollbackConfig.get("timeBetweenSnapshots").getAsInt();
config.timeBetweenBackups = rollbackConfig.get("timeBetweenBackups").getAsInt();
config.timeBetweenBackupPruning = rollbackConfig.get("timeBetweenBackupPruning").getAsInt();
config.timeBetweenSnapshotPruning = rollbackConfig.get("timeBetweenSnapshotPruning").getAsInt();
config.lastSnapshot = rollbackConfig.get("lastSnapshot").getAsDouble();
config.lastBackup = rollbackConfig.get("lastBackup").getAsDouble();
config.lastBackupPrune = rollbackConfig.get("lastBackupPrune").getAsDouble();
config.lastSnapshotPrune = rollbackConfig.get("lastSnapshotPrune").getAsDouble();

//Elevator Options
config.allowObstructions = elevatorConfig.get("allowObstructions").getAsBoolean();
config.elevatorCooldown = elevatorConfig.get("elevatorCooldown").getAsInt();

//SQL Options
config.JDBCConnectionUrl = sqlLogConfig.get("JDBCConnectionUrl").getAsString();

//Discord Options
config.token = discordIntegrationConfig.get("token").getAsString();
config.channelID = discordIntegrationConfig.get("channelID").getAsString();
config.serverPFPURL = discordIntegrationConfig.get("serverPFPURL").getAsString();
config.serverName = discordIntegrationConfig.get("serverName").getAsString();

//Warp Options
if(warpConfig != null){
JsonArray warps = warpConfig.getAsJsonArray("warps");
for(JsonElement element : warps){
config.warpData.add(context.deserialize(element, Warp.class));
}
}

return config;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package MelonUtilities.interfaces;

public interface PlayerMagnetInterface {
boolean hasMagnet();
}
4 changes: 3 additions & 1 deletion src/main/java/MelonUtilities/mixins/CommandManagerMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ public class CommandManagerMixin {
@Inject(at = @At("HEAD"), method = "init")
public void initInject(CallbackInfo ci) {
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER){
MelonUtilities.registerCommands();
MelonUtilities.registerServerCommands();
} else {
MelonUtilities.registerClientCommands();
}
}
}
Loading
Loading