mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-22 20:16:36 -04:00
Fix being able to place block when any of your coordinates are negative values, at guest rank.
This commit is contained in:
parent
51fa8002df
commit
5449f32ca7
@ -37,7 +37,7 @@ namespace MCGalaxy.Commands.Building {
|
||||
if (!p.HasBlockchange) {
|
||||
Player.Message(p, "Cannot mark, no selection or cuboid in progress."); return;
|
||||
}
|
||||
p.ManualChange(P.X, P.Y, P.Z, 0, Block.rock);
|
||||
p.ManualChange(P.X, P.Y, P.Z, 0, Block.rock, 0, false);
|
||||
Player.Message(p, "Mark placed at &b({0}, {1}, {2})", P.X, P.Y, P.Z);
|
||||
}
|
||||
|
||||
|
@ -46,11 +46,11 @@ namespace MCGalaxy.Commands
|
||||
void Blockchange1(Player p, ushort x, ushort y, ushort z, byte type, byte extType) {
|
||||
p.ClearBlockchange();
|
||||
if (type == Block.red) {
|
||||
p.ManualChange(x, y, z, 1, Block.c4det, 0);
|
||||
p.ManualChange(x, y, z, 1, Block.c4det);
|
||||
Player.Message(p, "Placed detonator block!");
|
||||
return;
|
||||
} else if (type != Block.air) {
|
||||
p.ManualChange(x, y, z, 1, Block.c4, 0);
|
||||
p.ManualChange(x, y, z, 1, Block.c4);
|
||||
}
|
||||
p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
|
||||
}
|
||||
|
@ -114,6 +114,7 @@ namespace MCGalaxy
|
||||
|
||||
public static List<Group> GroupList = new List<Group>();
|
||||
public static Group standard;
|
||||
static readonly object saveLock = new object();
|
||||
|
||||
/// <summary> Load up all server groups </summary>
|
||||
public static void InitAll() {
|
||||
@ -146,9 +147,10 @@ namespace MCGalaxy
|
||||
/// <summary> Save givenList group </summary>
|
||||
/// <param name="givenList">The list of groups to save</param>
|
||||
public static void saveGroups(List<Group> givenList) {
|
||||
GroupProperties.SaveGroups(givenList);
|
||||
if (OnGroupSave != null)
|
||||
OnGroupSave();
|
||||
lock (saveLock)
|
||||
GroupProperties.SaveGroups(givenList);
|
||||
|
||||
if (OnGroupSave != null) OnGroupSave();
|
||||
OnGroupSaveEvent.Call();
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,13 @@ namespace MCGalaxy {
|
||||
}
|
||||
}
|
||||
|
||||
static readonly object saveLock = new object();
|
||||
public static void Save(List<rankAllowance> givenList) {
|
||||
lock (saveLock)
|
||||
SaveCore(givenList);
|
||||
}
|
||||
|
||||
static void SaveCore(List<rankAllowance> givenList) {
|
||||
try {
|
||||
using (StreamWriter w = new StreamWriter("properties/command.properties")) {
|
||||
w.WriteLine("#Version 2");
|
||||
|
@ -45,6 +45,11 @@ namespace MCGalaxy {
|
||||
}
|
||||
|
||||
public void ManualChange(ushort x, ushort y, ushort z, byte action, byte type, byte extType = 0) {
|
||||
ManualChange(x, y, z, action, type, extType, true);
|
||||
}
|
||||
|
||||
public void ManualChange(ushort x, ushort y, ushort z, byte action,
|
||||
byte type, byte extType, bool checkPlaceDist) {
|
||||
byte b = level.GetTile(x, y, z);
|
||||
if ( b == Block.Zero ) { return; }
|
||||
if ( jailed || !agreed ) { RevertBlock(x, y, z); return; }
|
||||
@ -91,12 +96,12 @@ namespace MCGalaxy {
|
||||
OnBlockChangeEvent.Call(this, x, y, z, type, extType);
|
||||
if ( cancelBlock ) { cancelBlock = false; return; }
|
||||
|
||||
if ( group.Permission == LevelPermission.Banned ) return;
|
||||
if ( group.Permission == LevelPermission.Guest ) {
|
||||
int Diff = Math.Abs((pos[0] / 32) - x) + Math.Abs((pos[1] / 32) - y)
|
||||
+ Math.Abs((pos[2] / 32) - z);
|
||||
if (group.Permission == LevelPermission.Banned) return;
|
||||
if (checkPlaceDist && group.Permission == LevelPermission.Guest) {
|
||||
int Diff = Math.Abs(((short)pos[0] / 32) - x) + Math.Abs(((short)pos[1] / 32) - y)
|
||||
+ Math.Abs(((short)pos[2] / 32) - z);
|
||||
|
||||
if ((Diff > ReachDistance + 4) && !(lastCMD == "click" || lastCMD == "mark")) {
|
||||
if (Diff > ReachDistance + 4) {
|
||||
Server.s.Log(name + " attempted to build with a " + Diff + " distance offset");
|
||||
SendMessage("You can't build that far away.");
|
||||
RevertBlock(x, y, z); return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user