diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index 483f4dc733..f2aa214e14 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -68,11 +68,7 @@ namespace Content.Client.Entry var prototypes = IoCManager.Resolve(); factory.DoAutoRegistrations(); - - foreach (var ignoreName in IgnoredComponents.List) - { - factory.RegisterIgnore(ignoreName); - } + factory.IgnoreMissingComponents(); factory.RegisterClass(); factory.RegisterClass(); diff --git a/Content.Client/Entry/IgnoredComponents.cs b/Content.Client/Entry/IgnoredComponents.cs deleted file mode 100644 index ae7d931da8..0000000000 --- a/Content.Client/Entry/IgnoredComponents.cs +++ /dev/null @@ -1,366 +0,0 @@ -// ReSharper disable ArrangeTrailingCommaInMultilineLists -namespace Content.Client.Entry -{ - public static class IgnoredComponents - { - public static string[] List => new[] - { - "AirlockPainter", - "AmmoBox", - "IngestionBlocker", - "Charger", - "CloningPod", - "HealthExaminable", - "Destructible", - "Temperature", - "AtmosExposed", - "Explosive", - "ExplosionResistance", - "Vocal", - "Summonable", - "OnUseTimerTrigger", - "WarpPoint", - "EmitSoundOnUse", - "EmitSoundOnLand", - "EmitSoundOnTrigger", - "EmitSoundOnActivate", - "EmitSoundOnUIOpen", - "NameIdentifier", - "HeatResistance", - "EntityStorage", - "MeleeWeapon", - "MeleeChemicalInjector", - "Dice", - "PaperLabel", - "PressureImmunity", - "Construction", - "PoweredLight", - "Smes", - "LightBulb", - "GlassTable", - "Healing", - "Material", - "RandomAppearance", - "DiseaseProtection", - "DiseaseDiagnoser", - "DiseaseVaccine", - "DiseaseVaccineCreator", - "ImmovableRod", - "DiseaseZombie", - "DiseaseBuildup", - "ZombieTransfer", - "RangedMagazine", - "RandomMetadata", - "Ammo", - "AiController", - "Computer", - "ResearchServer", - "ResearchPointSource", - "ResearchClient", - "MimePowers", - "Polymorphable", - "PolymorphedEntity", - "ThermalRegulator", - "DiseaseMachineRunning", - "DiseaseMachine", - "AtmosFixMarker", - "CablePlacer", - "Drink", - "Drain", - "Food", - "DeployableBarrier", - "SpaceGarbage", - "MagicMirror", - "DiseaseSwab", - "FloorTile", - "RandomInsulation", - "AgentIDCard", - "Electrified", - "Electrocution", - "Paper", - "Drone", - "Bloodstream", - "TransformableContainer", - "Mind", - "DiseaseCarrier", - "StorageFill", - "Absorbent", - "RandomHumanoidAppearance", - "CableVis", - "BatterySelfRecharger", - "Puddle", - "Stomach", - "SpeedLoader", - "Hitscan", - "Sharp", - "StunOnCollide", - "ExaminableDamage", - "RandomPottedPlant", - "Brain", - "CommunicationsConsole", - "BarSign", - "SolarPanel", - "BodyScanner", - "Stunbaton", - "TilePrying", - "RandomSpriteColor", - "ConditionalSpawner", - "TemperatureProtection", - "DamageOnToolInteract", - "ExaminableBattery", - "PottedPlantHide", - "Lock", - "PresetIdCard", - "SolarControlConsole", - "Thruster", - "FlashOnTrigger", - "Signaller", - "TriggerOnCollide", - "DeleteOnTrigger", - "EmptyOnMachineDeconstruct", - "ExplodeOnTrigger", - "Utensil", - "TimedSpawner", - "NodeContainer", - "PowerSupplier", - "PowerConsumer", - "Battery", - "Lung", - "BatteryDischarger", - "Apc", - "IntrinsicUI", - "PowerProvider", - "ApcPowerReceiver", - "Cable", - "StressTestMovement", - "EmitSoundOnThrow", - "SalvageMagnet", - "Flash", - "Docking", - "Telecrystal", - "PowerMonitoringConsole", - "RCD", - "RCDAmmo", - "SurplusBundle", - "CursedEntityStorage", - "DiseaseArtifact", - "Radio", - "GasArtifact", - "SentienceTarget", - "VentCritterSpawnLocation", - "RadiateArtifact", - "TemperatureArtifact", - "SuppressArtifactContainer", - "DisposalHolder", - "DisposalTagger", - "DisposalRouter", - "DisposalTransit", - "DisposalEntry", - "DisposalJunction", - "DisposalBend", - "Recycler", - "Conveyor", - "Flippable", - "Airtight", - "MovedByPressure", - "Spray", - "Ringer", - "Vapor", - "AddAccentClothing", - "DamageOnHighSpeedImpact", - "SolutionContainerManager", - "RefillableSolution", - "DrainableSolution", - "ExaminableSolution", - "DrawableSolution", - "InjectableSolution", - "SalvageMobRestrictions", - "SalvageMobRestrictionsGrid", - "Barotrauma", - "GasVentPump", - "GasPassiveVent", - "GasVentScrubber", - "GasOutletInjector", - "GasMiner", - "GasPressurePump", - "GasVolumePump", - "GasPassiveGate", - "GasValve", - "GasThermoMachine", - "Respirator", - "Metabolizer", - "AiFactionTag", - "PressureProtection", - "AMEPart", - "AMEFuelContainer", - "AMEShield", - "AtmosDevice", - "SignalReceiver", - "SignalSwitch", - "SignalTransmitter", - "SignalLinker", - "ItemCabinet", - "FireExtinguisher", - "Firelock", - "AtmosPlaque", - "Spillable", - "SpaceVillainArcade", - "Flammable", - "Smokable", - "Cigar", - "Matchstick", - "Matchbox", - "BlockGameArcade", - "Rehydratable", - "Headset", - "ComputerBoard", - "GasAnalyzable", - "GasCanister", - "GasPort", - "Sticky", - "GasPortable", - "AtmosPipeColor", - "AtmosUnsafeUnanchor", - "GasMixer", - "Cleanable", - "Configuration", - "PlantHolder", - "SeedExtractor", - "Produce", - "Log", - "Seed", - "ActivatableUI", - "ActivatableUIRequiresPower", - "Internals", - "GasTank", - "BreathMask", - "RadiationCollector", - "Emitter", - "SingularityGenerator", - "ParticleProjectile", - "ParticleAcceleratorControlBox", - "ParticleAcceleratorEmitter", - "ParticleAcceleratorEndCap", - "ParticleAcceleratorFuelChamber", - "ParticleAcceleratorPowerBox", - "BodyBagEntityStorage", - "MorgueEntityStorage", - "MorgueTray", - "CrematoriumEntityStorage", - "RandomSpriteState", - "ReagentGrinder", - "Extractable", - "WelderRefinable", - "TwoWayLever", - "SolutionInjectOnCollide", - "Machine", - "MachinePart", - "MachineFrame", - "MachineBoard", - "ChemicalAmmo", - "TraitorDeathMatchRedemption", - "CanHostGuardian", - "SliceableFood", - "DamageOtherOnHit", - "SinguloFood", - "DamageOnLand", - "SmokeSolutionAreaEffect", - "FoamSolutionAreaEffect", - "GasFilter", - "Recyclable", - "LightReplacer", - "SecretStash", - "Toilet", - "ClusterGrenade", - "Repairable", - "SolutionTransfer", - "Evaporation", - "ReagentTank", - "UtilityAI", - "FlashImmunity", - "GhostTakeoverAvailable", - "GhostRoleMobSpawner", - "GhostOnMove", - "RandomSpawner", - "SpawnAfterInteract", - "DisassembleOnAltVerb", - "BeingCloned", - "Advertise", - "Bible", - "HealOnBuckle", - "StasisBed", - "PowerNetworkBattery", - "BatteryCharger", - "UnpoweredFlashlight", - "Uplink", - "SpawnItemsOnUse", - "AmbientOnPowered", - "DoorSignalControl", - "Wieldable", - "ArtifactStorage", - "IncreaseDamageOnWield", - "TabletopGame", - "LitOnPowered", - "TriggerOnSignal", - "DeviceNetwork", - "WiredNetworkConnection", - "WirelessNetworkConnection", - "ExtensionCableReceiver", - "ExtensionCableProvider", - "ApcNetworkConnection", - "Gatherable", - "SuitSensor", - "CrewMonitoringConsole", - "ApcNetSwitch", - "HandLabeler", - "Label", - "Nuke", - "NukeCodePaper", - "GhostRadio", - "Armor", - "AtmosMonitor", - "AtmosAlarmable", - "LandMine", - "GhostKickUserOnTrigger", - "FireAlarm", - "AirAlarm", - "RadarConsole", - "GatheringTool", - "Guardian", - "GuardianCreator", - "GuardianHost", - "Udder", - "PneumaticCannon", - "Spreader", - "GrowingKudzu", - "MonkeyAccent", - "LizardAccent", - "ReplacementAccent", - "ResistLocker", - "IgniteOnCollide", - "SpawnArtifact", - "TelepathicArtifact", - "ArtifactGasTrigger", - "ArtifactInteractionTrigger", - "ArtifactTimerTrigger", - "ArtifactHeatTrigger", - "ArtifactElectricityTrigger", - "Artifact", - "RandomArtifactSprite", - "EnergySword", - "DeleteAfterTime", - "MeleeSound", - "RangedDamageSound", - "DoorRemote", - "InteractionPopup", - "HealthAnalyzer", - "BodyReassemble", - "Thirst", - "CanEscapeInventory", - "PowerSink", - "Mousetrap", - "DamageOnTrigger", - "Wires", - }; - } -} diff --git a/Content.IntegrationTests/Tests/GameObjects/Components/EntityPrototypeComponentsTest.cs b/Content.IntegrationTests/Tests/GameObjects/Components/EntityPrototypeComponentsTest.cs index 0139e3a95c..db3eaa9f2f 100644 --- a/Content.IntegrationTests/Tests/GameObjects/Components/EntityPrototypeComponentsTest.cs +++ b/Content.IntegrationTests/Tests/GameObjects/Components/EntityPrototypeComponentsTest.cs @@ -12,7 +12,6 @@ using YamlDotNet.RepresentationModel; namespace Content.IntegrationTests.Tests.GameObjects.Components { [TestFixture] - [TestOf(typeof(Client.Entry.IgnoredComponents))] [TestOf(typeof(Server.Entry.IgnoredComponents))] public sealed class EntityPrototypeComponentsTest : ContentIntegrationTest { @@ -124,20 +123,8 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components var serverComponents = server.ResolveDependency(); var ignoredServerNames = Server.Entry.IgnoredComponents.List; var clientComponents = client.ResolveDependency(); - var ignoredClientNames = Client.Entry.IgnoredComponents.List; var failureMessages = ""; - foreach (var clientIgnored in ignoredClientNames) - { - if (clientComponents.TryGetRegistration(clientIgnored, out _)) - { - failureMessages = $"{failureMessages}\nComponent {clientIgnored} was ignored on client, but exists on client"; - } - if (!serverComponents.TryGetRegistration(clientIgnored, out _)) - { - failureMessages = $"{failureMessages}\nComponent {clientIgnored} was ignored on client, but does not exist on server"; - } - } foreach (var serverIgnored in ignoredServerNames) { if (serverComponents.TryGetRegistration(serverIgnored, out _))