mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-23 04:32:50 -04:00
Use integer Clamp method.
This commit is contained in:
parent
47b2452235
commit
0bf14b4ce5
@ -186,7 +186,7 @@ namespace MCGalaxy.Commands
|
||||
Player.Message(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF"));
|
||||
break;
|
||||
case "votecount":
|
||||
Server.lava.voteCount = (byte)Utils.Clamp(decimal.Parse(args[3]), 2, 10);
|
||||
Server.lava.voteCount = (byte)Utils.Clamp(int.Parse(args[3]), 2, 10);
|
||||
Player.Message(p, "Vote count: &b" + Server.lava.voteCount);
|
||||
break;
|
||||
case "votetime":
|
||||
@ -223,23 +223,23 @@ namespace MCGalaxy.Commands
|
||||
try {
|
||||
switch (args[2]) {
|
||||
case "fast":
|
||||
settings.fast = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100);
|
||||
settings.fast = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
|
||||
Player.Message(p, "Fast lava chance: &b" + settings.fast + "%");
|
||||
break;
|
||||
case "killer":
|
||||
settings.killer = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100);
|
||||
settings.killer = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
|
||||
Player.Message(p, "Killer lava/water chance: &b" + settings.killer + "%");
|
||||
break;
|
||||
case "destroy":
|
||||
settings.destroy = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100);
|
||||
settings.destroy = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
|
||||
Player.Message(p, "Destroy blocks chance: &b" + settings.destroy + "%");
|
||||
break;
|
||||
case "water":
|
||||
settings.water = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100);
|
||||
settings.water = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
|
||||
Player.Message(p, "Water flood chance: &b" + settings.water + "%");
|
||||
break;
|
||||
case "layer":
|
||||
settings.layer = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100);
|
||||
settings.layer = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
|
||||
Player.Message(p, "Layer flood chance: &b" + settings.layer + "%");
|
||||
break;
|
||||
case "layerheight":
|
||||
|
@ -71,7 +71,7 @@ namespace MCGalaxy.Commands {
|
||||
foundOne = true;
|
||||
string user = inCache[i].name.Trim();
|
||||
DateTime time = Server.StartTimeLocal.AddSeconds(inCache[i].flags >> 2);
|
||||
byte block = (inCache[i].flags & 2) != 0 ? Block.custom_block : inCache[i].rawType;
|
||||
byte block = (inCache[i].flags & 2) != 0 ? Block.custom_block : inCache[i].rawBlock;
|
||||
bool deleted = (inCache[i].flags & 1) != 0;
|
||||
Output(p, user, block, deleted, now - time);
|
||||
}
|
||||
|
@ -175,13 +175,13 @@ namespace MCGalaxy.Gui {
|
||||
lsLoadedMap = name;
|
||||
try {
|
||||
LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(name);
|
||||
lsNudFastLava.Value = Utils.Clamp((decimal)settings.fast, 0, 100);
|
||||
lsNudKiller.Value = Utils.Clamp((decimal)settings.killer, 0, 100);
|
||||
lsNudDestroy.Value = Utils.Clamp((decimal)settings.destroy, 0, 100);
|
||||
lsNudWater.Value = Utils.Clamp((decimal)settings.water, 0, 100);
|
||||
lsNudLayer.Value = Utils.Clamp((decimal)settings.layer, 0, 100);
|
||||
lsNudLayerHeight.Value = Utils.Clamp((decimal)settings.layerHeight, 1, 1000);
|
||||
lsNudLayerCount.Value = Utils.Clamp((decimal)settings.layerCount, 1, 1000);
|
||||
lsNudFastLava.Value = Utils.Clamp(settings.fast, 0, 100);
|
||||
lsNudKiller.Value = Utils.Clamp(settings.killer, 0, 100);
|
||||
lsNudDestroy.Value = Utils.Clamp(settings.destroy, 0, 100);
|
||||
lsNudWater.Value = Utils.Clamp(settings.water, 0, 100);
|
||||
lsNudLayer.Value = Utils.Clamp(settings.layer, 0, 100);
|
||||
lsNudLayerHeight.Value = Utils.Clamp(settings.layerHeight, 1, 1000);
|
||||
lsNudLayerCount.Value = Utils.Clamp(settings.layerCount, 1, 1000);
|
||||
lsNudLayerTime.Value = (decimal)Utils.Clamp(settings.layerInterval, 1, 1000);
|
||||
lsNudRoundTime.Value = (decimal)Utils.Clamp(settings.roundTime, 1, 1000);
|
||||
lsNudFloodTime.Value = (decimal)Utils.Clamp(settings.floodTime, 1, 1000);
|
||||
|
@ -102,11 +102,11 @@ namespace MCGalaxy.Games {
|
||||
void ProcessMapLine(string key, string value, ref MapSettings map) {
|
||||
string[] sp;
|
||||
switch (key.ToLower()) {
|
||||
case "fast-chance": map.fast = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
|
||||
case "killer-chance": map.killer = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
|
||||
case "destroy-chance": map.destroy = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
|
||||
case "water-chance": map.water = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
|
||||
case "layer-chance": map.layer = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
|
||||
case "fast-chance": map.fast = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
|
||||
case "killer-chance": map.killer = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
|
||||
case "destroy-chance": map.destroy = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
|
||||
case "water-chance": map.water = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
|
||||
case "layer-chance": map.layer = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
|
||||
case "layer-height": map.layerHeight = int.Parse(value); break;
|
||||
case "layer-count": map.layerCount = int.Parse(value); break;
|
||||
case "layer-interval": map.layerInterval = double.Parse(value); break;
|
||||
|
@ -77,9 +77,9 @@ namespace MCGalaxy {
|
||||
for (int i = 0; i < count; i++) {
|
||||
ulong flags = lvl.blockqueue[i];
|
||||
int index = (int)(flags >> 32);
|
||||
byte type = (flags & 0x100) != 0 ? Block.custom_block : (byte)flags;
|
||||
byte extType = (flags & 0x100) != 0 ? (byte)flags : Block.air;
|
||||
bulkSender.Add(index, type, extType);
|
||||
byte block = (flags & 0x100) != 0 ? Block.custom_block : (byte)flags;
|
||||
byte extBlock = (flags & 0x100) != 0 ? (byte)flags : Block.air;
|
||||
bulkSender.Add(index, block, extBlock);
|
||||
}
|
||||
bulkSender.Send(true);
|
||||
lvl.blockqueue.RemoveRange(0, count);
|
||||
|
@ -225,9 +225,9 @@ namespace MCGalaxy {
|
||||
}
|
||||
|
||||
public bool CheckAffectPermissions(Player p, ushort x, ushort y, ushort z,
|
||||
byte b, byte type, byte extType = 0) {
|
||||
byte b, byte block, byte extBlock = 0) {
|
||||
if (!Block.AllowBreak(b) && !Block.canPlace(p, b) && !Block.BuildIn(b)) return false;
|
||||
if (p.PlayingTntWars && !CheckTNTWarsChange(p, x, y, z, ref type)) return false;
|
||||
if (p.PlayingTntWars && !CheckTNTWarsChange(p, x, y, z, ref block)) return false;
|
||||
|
||||
bool inZone = false;
|
||||
if (!CheckZonePerms(p, x, y, z, ref inZone)) return false;
|
||||
|
@ -455,17 +455,17 @@ namespace MCGalaxy {
|
||||
public struct BlockPos {
|
||||
public string name;
|
||||
public int flags, index; // bit 0 = is deleted, bit 1 = is ext, rest bits = time delta
|
||||
public byte rawType;
|
||||
public byte rawBlock;
|
||||
|
||||
public void SetData(byte type, byte extType, bool delete) {
|
||||
public void SetData(byte block, byte extBlock, bool delete) {
|
||||
TimeSpan delta = DateTime.UtcNow.Subtract(Server.StartTime);
|
||||
flags = (int)delta.TotalSeconds << 2;
|
||||
flags |= (byte)(delete ? 1 : 0);
|
||||
|
||||
if (type == Block.custom_block) {
|
||||
rawType = extType; flags |= 2;
|
||||
if (block == Block.custom_block) {
|
||||
rawBlock = extBlock; flags |= 2;
|
||||
} else {
|
||||
rawType = type;
|
||||
rawBlock = block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ namespace MCGalaxy {
|
||||
nameP.Value = bP.name;
|
||||
timeP.Value = date;
|
||||
xP.Value = x; yP.Value = y; zP.Value = z;
|
||||
tileP.Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawType;
|
||||
tileP.Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawBlock;
|
||||
delP.Value = (bP.flags & 1) != 0;
|
||||
} else {
|
||||
((NativeParameter)nameP).SetString(bP.name);
|
||||
@ -78,7 +78,7 @@ namespace MCGalaxy {
|
||||
((NativeParameter)xP).U16Value = x;
|
||||
((NativeParameter)yP).U16Value = y;
|
||||
((NativeParameter)zP).U16Value = z;
|
||||
((NativeParameter)tileP).U8Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawType;
|
||||
((NativeParameter)tileP).U8Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawBlock;
|
||||
((NativeParameter)delP).BoolValue = (bP.flags & 1) != 0;
|
||||
}
|
||||
|
||||
|
@ -86,7 +86,7 @@ namespace MCGalaxy {
|
||||
Player.Message(p, "Reset {0} color for {1}%S to normal", envTypeName, p.level.name);
|
||||
target = "";
|
||||
} else {
|
||||
if (!Utils.CheckHex(p, ref value)) return;
|
||||
if (!Utils.CheckHex(p, ref value)) return;
|
||||
Player.Message(p, "Set {0} color for {1}%S to #{2}", envTypeName, p.level.name, value);
|
||||
target = value;
|
||||
}
|
||||
|
@ -73,25 +73,25 @@ namespace MCGalaxy.BlockPhysics {
|
||||
C.data.Data++;
|
||||
}
|
||||
|
||||
static void FloodAir(Level lvl, int b, byte type) {
|
||||
if (b == -1) return;
|
||||
byte block = Block.Convert(lvl.blocks[b]);
|
||||
if (block == Block.water || block == Block.lava)
|
||||
lvl.AddUpdate(b, type);
|
||||
static void FloodAir(Level lvl, int index, byte block) {
|
||||
if (index == -1) return;
|
||||
byte curBlock = Block.Convert(lvl.blocks[index]);
|
||||
if (curBlock == Block.water || curBlock == Block.lava)
|
||||
lvl.AddUpdate(index, block);
|
||||
}
|
||||
|
||||
internal static void PhysAir(Level lvl, int b) {
|
||||
if (b == -1) return;
|
||||
byte block = lvl.blocks[b];
|
||||
internal static void PhysAir(Level lvl, int index) {
|
||||
if (index == -1) return;
|
||||
byte block = lvl.blocks[index];
|
||||
byte convBlock = Block.Convert(block);
|
||||
if (convBlock == Block.water || convBlock == Block.lava ||
|
||||
(block >= Block.red && block <= Block.white)) {
|
||||
lvl.AddCheck(b); return;
|
||||
lvl.AddCheck(index); return;
|
||||
}
|
||||
|
||||
switch (block) {
|
||||
//case Block.water:
|
||||
//case Block.lava:
|
||||
//case Block.water:
|
||||
//case Block.lava:
|
||||
case Block.shrub:
|
||||
case Block.sand:
|
||||
case Block.gravel:
|
||||
@ -104,7 +104,7 @@ namespace MCGalaxy.BlockPhysics {
|
||||
case Block.deathwater:
|
||||
case Block.geyser:
|
||||
case Block.magma:*/
|
||||
lvl.AddCheck(b);
|
||||
lvl.AddCheck(index);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -22,7 +22,6 @@ namespace MCGalaxy {
|
||||
public sealed partial class Player : IDisposable {
|
||||
|
||||
public NetworkStream Stream;
|
||||
public BinaryReader Reader;
|
||||
|
||||
static void Receive(IAsyncResult result) {
|
||||
//Server.s.Log(result.AsyncState.ToString());
|
||||
@ -636,12 +635,5 @@ namespace MCGalaxy {
|
||||
}
|
||||
RemoveFromPending();
|
||||
}
|
||||
|
||||
public string ReadString(int count = 64) {
|
||||
if ( Reader == null ) return null;
|
||||
var chars = new byte[count];
|
||||
Reader.Read(chars, 0, count);
|
||||
return Encoding.UTF8.GetString(chars).TrimEnd().Replace("\0", string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ namespace MCGalaxy {
|
||||
skinName = name;
|
||||
|
||||
int altsCount = 0;
|
||||
lock (pendingLock) {
|
||||
lock (pendingLock) {
|
||||
DateTime now = DateTime.UtcNow;
|
||||
foreach (PendingItem item in pendingNames) {
|
||||
if (item.Name == truename && (now - item.Connected).TotalSeconds <= 60)
|
||||
|
@ -42,10 +42,10 @@ namespace MCGalaxy {
|
||||
this.level = player.level;
|
||||
}
|
||||
|
||||
public bool Add(int index, byte type, byte extType) {
|
||||
public bool Add(int index, byte block, byte extBlock) {
|
||||
indices[count] = index;
|
||||
if (type == Block.custom_block) types[count] = extType;
|
||||
else types[count] = Block.Convert(type);
|
||||
if (block == Block.custom_block) types[count] = extBlock;
|
||||
else types[count] = Block.Convert(block);
|
||||
count++;
|
||||
return Send(false);
|
||||
}
|
||||
|
@ -68,6 +68,10 @@ namespace MCGalaxy {
|
||||
for (int i = 0; i < bytes; i++)
|
||||
*srcByte = value; srcByte++;
|
||||
}
|
||||
|
||||
public static int Clamp(int value, int lo, int hi) {
|
||||
return Math.Max(Math.Min(value, hi), lo);
|
||||
}
|
||||
|
||||
public static decimal Clamp(decimal value, decimal lo, decimal hi) {
|
||||
return Math.Max(Math.Min(value, hi), lo);
|
||||
@ -89,7 +93,6 @@ namespace MCGalaxy {
|
||||
string itemName = nameGetter(item);
|
||||
if (itemName.Equals(name, comp)) { matches = 1; return item; }
|
||||
if (itemName.IndexOf(name, comp) < 0) continue;
|
||||
Queue<Queue<Queue>> queue = new Queue<Queue<Queue>>();
|
||||
|
||||
match = item; matches++;
|
||||
if (matches <= limit)
|
||||
|
Loading…
x
Reference in New Issue
Block a user