Compare commits

..

No commits in common. "89193d52f6d09745a0ba6f2f188f86a093816af9" and "2e527d0ef4a43e9289017d62d275a261c53556f0" have entirely different histories.

28 changed files with 472 additions and 1119 deletions

View file

@ -4,15 +4,15 @@ org.gradle.parallel=true
org.gradle.caching=false org.gradle.caching=false
# Project Info # Project Info
version=1.0.9 version=1.0.8
group=net.pietru group=net.pietru
id=cookie_utils id=cookie_utils
# Dependency Versions # Dependency Versions
cosmic_reach_rev=alpha cosmic_reach_rev=alpha
cosmic_reach_version=0.4.4 cosmic_reach_version=0.4.2
# If unspecified, will use the version above # If unspecified, will use the version above
cosmic_reach_server_version=0.4.4 cosmic_reach_server_version=0.4.2
cosmic_quilt_version=2.3.1 cosmic_quilt_version=2.3.1
#2.2.0 #2.2.0

View file

@ -3,7 +3,6 @@ package net.pietru.cookie_utils;
import dev.crmodders.cosmicquilt.api.entrypoint.ModInitializer; import dev.crmodders.cosmicquilt.api.entrypoint.ModInitializer;
import finalforeach.cosmicreach.GameSingletons; import finalforeach.cosmicreach.GameSingletons;
import net.pietru.cookie_utils.api.Region; import net.pietru.cookie_utils.api.Region;
import net.pietru.cookie_utils.kits.Kits;
import net.pietru.cookie_utils.permissions.Permissions; import net.pietru.cookie_utils.permissions.Permissions;
import net.pietru.cookie_utils.scripting.ScriptsDB; import net.pietru.cookie_utils.scripting.ScriptsDB;
import net.pietru.cookie_utils.setups.setupCreator; import net.pietru.cookie_utils.setups.setupCreator;
@ -44,9 +43,6 @@ public class CookieUtils implements ModInitializer {
setupCreator.registerSetupCreators(); setupCreator.registerSetupCreators();
System.out.println("CookieUtils loaded setup creators..."); System.out.println("CookieUtils loaded setup creators...");
Kits.reload_player_kits();
System.out.println("CookieUtils loaded kits...");
GameSingletons.updateObservers.add(new CookieUtilsLogicRunner()); GameSingletons.updateObservers.add(new CookieUtilsLogicRunner());
} }
} }

View file

@ -1,21 +1,51 @@
package net.pietru.cookie_utils.api; package net.pietru.cookie_utils.api;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.math.collision.BoundingBox;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonWriter;
import finalforeach.cosmicreach.GameSingletons;
import finalforeach.cosmicreach.ZoneLoader;
import finalforeach.cosmicreach.ZoneLoaders;
import finalforeach.cosmicreach.accounts.Account; import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.entities.EntityLaserProjectile;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.io.SaveLocation;
import finalforeach.cosmicreach.networking.NetworkIdentity; import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons; import finalforeach.cosmicreach.networking.server.ServerSingletons;
import finalforeach.cosmicreach.particles.GameParticleSystem;
import finalforeach.cosmicreach.savelib.utils.TriConsumer;
import finalforeach.cosmicreach.world.IZoneLoader;
import finalforeach.cosmicreach.world.Zone;
import finalforeach.cosmicreach.worldgen.ZoneGenerator;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.*; import net.pietru.cookie_utils.npcs.NpcDef;
import net.pietru.cookie_utils.commands.my_cmds.*; import net.pietru.cookie_utils.permissions.GroupPerms;
import net.pietru.cookie_utils.commands.perm_cmds.*; import net.pietru.cookie_utils.permissions.Permissions;
import net.pietru.cookie_utils.commands.reload_cmds.*; import net.pietru.cookie_utils.setups.Setup;
import net.pietru.cookie_utils.utils.ParticleUtil;
import net.pietru.cookie_utils.utils.prop; import net.pietru.cookie_utils.utils.prop;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*; import java.util.*;
import static net.pietru.cookie_utils.api.Region.*;
import static net.pietru.cookie_utils.permissions.Permissions.has_perm; import static net.pietru.cookie_utils.permissions.Permissions.has_perm;
import static net.pietru.cookie_utils.permissions.Permissions.reload_perm_groups;
import static net.pietru.cookie_utils.scripting.ScriptsDB.reload_scripts;
import static net.pietru.cookie_utils.utils.directory_utils.get_path_string;
import static net.pietru.cookie_utils.utils.player_utils.get_player_id;
import static net.pietru.cookie_utils.utils.player_utils.parseAsPlayer;
import static net.pietru.cookie_utils.utils.prop.get_server_property_array;
import static net.pietru.cookie_utils.utils.prop.set_server_property;
public class TextCommands { public class TextCommands {
public static final Map<String, BaseCommand> commands = new HashMap<>(); public static final Map<String, TriConsumer<String[], NetworkIdentity, ChannelHandlerContext>> commands = new HashMap<>();
public static void run(String[] args, NetworkIdentity id, ChannelHandlerContext ctx){ public static void run(String[] args, NetworkIdentity id, ChannelHandlerContext ctx){
if (args.length==0) if (args.length==0)
@ -25,43 +55,454 @@ public class TextCommands {
Account account = ServerSingletons.getAccount(id); Account account = ServerSingletons.getAccount(id);
if (!has_perm(account.getUniqueId(),args[0])) if (!has_perm(account.getUniqueId(),args[0]))
return; return;
BaseCommand cmd = commands.get(args[0]); TriConsumer<String[], NetworkIdentity, ChannelHandlerContext> cmd = commands.get(args[0]);
cmd.accept(args, id, ctx); cmd.accept(args, id, ctx);
if (prop.log_level>-1) System.out.println("[CookieCMDS] Player "+account.getDisplayName()+" ("+account.getUniqueId()+") has used/tried to use "+ Arrays.toString(args));
System.out.println("[CookieCMDS] Player "+account.getDisplayName()+" ("+account.getUniqueId()+") has used/tried to use "+ Arrays.toString(args));
} }
static { static {
commands.put("help", new help_command()); commands.put("help",(args, networkIdentity, channelHandlerContext) -> {
commands.put("my_rank",new my_rank_command()); Account account = ServerSingletons.getAccount(networkIdentity);
commands.put("gpos",new gpos_command()); MessagePacket packet;
commands.put("my_zone",new my_zone_command()); packet = new MessagePacket("[Server] You have access to following commands:");
commands.put("my_id",new my_id_command()); packet.setupAndSend(channelHandlerContext);
commands.put("my_name",new my_name_command()); for (String cmd : commands.keySet()){
commands.put("my_area",new my_area_command()); if (!has_perm(account.getUniqueId(),cmd))
commands.put("my_claims",new my_claims_command()); continue;
commands.put("setup",new setup_command()); packet = new MessagePacket(" - "+cmd);
commands.put("region",new region_command()); packet.setupAndSend(channelHandlerContext);
commands.put("kit",new kit_command()); }
});
commands.put("my_rank",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet;
GroupPerms groupPerms = Permissions.get_group(account.getUniqueId());
packet = new MessagePacket("[Server] Your rank is "+groupPerms.group_DisplayName);
packet.setupAndSend(channelHandlerContext);
packet = new MessagePacket(groupPerms.group_Desc);
packet.setupAndSend(channelHandlerContext);
});
commands.put("gpos",(args, networkIdentity, channelHandlerContext) -> {
Player player = ServerSingletons.getPlayer(networkIdentity);
Account account = ServerSingletons.getAccount(networkIdentity);
commands.put("npc", new npc_command()); Vector3 pos = player.getPosition();
MessagePacket packet = new MessagePacket("[Server] You are at "+(int)pos.x+" "+(int)pos.y+" "+(int)pos.z);
packet.setupAndSend(channelHandlerContext);
});
commands.put("my_zone",(args, networkIdentity, channelHandlerContext) -> {
Player player = ServerSingletons.getPlayer(networkIdentity);
Account account = ServerSingletons.getAccount(networkIdentity);
commands.put("make_zone",new make_zone_command()); MessagePacket packet = new MessagePacket("[Server] You are in "+player.zoneId);
packet.setupAndSend(channelHandlerContext);
});
commands.put("my_id",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
commands.put("send",new send_command()); MessagePacket packet = new MessagePacket("[Server] Your id is "+account.getUniqueId());
packet.setupAndSend(channelHandlerContext);
});
commands.put("my_name",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet = new MessagePacket("[Server] Your name is "+account.getUsername());
packet.setupAndSend(channelHandlerContext);
});
commands.put("my_area",(args, networkIdentity, ctx) -> {
Player plr = ServerSingletons.getPlayer(networkIdentity);
Area area = get_area_at_pos(plr.getPosition(), plr.getZone());
MessagePacket packet = new MessagePacket("[Server] You are in "+(area!=null?area.name : "no area atm..."));
packet.setupAndSend(ctx);
if (area==null)
return;
BoundingBox bb = area.getBox();
GameParticleSystem system = GameParticleSystem.laserParticleSystem.copy();
system.startColor.set(Color.YELLOW);
system.duration = 20.0F;
Vector3 m = new Vector3(.5f,.5f,.5f);
for (int x = (int) bb.min.x; x<=bb.max.x; x++){
ParticleUtil.send_particle(x, (int) bb.min.y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle(x, (int) bb.max.y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle(x, (int) bb.min.y, (int) bb.max.z,system,ctx,m);
ParticleUtil.send_particle(x, (int) bb.max.y, (int) bb.max.z,system,ctx,m);
}
for (int y = (int) bb.min.y; y<=bb.max.y; y++){
ParticleUtil.send_particle((int) bb.min.x,y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x,y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle((int) bb.min.x,y, (int) bb.max.z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x,y, (int) bb.max.z,system,ctx,m);
}
for (int z = (int) bb.min.z; z<=bb.max.z; z++){
ParticleUtil.send_particle((int) bb.min.x, (int) bb.min.y,z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x, (int) bb.min.y,z,system,ctx,m);
ParticleUtil.send_particle((int) bb.min.x, (int) bb.max.y,z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x, (int) bb.max.y,z,system,ctx,m);
}
});
commands.put("my_claims",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet = new MessagePacket("[Server] You have "+Region.get_owned_areas(account.getUniqueId())+" claims...");
packet.setupAndSend(channelHandlerContext);
});
commands.put("setup",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
boolean cancel = false;
boolean setup_perm_check = false;
boolean started = false;
if (args.length==2) {
boolean a = has_perm(account.getUniqueId(), Setup.get_perm(args[1]));
if (args[1].equalsIgnoreCase("cancel"))
cancel = Setup.cancel(account.getUniqueId());
else if (a)
started = Setup.start(account.getUniqueId(), args[1]);
}
MessagePacket packet = new MessagePacket(
(started || cancel)
?
(cancel ? "[Server] Setup canceled.." : "[Server] Starting setup..") :
(setup_perm_check ? "[Server] Failed to start setup... (There might be one running)" : "[Server] No setup perm..."));
packet.setupAndSend(channelHandlerContext);
if (started){
packet = new MessagePacket(Setup.setups.get(account.getUniqueId()).get_step_hint());
packet.setupAndSend(channelHandlerContext);
}
});
commands.put("region",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet = new MessagePacket("[Server] Usage :region area_name.json action value(optional)");
if (args.length>=3) {
String txt = args[1];
if (!txt.endsWith(".json"))
txt+=".json";
Area area = null;
for (int i = 0; i < areas.size; i++) {
if (areas.get(i).name.equals(txt)){
area=areas.get(i);
}
}
boolean a = has_perm(account.getUniqueId(), "region."+args[2]);
if (a && area!=null){
switch (args[2]){
case "enabled":
if (args.length==4){
try {
area.enabled=Boolean.parseBoolean(args[3]);
area.save(false);
} catch (Exception ignored) {}
packet = new MessagePacket("[Server] Area is now "+(area.enabled?"ENABLED":"DISABLED"));
} else
packet = new MessagePacket("[Server] Area is "+(area.enabled?"ENABLED":"DISABLED"));
break;
case "protect":
if (args.length==4){
try {
area.protect=Boolean.parseBoolean(args[3]);
area.save(false);
} catch (Exception ignored) {}
packet = new MessagePacket("[Server] Area protection is now "+(area.protect?"ENABLED":"DISABLED"));
} else
packet = new MessagePacket("[Server] Area protection is "+(area.protect?"ENABLED":"DISABLED"));
break;
case "priority", "piority":
if (args.length==4){
try {
area.piority=Integer.parseInt(args[3]);
area.save(false);
sort_areas();
} catch (Exception ignored) {}
packet = new MessagePacket("[Server] Area priority is now "+area.piority);
} else
packet = new MessagePacket("[Server] Area priority is "+area.piority);
break;
case "delete":
if (area.protect)
packet = new MessagePacket("[Server] Sorry but this area is protected...");
else {
File region = new File(get_path_string(SaveLocation.getSaveFolder().getPath(), "regions", area.name));
if (region.exists()) {
boolean ignored = region.delete();
packet = new MessagePacket("[Server] Usage :region area_name.json ACTION value(if required)");
}
}
break;
}
} else {
packet = new MessagePacket("[Server] Insufficient permissions or wrong area...");
}
}
packet.setupAndSend(channelHandlerContext);
});
commands.put("npc",(args, networkIdentity, channelHandlerContext) -> {
Player plr = networkIdentity.getPlayer();
MessagePacket packet = new MessagePacket("[Server] Usage :npc action id values(optional)");
if (args.length>=4) {
String arg2 = args[2];
String arg3 = args[3];
switch (args[1]) {
case "name":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2)).change_zone(plr.getZone()).setName(arg3);
packet.message="[Server] Changed npc with ID: %s, NAME: %s".formatted(arg2,arg3);
} catch (Exception ignored){
packet.message="[Server] Failed to modify npc ID: %s".formatted(arg2);
}
break;
case "rot":
try {
String[] ps = arg3.split(":");
NpcDef.registered_npc_list.get(Integer.parseInt(arg2))
.change_view_dir(new Vector3(
Float.parseFloat(ps[0]),
Float.parseFloat(ps[1]),
Float.parseFloat(ps[2])
)).send_update();
packet.message="[Server] Rotated npc with ID: %s".formatted(arg2);
} catch (Exception ignored){
packet.message="[Server] Failed to modify npc ID: %s".formatted(arg2);
}
break;
}
} else if (args.length==3) {
String arg2 = args[2];
switch (args[1]) {
case "add":
new NpcDef(arg2, plr.getPosition(), plr.getZone()).register().show_npc();
packet.message="[Server] Added npc with ID: %s".formatted(NpcDef.registered_npc_list.size()-1);
break;
case "tphere":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2))
.change_zone(plr.getZone())
.change_position(plr.getPosition())
.send_update();
packet.message="[Server] Moved npc with ID: %s".formatted(arg2);
} catch (Exception ignored){
packet.message="[Server] Failed to parse npc ID: %s".formatted(arg2);
}
break;
case "myrot":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2))
.change_view_dir(plr.getEntity().viewDirection)
.send_update();
packet.message="[Server] Rotated npc with ID: %s".formatted(arg2);
} catch (Exception ignored){
packet.message="[Server] Failed to parse npc ID: %s".formatted(arg2);
}
break;
case "remove", "del":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2)).unregister();
packet.message="[Server] Removed npc with ID: %s".formatted(arg2);
} catch (Exception ignored){
packet.message="[Server] Failed to parse npc ID: %s".formatted(arg2);
}
break;
}
} else if (args.length == 2) {
switch (args[1]) {
case "list":
StringBuilder msg = new StringBuilder("[Server] NPC List:\n");
for (int i = 0; i < NpcDef.registered_npc_list.size(); i++) {
msg.append(" - ID: %d | Name: %s \n".formatted(i, NpcDef.registered_npc_list.get(i).getName()));
}
packet.message=msg.toString();
break;
}
}
packet.setupAndSend(channelHandlerContext);
});
commands.put("make_zone",(args, networkIdentity, channelHandlerContext) -> {
boolean created = false;
ArrayList<String> zones;
try {
zones = get_server_property_array("zones","[]");
} catch (IOException e) {
e.printStackTrace();
zones = new ArrayList<>();
}
if (args.length==2){
String zoneId = args[1];
created = GameSingletons.world.getZoneIfExists(zoneId)==null;
if(created) {
GameSingletons.world.addNewZone(zoneId, ZoneGenerator.getZoneGenerator(zoneId));
zones.add(zoneId);
}
}
if (args.length>=3){
String zoneId = args[1];
String genId = args[2];
created = GameSingletons.world.getZoneIfExists(zoneId)==null;
if(created) {
GameSingletons.world.addNewZone(zoneId, ZoneGenerator.getZoneGenerator(genId));
zones.add(zoneId);
}
}
if (created){
try {
set_server_property("zones",zones.toString());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
MessagePacket packet = new MessagePacket(created ? "[Server] Created new zone..." : "[Server] Could not create new zone...");
packet.setupAndSend(channelHandlerContext);
});
commands.put("send",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
Player player = ServerSingletons.getPlayer(networkIdentity);
String txt = "[Server] Could not send plr to zone...";
if (args.length>=2){
String zoneId = args[1];
Zone zone = GameSingletons.world.getZoneIfExists(zoneId);
if (args.length>=3 && has_perm(account.getUniqueId(), "send.other")){
player = parseAsPlayer(args[2]);
}
if (player!=null && zone!=null){
txt="[Server] Sended "+player.getAccount().getDisplayName()+" to zone "+zoneId;
Zone old = player.getZone();
if (old.zoneId.equals(zoneId)) {
txt = "[Server] Player " + player.getAccount().getDisplayName() + " is already in zone " + zoneId;
}else {
zone.addPlayer(player);
player.setZone(zoneId);
player.respawn(zone);
old.removePlayer(player);
}
}
}
MessagePacket packet = new MessagePacket(txt);
packet.setupAndSend(channelHandlerContext);
});
commands.put("perm_code",new perm_code_command()); commands.put("perm_code",(args, networkIdentity, channeleHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
if (args.length==1)
Permissions.generate_new_code();
if (args.length==2)
Permissions.check_code_and_add_user(args[1],account.getUniqueId());
});
commands.put("perm_clear",new perm_clear_command()); commands.put("perm_clear",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
if (args.length==1) {
Permissions.clear_user_perm(account.getUniqueId(),true);
System.out.println("[Permissions] Users %s permission revoked - user request...".replace("%s",account.getUniqueId()));
}
});
commands.put("group",new group_command()); commands.put("group",(args, networkIdentity, channelHandlerContext) -> {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet=null;
if (args.length==4) {
if (Objects.equals(args[1], "set")) {
boolean res = Permissions.set_group(get_player_id(args[2]), args[3]);
packet = new MessagePacket(res ? "[Server] Group set for user..." : "[Server] Failed to set group for user...");
}
}
else if (args.length==3) {
if (Objects.equals(args[1], "clear")) {
Permissions.clear_group(get_player_id(args[2]));
packet = new MessagePacket("[Server] If user had perm it was cleared...");
}
}
if (packet==null)
return;
packet.setupAndSend(channelHandlerContext);
});
commands.put("reload_regions",new reload_regions_command()); commands.put("reload_regions",(args, networkIdentity, channelHandlerContext) -> {
MessagePacket packet = null;
if (args.length==1) {
reload_regions();
packet = new MessagePacket("Reloaded regions...");
}
if (args.length==2) {
reload_area_player_perms(args[1]);
packet = new MessagePacket("Reloaded %s area...".replace("%s", args[1]));
}
if (packet==null)
return;
packet.setupAndSend(channelHandlerContext);
});
commands.put("reload",new reload_command()); commands.put("reload",(args, networkIdentity, channelHandlerContext) -> {
List<String> arg_list = Arrays.stream(args).toList();
String reloaded_funcs = "";
if (arg_list.contains("config") || args.length==1) {
try {
prop.load_panel_config();
} catch (IOException e) {
throw new RuntimeException(e);
}
reloaded_funcs+="config ";
}
if (arg_list.contains("groups") || args.length==1) {
reload_perm_groups();
reloaded_funcs+="groups ";
}
if (arg_list.contains("scripts") || args.length==1) {
reload_scripts();
reloaded_funcs+="scripts ";
}
if (arg_list.contains("regions") || args.length==1) {
reload_regions();
reloaded_funcs+="regions ";
}
MessagePacket packet = new MessagePacket("Reloaded: "+reloaded_funcs);
packet.setupAndSend(channelHandlerContext);
});
commands.put("dump",new dump_command()); commands.put("dump",(args, networkIdentity, channelHandlerContext) -> {
File dumps_folder = new File(SaveLocation.getSaveFolder(),"dumps");
if (!dumps_folder.exists())
dumps_folder.mkdirs();
List<String> arg_list = Arrays.stream(args).toList();
String reloaded_funcs = "";
if (arg_list.contains("zones") || args.length==1) {
int i = 0;
for(IZoneLoader z : ZoneLoaders.INSTANCE.getAllZoneLoaders()) {
File dump_file = new File(get_path_string(SaveLocation.getSaveFolder().getPath(), "dumps", "zone_"+String.valueOf(i++)+".json"));
try {
Json json = new Json();
json.setOutputType(JsonWriter.OutputType.json);
BufferedWriter writer = new BufferedWriter(new FileWriter(dump_file.getPath()));
writer.write(json.prettyPrint(z));
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
reloaded_funcs+="zones ";
}
MessagePacket packet = new MessagePacket("Dumped: "+reloaded_funcs);
packet.setupAndSend(channelHandlerContext);
});
} }
} }

View file

@ -1,10 +0,0 @@
package net.pietru.cookie_utils.commands;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.savelib.utils.TriConsumer;
import io.netty.channel.ChannelHandlerContext;
public abstract class BaseCommand implements TriConsumer<String[], NetworkIdentity, ChannelHandlerContext> {
public abstract String get_command_key();
public abstract void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx);
}

View file

@ -1,52 +0,0 @@
package net.pietru.cookie_utils.commands;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonWriter;
import finalforeach.cosmicreach.ZoneLoaders;
import finalforeach.cosmicreach.io.SaveLocation;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.world.IZoneLoader;
import io.netty.channel.ChannelHandlerContext;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.List;
import static net.pietru.cookie_utils.utils.directory_utils.get_path_string;
public class dump_command extends BaseCommand {
@Override
public String get_command_key() {
return "dump";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
File dumps_folder = new File(SaveLocation.getSaveFolder(),"dumps");
if (!dumps_folder.exists())
dumps_folder.mkdirs();
List<String> arg_list = Arrays.stream(args).toList();
String reloaded_funcs = "";
if (arg_list.contains("zones") || args.length==1) {
int i = 0;
for(IZoneLoader z : ZoneLoaders.INSTANCE.getAllZoneLoaders()) {
File dump_file = new File(get_path_string(SaveLocation.getSaveFolder().getPath(), "dumps", "zone_"+String.valueOf(i++)+".json"));
try {
Json json = new Json();
json.setOutputType(JsonWriter.OutputType.json);
BufferedWriter writer = new BufferedWriter(new FileWriter(dump_file.getPath()));
writer.write(json.prettyPrint(z));
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
reloaded_funcs+="zones ";
}
MessagePacket packet = new MessagePacket("Dumped: "+reloaded_funcs);
packet.setupAndSend(ctx);
}
}

View file

@ -1,31 +0,0 @@
package net.pietru.cookie_utils.commands;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.api.TextCommands;
import static net.pietru.cookie_utils.permissions.Permissions.has_perm;
public class help_command extends BaseCommand {
@Override
public String get_command_key() {
return "help";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet;
packet = new MessagePacket("[Server] You have access to following commands:");
packet.setupAndSend(ctx);
for (String cmd : TextCommands.commands.keySet()){
if (!has_perm(account.getUniqueId(),cmd))
continue;
packet = new MessagePacket(" - "+cmd);
packet.setupAndSend(ctx);
}
}
}

View file

@ -1,55 +0,0 @@
package net.pietru.cookie_utils.commands;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.kits.Kits;
public class kit_command extends BaseCommand{
@Override
public String get_command_key() {
return "kit";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(identity);
boolean used = false;
long timeout = 0;
String kitId = "";
if (args.length>=2){
kitId = args[1];
if (account!=null && kitId!=null){
timeout = Kits.get_kit_timeout(account.getUniqueId(),kitId);
timeout = timeout/1000;
used = Kits.use_kit(account.getUniqueId(),kitId);
}
}
String claim_kit_in_msg = "[Server] You can claim this kit in ";
if (timeout>0){
long seconds = timeout%60;
long minutes = timeout-seconds;
long hours = timeout-minutes-seconds;
long days = timeout-hours-minutes-seconds;
if (timeout>59){
if (timeout>3599){
if (timeout>86399){
claim_kit_in_msg+=days/(60*60824)+"d ";
}
claim_kit_in_msg+=hours/(60*60)+"h ";
}
claim_kit_in_msg+=minutes/60+"m ";
}
claim_kit_in_msg+=seconds+"s ";
}
MessagePacket packet = new MessagePacket(used ? "[Server] Claimed kit "+Kits.get_kit_name(kitId) : (timeout>0 ? claim_kit_in_msg : "[Server] Could not claim kit..."));
packet.setupAndSend(ctx);
}
}

View file

@ -1,60 +0,0 @@
package net.pietru.cookie_utils.commands;
import finalforeach.cosmicreach.GameSingletons;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.worldgen.ZoneGenerator;
import io.netty.channel.ChannelHandlerContext;
import java.io.IOException;
import java.util.ArrayList;
import static net.pietru.cookie_utils.utils.prop.get_server_property_array;
import static net.pietru.cookie_utils.utils.prop.set_server_property;
public class make_zone_command extends BaseCommand {
@Override
public String get_command_key() {
return "make_zone";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
boolean created = false;
ArrayList<String> zones;
try {
zones = get_server_property_array("zones","[]");
} catch (IOException e) {
e.printStackTrace();
zones = new ArrayList<>();
}
if (args.length==2){
String zoneId = args[1];
created = GameSingletons.world.getZoneIfExists(zoneId)==null;
if(created) {
GameSingletons.world.addNewZone(zoneId, ZoneGenerator.getZoneGenerator(zoneId));
zones.add(zoneId);
}
}
if (args.length>=3){
String zoneId = args[1];
String genId = args[2];
created = GameSingletons.world.getZoneIfExists(zoneId)==null;
if(created) {
GameSingletons.world.addNewZone(zoneId, ZoneGenerator.getZoneGenerator(genId));
zones.add(zoneId);
}
}
if (created){
try {
set_server_property("zones",zones.toString());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
MessagePacket packet = new MessagePacket(created ? "[Server] Created new zone..." : "[Server] Could not create new zone...");
packet.setupAndSend(ctx);
}
}

View file

@ -1,25 +0,0 @@
package net.pietru.cookie_utils.commands.my_cmds;
import com.badlogic.gdx.math.Vector3;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
public class gpos_command extends BaseCommand {
@Override
public String get_command_key() {
return "gpos";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Player player = ServerSingletons.getPlayer(networkIdentity);
Vector3 pos = player.getPosition();
MessagePacket packet = new MessagePacket("[Server] You are at "+(int)pos.x+" "+(int)pos.y+" "+(int)pos.z);
packet.setupAndSend(ctx);
}
}

View file

@ -1,62 +0,0 @@
package net.pietru.cookie_utils.commands.my_cmds;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.math.collision.BoundingBox;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import finalforeach.cosmicreach.particles.GameParticleSystem;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.api.Area;
import net.pietru.cookie_utils.commands.BaseCommand;
import net.pietru.cookie_utils.utils.ParticleUtil;
import static net.pietru.cookie_utils.api.Region.get_area_at_pos;
public class my_area_command extends BaseCommand {
@Override
public String get_command_key() {
return "my_area";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Player plr = ServerSingletons.getPlayer(networkIdentity);
Area area = get_area_at_pos(plr.getPosition(), plr.getZone());
MessagePacket packet = new MessagePacket("[Server] You are in "+(area!=null?area.name : "no area atm..."));
packet.setupAndSend(ctx);
if (area==null)
return;
BoundingBox bb = area.getBox();
GameParticleSystem system = GameParticleSystem.laserParticleSystem.copy();
system.startColor.set(Color.YELLOW);
system.duration = 20.0F;
Vector3 m = new Vector3(.5f,.5f,.5f);
for (int x = (int) bb.min.x; x<=bb.max.x; x++){
ParticleUtil.send_particle(x, (int) bb.min.y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle(x, (int) bb.max.y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle(x, (int) bb.min.y, (int) bb.max.z,system,ctx,m);
ParticleUtil.send_particle(x, (int) bb.max.y, (int) bb.max.z,system,ctx,m);
}
for (int y = (int) bb.min.y; y<=bb.max.y; y++){
ParticleUtil.send_particle((int) bb.min.x,y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x,y, (int) bb.min.z,system,ctx,m);
ParticleUtil.send_particle((int) bb.min.x,y, (int) bb.max.z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x,y, (int) bb.max.z,system,ctx,m);
}
for (int z = (int) bb.min.z; z<=bb.max.z; z++){
ParticleUtil.send_particle((int) bb.min.x, (int) bb.min.y,z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x, (int) bb.min.y,z,system,ctx,m);
ParticleUtil.send_particle((int) bb.min.x, (int) bb.max.y,z,system,ctx,m);
ParticleUtil.send_particle((int) bb.max.x, (int) bb.max.y,z,system,ctx,m);
}
}
}

View file

@ -1,24 +0,0 @@
package net.pietru.cookie_utils.commands.my_cmds;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.api.Region;
import net.pietru.cookie_utils.commands.BaseCommand;
public class my_claims_command extends BaseCommand {
@Override
public String get_command_key() {
return "my_claims";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet = new MessagePacket("[Server] You have "+ Region.get_owned_areas(account.getUniqueId())+" claims...");
packet.setupAndSend(ctx);
}
}

View file

@ -1,23 +0,0 @@
package net.pietru.cookie_utils.commands.my_cmds;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
public class my_id_command extends BaseCommand {
@Override
public String get_command_key() {
return "my_id";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet = new MessagePacket("[Server] Your id is "+account.getUniqueId());
packet.setupAndSend(ctx);
}
}

View file

@ -1,23 +0,0 @@
package net.pietru.cookie_utils.commands.my_cmds;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
public class my_name_command extends BaseCommand {
@Override
public String get_command_key() {
return "my_name";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet = new MessagePacket("[Server] Your name is "+account.getUsername());
packet.setupAndSend(ctx);
}
}

View file

@ -1,28 +0,0 @@
package net.pietru.cookie_utils.commands.my_cmds;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
import net.pietru.cookie_utils.permissions.GroupPerms;
import net.pietru.cookie_utils.permissions.Permissions;
public class my_rank_command extends BaseCommand {
@Override
public String get_command_key() {
return "my_rank";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(networkIdentity);
MessagePacket packet;
GroupPerms groupPerms = Permissions.get_group(account.getUniqueId());
packet = new MessagePacket("[Server] Your rank is "+groupPerms.group_DisplayName);
packet.setupAndSend(ctx);
packet = new MessagePacket(groupPerms.group_Desc);
packet.setupAndSend(ctx);
}
}

View file

@ -1,23 +0,0 @@
package net.pietru.cookie_utils.commands.my_cmds;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
public class my_zone_command extends BaseCommand {
@Override
public String get_command_key() {
return "my_zone";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Player player = ServerSingletons.getPlayer(networkIdentity);
MessagePacket packet = new MessagePacket("[Server] You are in "+player.zoneId);
packet.setupAndSend(ctx);
}
}

View file

@ -1,98 +0,0 @@
package net.pietru.cookie_utils.commands;
import com.badlogic.gdx.math.Vector3;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.npcs.NpcDef;
public class npc_command extends BaseCommand{
@Override
public String get_command_key() {
return "npc";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Player plr = networkIdentity.getPlayer();
MessagePacket packet = new MessagePacket("[Server] Usage :npc action id values(optional)");
if (args.length >= 4) {
String arg2 = args[2];
String arg3 = args[3];
switch (args[1]) {
case "name":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2)).change_zone(plr.getZone()).setName(arg3);
packet.message = "[Server] Changed npc with ID: %s, NAME: %s".formatted(arg2, arg3);
} catch (Exception ignored) {
packet.message = "[Server] Failed to modify npc ID: %s".formatted(arg2);
}
break;
case "rot":
try {
String[] ps = arg3.split(":");
NpcDef.registered_npc_list.get(Integer.parseInt(arg2))
.change_view_dir(new Vector3(
Float.parseFloat(ps[0]),
Float.parseFloat(ps[1]),
Float.parseFloat(ps[2])
)).send_update();
packet.message = "[Server] Rotated npc with ID: %s".formatted(arg2);
} catch (Exception ignored) {
packet.message = "[Server] Failed to modify npc ID: %s".formatted(arg2);
}
break;
}
} else if (args.length == 3) {
String arg2 = args[2];
switch (args[1]) {
case "add":
new NpcDef(arg2, plr.getPosition(), plr.getZone()).register().show_npc();
packet.message = "[Server] Added npc with ID: %s".formatted(NpcDef.registered_npc_list.size() - 1);
break;
case "tphere":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2))
.change_zone(plr.getZone())
.change_position(plr.getPosition())
.send_update();
packet.message = "[Server] Moved npc with ID: %s".formatted(arg2);
} catch (Exception ignored) {
packet.message = "[Server] Failed to parse npc ID: %s".formatted(arg2);
}
break;
case "myrot":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2))
.change_view_dir(plr.getEntity().viewDirection)
.send_update();
packet.message = "[Server] Rotated npc with ID: %s".formatted(arg2);
} catch (Exception ignored) {
packet.message = "[Server] Failed to parse npc ID: %s".formatted(arg2);
}
break;
case "remove", "del":
try {
NpcDef.registered_npc_list.get(Integer.parseInt(arg2)).unregister();
packet.message = "[Server] Removed npc with ID: %s".formatted(arg2);
} catch (Exception ignored) {
packet.message = "[Server] Failed to parse npc ID: %s".formatted(arg2);
}
break;
}
} else if (args.length == 2) {
switch (args[1]) {
case "list":
StringBuilder msg = new StringBuilder("[Server] NPC List:\n");
for (int i = 0; i < NpcDef.registered_npc_list.size(); i++) {
msg.append(" - ID: %d | Name: %s \n".formatted(i, NpcDef.registered_npc_list.get(i).getName()));
}
packet.message = msg.toString();
break;
}
}
packet.setupAndSend(ctx);
}
}

View file

@ -1,42 +0,0 @@
package net.pietru.cookie_utils.commands.perm_cmds;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
import net.pietru.cookie_utils.permissions.Permissions;
import java.util.Objects;
import static net.pietru.cookie_utils.utils.player_utils.get_player_id;
public class group_command extends BaseCommand {
@Override
public String get_command_key() {
return "group";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(identity);
MessagePacket packet=null;
if (args.length==4) {
if (Objects.equals(args[1], "set")) {
boolean res = Permissions.set_group(get_player_id(args[2]), args[3]);
packet = new MessagePacket(res ? "[Server] Group set for user..." : "[Server] Failed to set group for user...");
}
}
else if (args.length==3) {
if (Objects.equals(args[1], "clear")) {
Permissions.clear_group(get_player_id(args[2]));
packet = new MessagePacket("[Server] If user had perm it was cleared...");
}
}
if (packet==null)
return;
packet.setupAndSend(ctx);
}
}

View file

@ -1,24 +0,0 @@
package net.pietru.cookie_utils.commands.perm_cmds;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
import net.pietru.cookie_utils.permissions.Permissions;
public class perm_clear_command extends BaseCommand {
@Override
public String get_command_key() {
return "perm_clear";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(identity);
if (args.length==1) {
Permissions.clear_user_perm(account.getUniqueId(),true);
System.out.println("[Permissions] Users %s permission revoked - user request...".replace("%s",account.getUniqueId()));
}
}
}

View file

@ -1,24 +0,0 @@
package net.pietru.cookie_utils.commands.perm_cmds;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
import net.pietru.cookie_utils.permissions.Permissions;
public class perm_code_command extends BaseCommand {
@Override
public String get_command_key() {
return "perm_code";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(identity);
if (args.length==1)
Permissions.generate_new_code();
if (args.length==2)
Permissions.check_code_and_add_user(args[1],account.getUniqueId());
}
}

View file

@ -1,93 +0,0 @@
package net.pietru.cookie_utils.commands;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.io.SaveLocation;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.api.Area;
import java.io.File;
import static net.pietru.cookie_utils.api.Region.areas;
import static net.pietru.cookie_utils.api.Region.sort_areas;
import static net.pietru.cookie_utils.permissions.Permissions.has_perm;
import static net.pietru.cookie_utils.utils.directory_utils.get_path_string;
public class region_command extends BaseCommand {
@Override
public String get_command_key() {
return "region";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(identity);
MessagePacket packet = new MessagePacket("[Server] Usage :region area_name.json action value(optional)");
if (args.length>=3) {
String txt = args[1];
if (!txt.endsWith(".json"))
txt+=".json";
Area area = null;
for (int i = 0; i < areas.size; i++) {
if (areas.get(i).name.equals(txt)){
area=areas.get(i);
}
}
boolean a = has_perm(account.getUniqueId(), "region."+args[2]);
if (a && area!=null){
switch (args[2]){
case "enabled":
if (args.length==4){
try {
area.enabled=Boolean.parseBoolean(args[3]);
area.save(false);
} catch (Exception ignored) {}
packet = new MessagePacket("[Server] Area is now "+(area.enabled?"ENABLED":"DISABLED"));
} else
packet = new MessagePacket("[Server] Area is "+(area.enabled?"ENABLED":"DISABLED"));
break;
case "protect":
if (args.length==4){
try {
area.protect=Boolean.parseBoolean(args[3]);
area.save(false);
} catch (Exception ignored) {}
packet = new MessagePacket("[Server] Area protection is now "+(area.protect?"ENABLED":"DISABLED"));
} else
packet = new MessagePacket("[Server] Area protection is "+(area.protect?"ENABLED":"DISABLED"));
break;
case "priority", "piority":
if (args.length==4){
try {
area.piority=Integer.parseInt(args[3]);
area.save(false);
sort_areas();
} catch (Exception ignored) {}
packet = new MessagePacket("[Server] Area priority is now "+area.piority);
} else
packet = new MessagePacket("[Server] Area priority is "+area.piority);
break;
case "delete":
if (area.protect)
packet = new MessagePacket("[Server] Sorry but this area is protected...");
else {
File region = new File(get_path_string(SaveLocation.getSaveFolder().getPath(), "regions", area.name));
if (region.exists()) {
boolean ignored = region.delete();
packet = new MessagePacket("[Server] Usage :region area_name.json ACTION value(if required)");
}
}
break;
}
} else {
packet = new MessagePacket("[Server] Insufficient permissions or wrong area...");
}
}
packet.setupAndSend(ctx);
}
}

View file

@ -1,55 +0,0 @@
package net.pietru.cookie_utils.commands.reload_cmds;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
import net.pietru.cookie_utils.utils.prop;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import static net.pietru.cookie_utils.api.Region.reload_regions;
import static net.pietru.cookie_utils.kits.Kits.reload_player_kits;
import static net.pietru.cookie_utils.permissions.Permissions.reload_perm_groups;
import static net.pietru.cookie_utils.scripting.ScriptsDB.reload_scripts;
public class reload_command extends BaseCommand {
@Override
public String get_command_key() {
return "reload";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
List<String> arg_list = Arrays.stream(args).toList();
String reloaded_funcs = "";
if (arg_list.contains("config") || args.length==1) {
try {
prop.load_panel_config();
} catch (IOException e) {
throw new RuntimeException(e);
}
reloaded_funcs+="config ";
}
if (arg_list.contains("groups") || args.length==1) {
reload_perm_groups();
reloaded_funcs+="groups ";
}
if (arg_list.contains("scripts") || args.length==1) {
reload_scripts();
reloaded_funcs+="scripts ";
}
if (arg_list.contains("regions") || args.length==1) {
reload_regions();
reloaded_funcs+="regions ";
}
if (arg_list.contains("kits") || args.length==1) {
reload_player_kits();
reloaded_funcs+="kits ";
}
MessagePacket packet = new MessagePacket("Reloaded: "+reloaded_funcs);
packet.setupAndSend(ctx);
}
}

View file

@ -1,32 +0,0 @@
package net.pietru.cookie_utils.commands.reload_cmds;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.commands.BaseCommand;
import static net.pietru.cookie_utils.api.Region.reload_area_player_perms;
import static net.pietru.cookie_utils.api.Region.reload_regions;
public class reload_regions_command extends BaseCommand {
@Override
public String get_command_key() {
return "reload_regions";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
MessagePacket packet = null;
if (args.length==1) {
reload_regions();
packet = new MessagePacket("Reloaded regions...");
}
if (args.length==2) {
reload_area_player_perms(args[1]);
packet = new MessagePacket("Reloaded %s area...".replace("%s", args[1]));
}
if (packet==null)
return;
packet.setupAndSend(ctx);
}
}

View file

@ -1,51 +0,0 @@
package net.pietru.cookie_utils.commands;
import finalforeach.cosmicreach.GameSingletons;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import finalforeach.cosmicreach.world.Zone;
import io.netty.channel.ChannelHandlerContext;
import static net.pietru.cookie_utils.permissions.Permissions.has_perm;
import static net.pietru.cookie_utils.utils.player_utils.parseAsPlayer;
public class send_command extends BaseCommand {
@Override
public String get_command_key() {
return "send";
}
@Override
public void accept(String[] args, NetworkIdentity identity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(identity);
Player player = ServerSingletons.getPlayer(identity);
String txt = "[Server] Could not send plr to zone...";
if (args.length>=2){
String zoneId = args[1];
Zone zone = GameSingletons.world.getZoneIfExists(zoneId);
if (args.length>=3 && has_perm(account.getUniqueId(), "send.other")){
player = parseAsPlayer(args[2]);
}
if (player!=null && zone!=null){
txt="[Server] Sended "+player.getAccount().getDisplayName()+" to zone "+zoneId;
Zone old = player.getZone();
if (old.zoneId.equals(zoneId)) {
txt = "[Server] Player " + player.getAccount().getDisplayName() + " is already in zone " + zoneId;
}else {
zone.addPlayer(player);
player.setZone(zoneId);
player.respawn(zone);
old.removePlayer(player);
}
}
}
MessagePacket packet = new MessagePacket(txt);
packet.setupAndSend(ctx);
}
}

View file

@ -1,45 +0,0 @@
package net.pietru.cookie_utils.commands;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.setups.Setup;
import static net.pietru.cookie_utils.permissions.Permissions.has_perm;
public class setup_command extends BaseCommand {
@Override
public String get_command_key() {
return "setup";
}
@Override
public void accept(String[] args, NetworkIdentity networkIdentity, ChannelHandlerContext ctx) {
Account account = ServerSingletons.getAccount(networkIdentity);
boolean cancel = false;
boolean setup_perm_check = false;
boolean started = false;
if (args.length==2) {
boolean a = has_perm(account.getUniqueId(), Setup.get_perm(args[1]));
if (args[1].equalsIgnoreCase("cancel"))
cancel = Setup.cancel(account.getUniqueId());
else if (a)
started = Setup.start(account.getUniqueId(), args[1]);
}
MessagePacket packet = new MessagePacket(
(started || cancel)
?
(cancel ? "[Server] Setup canceled.." : "[Server] Starting setup..") :
(setup_perm_check ? "[Server] Failed to start setup... (There might be one running)" : "[Server] No setup perm..."));
packet.setupAndSend(ctx);
if (started){
packet = new MessagePacket(Setup.setups.get(account.getUniqueId()).get_step_hint());
packet.setupAndSend(ctx);
}
}
}

View file

@ -1,160 +0,0 @@
package net.pietru.cookie_utils.kits;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonWriter;
import finalforeach.cosmicreach.accounts.Account;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.io.SaveLocation;
import finalforeach.cosmicreach.items.Item;
import finalforeach.cosmicreach.items.ItemMergeStrategy;
import finalforeach.cosmicreach.items.ItemStack;
import finalforeach.cosmicreach.networking.server.ServerSingletons;
import net.pietru.cookie_utils.permissions.Permissions;
import net.pietru.cookie_utils.utils.directory_utils;
import net.pietru.cookie_utils.utils.prop;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.*;
import static net.pietru.cookie_utils.utils.directory_utils.get_path_string;
public class Kits {
static Json json = new Json();
static Map<String,kit_info> kitsMap = new HashMap<>();
static Map<String,kit_use_info> player_kit_uses = new HashMap<>();
public static void reload_player_kit_uses(boolean load){
File def = new File(get_path_string(SaveLocation.getSaveFolder().getPath(),"player_kit_uses.json"));
if (load && def.exists()) {
try {
player_kit_uses = json.fromJson(HashMap.class, Gdx.files.absolute(def.getPath()));
} catch (Exception ignored) {
if (prop.log_level>0)
System.err.println("[KITS] Encountered exception while loading player kit uses...");
}
return;
}
try {
Json json = new Json();
json.setOutputType(JsonWriter.OutputType.json);
BufferedWriter writer = new BufferedWriter(new FileWriter(def.getPath()));
writer.write(json.prettyPrint(player_kit_uses));
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
if (prop.log_level>0)
System.out.println("[KITS] Saved player kit uses.");
}
public static void reload_player_kits(){
kitsMap.clear();
File perms_folder = new File(get_path_string(SaveLocation.getSaveFolder().getPath(),"kits"));
if (!perms_folder.exists()) {
perms_folder.mkdirs();
}
File def = new File(get_path_string(perms_folder.getPath(),"example.json"));
ArrayList<File> perms = directory_utils.list_files_in_dir_recursive(perms_folder,((dir, name) -> name.endsWith(".json")));
if (prop.log_level>0)
System.out.println("[KITS] Trying to load %s perm kits.".replace("%s", String.valueOf(perms.size())));
for (File f : perms) {
kit_info kit;
try {
kit=json.fromJson(kit_info.class,Gdx.files.absolute(f.getPath()));
} catch (Exception ignored){
if (prop.log_level>0)
System.err.println("[KITS] Perm group file \"%s\" had encountered exception while loading...".replace("%s", f.getPath()));
continue;
}
if (kit.kit_id.isEmpty())
continue;
kitsMap.put(kit.kit_id,kit);
}
try {
if (!def.exists()) {
Json json = new Json();
json.setOutputType(JsonWriter.OutputType.json);
BufferedWriter writer = new BufferedWriter(new FileWriter(def.getPath()));
writer.write(json.prettyPrint(kit_info.get_default_kit()));
writer.close();
reload_player_kits();
}
} catch (Exception e) {
e.printStackTrace();
}
reload_player_kit_uses(true);
if (prop.log_level>0)
System.out.println("[KITS] Loaded %s permissions.".replace("%s",String.valueOf(kitsMap.size())));
}
public static Set<String> get_kits(){
return kitsMap.keySet();
}
public static String get_kit_name(String kit_id){
return kitsMap.getOrDefault(kit_id,new kit_info()).kit_DisplayName;
}
public static boolean can_use_kit(String playerId,String kit_id){
if (!kitsMap.containsKey(kit_id))
return false;
kit_info kit = kitsMap.get(kit_id);
boolean perm = Permissions.has_perm(playerId,kitsMap.get(kit_id).kit_perm);
if (!player_kit_uses.containsKey(playerId))
return perm;
kit_use_info info = player_kit_uses.get(playerId);
if (!info.kit_use.containsKey(kit_id))
return perm;
long use_time = info.kit_use.get(kit_id);
long delay_time = (long) ((kit.kit_delay_seconds + kit.kit_delay_minutes*60 + kit.kit_delay_hours*60*60 + kit.kit_delay_days*60*60*24)*1000);
return perm && System.currentTimeMillis()>(use_time+delay_time);
}
public static boolean use_kit(String playerId,String kit_id){
if (!can_use_kit(playerId,kit_id))
return false;
if (!kitsMap.containsKey(kit_id))
return false;
kit_info kit = kitsMap.get(kit_id);
Account account = ServerSingletons.getAccountByUniqueId(playerId);
Player player = account.getPlayer();
for (String id : kit.items.keySet())
player.inventory.merge(new ItemStack(Item.getItem(id),kit.items.getOrDefault(id,1)), ItemMergeStrategy.PRESERVE);
player.inventory.syncDirtySlots(0,ServerSingletons.getConnection(player));
kit_use_info info = player_kit_uses.getOrDefault(playerId,new kit_use_info());
info.kit_use.put(kit_id,System.currentTimeMillis());
player_kit_uses.put(playerId,info);
reload_player_kit_uses(false);
return true;
}
public static long get_kit_timeout(String playerId,String kit_id){
if (!kitsMap.containsKey(kit_id))
return 0;
kit_info kit = kitsMap.get(kit_id);
if (!player_kit_uses.containsKey(playerId))
return 0;
kit_use_info info = player_kit_uses.get(playerId);
if (!info.kit_use.containsKey(kit_id))
return 0;
long use_time = info.kit_use.get(kit_id);
long delay_time = (long) ((kit.kit_delay_seconds + kit.kit_delay_minutes*60 + kit.kit_delay_hours*60*60 + kit.kit_delay_days*60*60*24)*1000);
long remaining_time= (use_time+delay_time)-System.currentTimeMillis();
return Math.max(0,remaining_time);
}
}

View file

@ -1,27 +0,0 @@
package net.pietru.cookie_utils.kits;
import java.util.HashMap;
import java.util.Map;
public class kit_info {
public String kit_id = "";
public String kit_DisplayName = "";
public String kit_Desc = "";
public String kit_perm = "";
public Float kit_delay_seconds = 0F;
public Float kit_delay_minutes = 0F;
public Float kit_delay_hours = 0F;
public Float kit_delay_days = 0F;
public Map<String,Integer> items = new HashMap<>();
public static kit_info get_default_kit(){
kit_info val = new kit_info();
val.kit_id="example";
val.kit_DisplayName="Example kit";
val.kit_Desc="The example user kit...";
val.kit_perm="kit.example";
val.kit_delay_minutes=1F;
val.items.put("base:stick",1);
return val;
}
}

View file

@ -1,8 +0,0 @@
package net.pietru.cookie_utils.kits;
import java.util.HashMap;
import java.util.Map;
public class kit_use_info {
public Map<String,Long> kit_use = new HashMap<>();
}

View file

@ -61,15 +61,6 @@ public class prop {
panel_prop.put("chat_shadow_enabled","true"); save=true;} panel_prop.put("chat_shadow_enabled","true"); save=true;}
if (!panel_prop.containsKey("chat_shadow_delay")){ if (!panel_prop.containsKey("chat_shadow_delay")){
panel_prop.put("chat_shadow_delay","500"); save=true;} panel_prop.put("chat_shadow_delay","500"); save=true;}
/*
* level 2 - sudo_code info error debug debug+
* level 1 - sudo_code info error debug
* level 0 - sudo_code info error
* level -1 - sudo_code
* level -2 - no logs
* */
if (!panel_prop.containsKey("log_level")){ if (!panel_prop.containsKey("log_level")){
panel_prop.put("log_level","1"); save=true;} panel_prop.put("log_level","1"); save=true;}
log_level = Integer.parseInt((String) panel_prop.getOrDefault("log_level",1)); log_level = Integer.parseInt((String) panel_prop.getOrDefault("log_level",1));