If a local land ID is given to the "land show" command, then output to console the full details of that parcel.
Using "land show" without a land ID still outputs a summary of parcels in the regionlink-sitting
parent
8114ae0f8b
commit
b4932bda2a
|
@ -42,7 +42,6 @@ using OpenSim.Framework.Capabilities;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.Framework.Servers.HttpServer;
|
using OpenSim.Framework.Servers.HttpServer;
|
||||||
using OpenSim.Region.CoreModules.Framework.InterfaceCommander;
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Region.Physics.Manager;
|
using OpenSim.Region.Physics.Manager;
|
||||||
|
@ -70,7 +69,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
private LandChannel landChannel;
|
private LandChannel landChannel;
|
||||||
private Scene m_scene;
|
private Scene m_scene;
|
||||||
protected Commander m_commander = new Commander("land");
|
|
||||||
|
|
||||||
protected IUserManagement m_userManager;
|
protected IUserManagement m_userManager;
|
||||||
protected IPrimCountModule m_primCountModule;
|
protected IPrimCountModule m_primCountModule;
|
||||||
|
@ -140,14 +138,13 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage;
|
m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage;
|
||||||
m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan;
|
m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan;
|
||||||
m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps;
|
m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps;
|
||||||
m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole;
|
|
||||||
|
|
||||||
lock (m_scene)
|
lock (m_scene)
|
||||||
{
|
{
|
||||||
m_scene.LandChannel = (ILandChannel)landChannel;
|
m_scene.LandChannel = (ILandChannel)landChannel;
|
||||||
}
|
}
|
||||||
|
|
||||||
InstallInterfaces();
|
RegisterCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegionLoaded(Scene scene)
|
public void RegionLoaded(Scene scene)
|
||||||
|
@ -159,10 +156,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
{
|
{
|
||||||
// TODO: Also release other event manager listeners here
|
// TODO: Release event manager listeners here
|
||||||
|
|
||||||
m_scene.EventManager.OnPluginConsole -= EventManagerOnPluginConsole;
|
|
||||||
m_scene.UnregisterModuleCommander(m_commander.Name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private bool OnVerifyUserConnection(ScenePresence scenePresence, out string reason)
|
// private bool OnVerifyUserConnection(ScenePresence scenePresence, out string reason)
|
||||||
|
@ -172,29 +166,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
// return nearestParcel != null;
|
// return nearestParcel != null;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Processes commandline input. Do not call directly.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="args">Commandline arguments</param>
|
|
||||||
protected void EventManagerOnPluginConsole(string[] args)
|
|
||||||
{
|
|
||||||
if (args[0] == "land")
|
|
||||||
{
|
|
||||||
if (args.Length == 1)
|
|
||||||
{
|
|
||||||
m_commander.ProcessConsoleCommand("help", new string[0]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
string[] tmpArgs = new string[args.Length - 2];
|
|
||||||
int i;
|
|
||||||
for (i = 2; i < args.Length; i++)
|
|
||||||
tmpArgs[i - 2] = args[i];
|
|
||||||
|
|
||||||
m_commander.ProcessConsoleCommand(args[1], tmpArgs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventManagerOnNewClient(IClientAPI client)
|
void EventManagerOnNewClient(IClientAPI client)
|
||||||
{
|
{
|
||||||
//Register some client events
|
//Register some client events
|
||||||
|
@ -1872,44 +1843,84 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
m_Dialog.SendAlertToUser(remoteClient, "You are not allowed to set your home location in this parcel.");
|
m_Dialog.SendAlertToUser(remoteClient, "You are not allowed to set your home location in this parcel.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void RegisterCommands()
|
||||||
protected void InstallInterfaces()
|
|
||||||
{
|
{
|
||||||
Command clearCommand
|
ICommands commands = MainConsole.Instance.Commands;
|
||||||
= new Command("clear", CommandIntentions.COMMAND_HAZARDOUS, ClearCommand, "Clears all the parcels from the region.");
|
|
||||||
Command showCommand
|
|
||||||
= new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowParcelsCommand, "Shows all parcels on the region.");
|
|
||||||
|
|
||||||
m_commander.RegisterCommand("clear", clearCommand);
|
commands.AddCommand(
|
||||||
m_commander.RegisterCommand("show", showCommand);
|
"Land", false, "land clear",
|
||||||
|
"land clear",
|
||||||
|
"Clear all the parcels from the region.",
|
||||||
|
"Command will ask for confirmation before proceeding.",
|
||||||
|
HandleClearCommand);
|
||||||
|
|
||||||
// Add this to our scene so scripts can call these functions
|
commands.AddCommand(
|
||||||
m_scene.RegisterModuleCommander(m_commander);
|
"Land", false, "land show",
|
||||||
|
"land show [<local-land-id>]",
|
||||||
|
"Show information about the parcels on the region.",
|
||||||
|
"If no local land ID is given, then summary information about all the parcels is shown.\n"
|
||||||
|
+ "If a local land ID is given then full information about that parcel is shown.",
|
||||||
|
HandleShowCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ClearCommand(Object[] args)
|
protected void HandleClearCommand(string module, string[] args)
|
||||||
{
|
{
|
||||||
|
if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene))
|
||||||
|
return;
|
||||||
|
|
||||||
string response = MainConsole.Instance.CmdPrompt(
|
string response = MainConsole.Instance.CmdPrompt(
|
||||||
string.Format(
|
string.Format(
|
||||||
"Are you sure that you want to clear all land parcels from {0} (y or n)",
|
"Are you sure that you want to clear all land parcels from {0} (y or n)", m_scene.Name),
|
||||||
m_scene.RegionInfo.RegionName),
|
|
||||||
"n");
|
"n");
|
||||||
|
|
||||||
if (response.ToLower() == "y")
|
if (response.ToLower() == "y")
|
||||||
{
|
{
|
||||||
Clear(true);
|
Clear(true);
|
||||||
MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.RegionInfo.RegionName);
|
MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.Name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MainConsole.Instance.OutputFormat("Aborting clear of all parcels from {0}", m_scene.RegionInfo.RegionName);
|
MainConsole.Instance.OutputFormat("Aborting clear of all parcels from {0}", m_scene.Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ShowParcelsCommand(Object[] args)
|
protected void HandleShowCommand(string module, string[] args)
|
||||||
{
|
{
|
||||||
|
if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene))
|
||||||
|
return;
|
||||||
|
|
||||||
StringBuilder report = new StringBuilder();
|
StringBuilder report = new StringBuilder();
|
||||||
|
|
||||||
|
if (args.Length <= 2)
|
||||||
|
{
|
||||||
|
AppendParcelsSummaryReport(report);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int landLocalId;
|
||||||
|
|
||||||
|
if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[2], out landLocalId))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ILandObject lo;
|
||||||
|
|
||||||
|
lock (m_landList)
|
||||||
|
{
|
||||||
|
if (!m_landList.TryGetValue(landLocalId, out lo))
|
||||||
|
{
|
||||||
|
MainConsole.Instance.OutputFormat("No parcel found with local ID {0}", landLocalId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AppendParcelReport(report, lo);
|
||||||
|
}
|
||||||
|
|
||||||
|
MainConsole.Instance.Output(report.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AppendParcelsSummaryReport(StringBuilder report)
|
||||||
|
{
|
||||||
report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName);
|
report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName);
|
||||||
report.AppendFormat(
|
report.AppendFormat(
|
||||||
"{0,-20} {1,-10} {2,-9} {3,-18} {4,-18} {5,-20}\n",
|
"{0,-20} {1,-10} {2,-9} {3,-18} {4,-18} {5,-20}\n",
|
||||||
|
@ -1931,8 +1942,69 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
ld.Name, ld.LocalID, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID));
|
ld.Name, ld.LocalID, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MainConsole.Instance.Output(report.ToString());
|
private void AppendParcelReport(StringBuilder report, ILandObject lo)
|
||||||
|
{
|
||||||
|
LandData ld = lo.LandData;
|
||||||
|
|
||||||
|
ConsoleDisplayList cdl = new ConsoleDisplayList();
|
||||||
|
cdl.AddRow("Parcel name", ld.Name);
|
||||||
|
cdl.AddRow("Local ID", ld.LocalID);
|
||||||
|
cdl.AddRow("Description", ld.Description);
|
||||||
|
cdl.AddRow("Snapshot ID", ld.SnapshotID);
|
||||||
|
cdl.AddRow("Area", ld.Area);
|
||||||
|
cdl.AddRow("Starts", lo.StartPoint);
|
||||||
|
cdl.AddRow("Ends", lo.EndPoint);
|
||||||
|
cdl.AddRow("AABB Min", ld.AABBMin);
|
||||||
|
cdl.AddRow("AABB Max", ld.AABBMax);
|
||||||
|
|
||||||
|
cdl.AddRow("Owner", m_userManager.GetUserName(ld.OwnerID));
|
||||||
|
cdl.AddRow("Is group owned?", ld.IsGroupOwned);
|
||||||
|
cdl.AddRow("GroupID", ld.GroupID);
|
||||||
|
|
||||||
|
cdl.AddRow("Status", ld.Status);
|
||||||
|
cdl.AddRow("Flags", (ParcelFlags)ld.Flags);
|
||||||
|
|
||||||
|
cdl.AddRow("Landing Type", (LandingType)ld.LandingType);
|
||||||
|
cdl.AddRow("User Location", ld.UserLocation);
|
||||||
|
cdl.AddRow("User look at", ld.UserLookAt);
|
||||||
|
|
||||||
|
cdl.AddRow("Other clean time", ld.OtherCleanTime);
|
||||||
|
|
||||||
|
cdl.AddRow("Max Prims", lo.GetParcelMaxPrimCount());
|
||||||
|
IPrimCounts pc = lo.PrimCounts;
|
||||||
|
cdl.AddRow("Owner Prims", pc.Owner);
|
||||||
|
cdl.AddRow("Group Prims", pc.Group);
|
||||||
|
cdl.AddRow("Other Prims", pc.Others);
|
||||||
|
cdl.AddRow("Selected Prims", pc.Selected);
|
||||||
|
cdl.AddRow("Total Prims", pc.Total);
|
||||||
|
|
||||||
|
cdl.AddRow("Music URL", ld.MusicURL);
|
||||||
|
cdl.AddRow("Obscure Music", ld.ObscureMusic);
|
||||||
|
|
||||||
|
cdl.AddRow("Media ID", ld.MediaID);
|
||||||
|
cdl.AddRow("Media Autoscale", Convert.ToBoolean(ld.MediaAutoScale));
|
||||||
|
cdl.AddRow("Media URL", ld.MediaURL);
|
||||||
|
cdl.AddRow("Media Type", ld.MediaType);
|
||||||
|
cdl.AddRow("Media Description", ld.MediaDescription);
|
||||||
|
cdl.AddRow("Media Width", ld.MediaWidth);
|
||||||
|
cdl.AddRow("Media Height", ld.MediaHeight);
|
||||||
|
cdl.AddRow("Media Loop", ld.MediaLoop);
|
||||||
|
cdl.AddRow("Obscure Media", ld.ObscureMedia);
|
||||||
|
|
||||||
|
cdl.AddRow("Parcel Category", ld.Category);
|
||||||
|
|
||||||
|
cdl.AddRow("Claim Date", ld.ClaimDate);
|
||||||
|
cdl.AddRow("Claim Price", ld.ClaimPrice);
|
||||||
|
cdl.AddRow("Pass Hours", ld.PassHours);
|
||||||
|
cdl.AddRow("Pass Price", ld.PassPrice);
|
||||||
|
|
||||||
|
cdl.AddRow("Auction ID", ld.AuctionID);
|
||||||
|
cdl.AddRow("Authorized Buyer ID", ld.AuthBuyerID);
|
||||||
|
cdl.AddRow("Sale Price", ld.SalePrice);
|
||||||
|
|
||||||
|
cdl.AddToStringBuilder(report);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue