public void Execute(IRocketPlayer caller, string[] command) { var pluginInstance = BaseClusteringPlugin.Instance; if (pluginInstance == null) { throw new NullReferenceException("BaseClusteringPlugin.Instance is null. Cannot execute command."); } if (!(caller is UnturnedPlayer player)) { return; } if (!Physics.Raycast(new Ray(player.Player.look.aim.position, player.Player.look.aim.forward), out var hit, player.Player.look.perspective == EPlayerPerspective.THIRD ? 6 : 4, RayMasks.BARRICADE_INTERACT | RayMasks.BARRICADE | RayMasks.STRUCTURE | RayMasks.STRUCTURE_INTERACT) || hit.transform == null) { UnturnedChat.Say(caller, pluginInstance.Translate("not_looking_buildable")); return; } var buildable = BuildableDirectory.GetBuildable(hit.transform); if (buildable == null) { UnturnedChat.Say(caller, pluginInstance.Translate("not_looking_buildable")); return; } buildable.SafeDestroy(); }
internal static void ReceiveTransformStructure(byte x, byte y, uint instanceID) { var buildable = BuildableDirectory.GetBuildable(instanceID, true); if (buildable == null) { if (!StructureManager.tryGetRegion(x, y, out var region)) { return; } var data = region.structures.FirstOrDefault(k => k.instanceID == instanceID); var drop = region.drops.FirstOrDefault(k => k.instanceID == instanceID); if (data == null || drop == null) { return; } buildable = new StructureBuildable(data, drop); } OnBuildableTransformed?.Invoke(buildable !); }
internal static void ReceiveTransformBarricade(byte x, byte y, ushort plant, uint instanceID) { var buildable = BuildableDirectory.GetBuildable(instanceID, false); if (buildable == null) { if (!BarricadeManager.tryGetRegion(x, y, plant, out var region)) { return; } var data = region.barricades.FirstOrDefault(k => k.instanceID == instanceID); var drop = region.drops.FirstOrDefault(k => k.instanceID == instanceID); if (data == null || drop == null) { return; } buildable = new BarricadeBuildable(data, drop); } OnBuildableTransformed?.Invoke(buildable !); }