The only way without using
/scoreboard is to manually target each entity type that you want to kill, being a very long list of commands (~80):
Which also means that any new entities being added to the game won't be included and you'd have to manually add new
You should really be using
/scoreboard for this. If your worry is bloating the scoreboard with objectives, then you use the "tag" feature instead. I should emphasis that the "tag" feature has essentially nothing to do with the scoreboard, and its usage with
/scoreboard is misleading in that sense.
Entities have a list of generic string data that can be directly associated with them, and it just happens that
/scoreboard can interact with that list. There is no relation to the scoreboard otherwise.
For example, the following greatly simplifies what the above does, and makes it future-proof:
Assign a custom label to entities that you don't want to kill, provided they don't already have that label. Once again, this does not interact with the scoreboard and makes no use of objectives.
/scoreboard players tag @e[type=player,tag=!nokill] add nokill
/scoreboard players tag @e[type=sheep,tag=!nokill] add nokill
Kill entities that do not have that label.
The result is only 3 commands versus 80+, no objectives or scoreboard interaction, and will not break in the future when new entities are added to the game.