diff options
Diffstat (limited to 'OpenSim/Region/Environment/LandManagement')
-rw-r--r-- | OpenSim/Region/Environment/LandManagement/Land.cs | 12 | ||||
-rw-r--r-- | OpenSim/Region/Environment/LandManagement/LandManager.cs | 18 |
2 files changed, 30 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/LandManagement/Land.cs b/OpenSim/Region/Environment/LandManagement/Land.cs index 3f60b1b..4cfb0c1 100644 --- a/OpenSim/Region/Environment/LandManagement/Land.cs +++ b/OpenSim/Region/Environment/LandManagement/Land.cs | |||
@@ -227,6 +227,18 @@ namespace OpenSim.Region.Environment.LandManagement | |||
227 | } | 227 | } |
228 | } | 228 | } |
229 | 229 | ||
230 | public bool isBannedFromLand(ParcelManager.ParcelAccessEntry entry, IClientAPI remote_client) | ||
231 | { | ||
232 | if ((this.landData.landFlags & (uint)Parcel.ParcelFlags.UseBanList) > 0) | ||
233 | { | ||
234 | if (this.landData.parcelAccessList.Contains(entry)) | ||
235 | { | ||
236 | //They are banned, so lets send them a notice about this parcel | ||
237 | return true; | ||
238 | } | ||
239 | } | ||
240 | return false; | ||
241 | } | ||
230 | public void sendLandUpdateToClient(IClientAPI remote_client) | 242 | public void sendLandUpdateToClient(IClientAPI remote_client) |
231 | { | 243 | { |
232 | sendLandProperties(0, false, 0, remote_client); | 244 | sendLandProperties(0, false, 0, remote_client); |
diff --git a/OpenSim/Region/Environment/LandManagement/LandManager.cs b/OpenSim/Region/Environment/LandManagement/LandManager.cs index f3ab502..59bf7f8 100644 --- a/OpenSim/Region/Environment/LandManagement/LandManager.cs +++ b/OpenSim/Region/Environment/LandManagement/LandManager.cs | |||
@@ -590,6 +590,22 @@ namespace OpenSim.Region.Environment.LandManagement | |||
590 | addLandObject(fullSimParcel); | 590 | addLandObject(fullSimParcel); |
591 | } | 591 | } |
592 | 592 | ||
593 | public void sendOutBannedNotices(IClientAPI avatar) | ||
594 | { | ||
595 | ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); | ||
596 | entry.AgentID = avatar.AgentId; | ||
597 | entry.Flags = ParcelManager.AccessList.Ban; | ||
598 | entry.Time = new DateTime(); | ||
599 | |||
600 | foreach (Land checkBan in landList.Values) | ||
601 | { | ||
602 | if (checkBan.isBannedFromLand(entry, avatar)) | ||
603 | { | ||
604 | checkBan.sendLandProperties(-30000, false, (int)ParcelManager.ParcelResult.Single, avatar); | ||
605 | } | ||
606 | } | ||
607 | } | ||
608 | |||
593 | public void sendLandUpdate(ScenePresence avatar) | 609 | public void sendLandUpdate(ScenePresence avatar) |
594 | { | 610 | { |
595 | Land over = getLandObject((int)Math.Min(255, Math.Max(0, Math.Round(avatar.AbsolutePosition.X))), | 611 | Land over = getLandObject((int)Math.Min(255, Math.Max(0, Math.Round(avatar.AbsolutePosition.X))), |
@@ -599,6 +615,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
599 | { | 615 | { |
600 | over.sendLandUpdateToClient(avatar.ControllingClient); | 616 | over.sendLandUpdateToClient(avatar.ControllingClient); |
601 | } | 617 | } |
618 | |||
602 | } | 619 | } |
603 | 620 | ||
604 | public void handleSignificantClientMovement(IClientAPI remote_client) | 621 | public void handleSignificantClientMovement(IClientAPI remote_client) |
@@ -608,6 +625,7 @@ namespace OpenSim.Region.Environment.LandManagement | |||
608 | if (clientAvatar != null) | 625 | if (clientAvatar != null) |
609 | { | 626 | { |
610 | sendLandUpdate(clientAvatar); | 627 | sendLandUpdate(clientAvatar); |
628 | sendOutBannedNotices(remote_client); | ||
611 | } | 629 | } |
612 | } | 630 | } |
613 | 631 | ||