my_area now will show area you are in via particles, Areas are more strict with does_intersect
Some checks failed
/ Auto-Build-App (push) Has been cancelled

This commit is contained in:
pietru 2025-02-18 23:09:57 +01:00
parent f0d5f13ac4
commit 6c6d60f7a5
5 changed files with 66 additions and 10 deletions

View file

@ -4,14 +4,14 @@ org.gradle.parallel=true
org.gradle.caching=false
# Project Info
version=1.0.5
version=1.0.6
group=net.pietru
id=cookie_utils
# Dependency Versions
cosmic_reach_version=0.3.16
cosmic_reach_version=0.3.26
# If unspecified, will use the version above
cosmic_reach_server_version=0.3.16
cosmic_reach_server_version=0.3.26
cosmic_quilt_version=2.3.1
#2.2.0

View file

@ -45,6 +45,9 @@ public class Area {
}
public boolean does_intersect(Vector3 c){
c.x=(int)c.x;
c.y=(int)c.y;
c.z=(int)c.z;
return space.contains(c);
}

View file

@ -30,7 +30,7 @@ public class Region {
if (is_not_reloading)
for (Area a : areas){
if (a.enabled && (z.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(g_position)){
if (a.enabled && (a.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(g_position)){
can=a.get_action_bool(action,player_id);
break;
}
@ -47,7 +47,7 @@ public class Region {
if (is_not_reloading)
for (int i = 0; i< areas.size; i++){
Area a = areas.get(i);
if (a.enabled && (z.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(g_position)){
if (a.enabled && (a.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(g_position)){
can=a.get_action_bool(action);
break;
}
@ -63,7 +63,7 @@ public class Region {
if (is_not_reloading)
for (int i = 0; i< areas.size; i++){
Area a = areas.get(i);
if (a.enabled && (z.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(position)){
if (a.enabled && (a.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(position)){
can=a.get_action_bool(action,player_id);
break;
}
@ -78,7 +78,7 @@ public class Region {
if (is_not_reloading)
for (int i = 0; i< areas.size; i++){
Area a = areas.get(i);
if (a.enabled && (z.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(position)){
if (a.enabled && (a.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(position)){
can=a.get_action_bool(action);
break;
}
@ -106,7 +106,7 @@ public class Region {
if (is_not_reloading)
for (int i = 0; i< areas.size; i++){
Area a = areas.get(i);
if (a.enabled && (z.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(position)){
if (a.enabled && (a.zoneId.isEmpty() || z.zoneId.equals(a.zoneId)) && a.does_intersect(position)){
return a;
}
}

View file

@ -1,17 +1,22 @@
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.entities.EntityLaserProjectile;
import finalforeach.cosmicreach.entities.player.Player;
import finalforeach.cosmicreach.io.SaveLocation;
import finalforeach.cosmicreach.networking.NetworkIdentity;
import finalforeach.cosmicreach.networking.packets.MessagePacket;
import finalforeach.cosmicreach.networking.packets.ParticleSystemPacket;
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;
@ -20,6 +25,7 @@ import io.netty.channel.ChannelHandlerContext;
import net.pietru.cookie_utils.permissions.GroupPerms;
import net.pietru.cookie_utils.permissions.Permissions;
import net.pietru.cookie_utils.setups.Setup;
import net.pietru.cookie_utils.utils.ParticleUtil;
import java.io.BufferedWriter;
import java.io.File;
@ -101,12 +107,42 @@ public class TextCommands {
MessagePacket packet = new MessagePacket("[Server] Your name is "+account.getUsername());
packet.setupAndSend(channelHandlerContext);
});
commands.put("my_area",(args, networkIdentity, 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(channelHandlerContext);
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);

View file

@ -0,0 +1,17 @@
package net.pietru.cookie_utils.utils;
import com.badlogic.gdx.math.Vector3;
import finalforeach.cosmicreach.networking.packets.ParticleSystemPacket;
import finalforeach.cosmicreach.particles.GameParticleSystem;
import io.netty.channel.ChannelHandlerContext;
public class ParticleUtil {
public static void send_particle(float x, float y, float z, GameParticleSystem system, ChannelHandlerContext ctx){
system.setOrigin(x,y,z);
ParticleSystemPacket particle = new ParticleSystemPacket(system);
particle.setupAndSend(ctx);
}
public static void send_particle(float x, float y, float z, GameParticleSystem system, ChannelHandlerContext ctx, Vector3 m){
send_particle(x+m.x,y+m.y,z+m.z,system,ctx);
}
}