@@ -165,8 +165,8 @@ private boolean setup(CommandSender sender, String[] args) {
165165 }
166166
167167 private boolean start (CommandSender sender , String [] args ) {
168- if (args .length != 3 ) {
169- sender .sendMessage ("Usage: /ivcompare start <label> <A|B>" );
168+ if (args .length != 4 ) {
169+ sender .sendMessage ("Usage: /ivcompare start <label> <A|B> <legacy-parity|optimized-candidate> " );
170170 return true ;
171171 }
172172 if (collecting ) {
@@ -187,7 +187,8 @@ private boolean start(CommandSender sender, String[] args) {
187187 }
188188 label = sanitize (args [1 ]);
189189 variant = requestedVariant ;
190- requestedFlags = readRequestedFlags (target );
190+ String runtimeProfile = args [3 ].toLowerCase (Locale .ROOT );
191+ requestedFlags = requestedFlagsForProfile (runtimeProfile );
191192 effectiveFlags = inspectEffectiveFlags (target .getClass ());
192193 assertOptimizationProfile (variant , requestedFlags , effectiveFlags );
193194 tickSamples = 0 ;
@@ -196,7 +197,10 @@ private boolean start(CommandSender sender, String[] args) {
196197 startedNanos = System .nanoTime ();
197198 skipNextTickSample = true ;
198199 collecting = true ;
199- String record = "IV_COMPARE_START label=" + label + " variant=" + variant ;
200+ String record = "IV_COMPARE_START label=" + label + " variant=" + variant
201+ + " runtimeProfile=" + runtimeProfile
202+ + " requestedPacketOnlyStatic=" + requestedFlags .packetOnlyStatic ()
203+ + " requestedEventDrivenBlockUpdates=" + requestedFlags .eventDrivenBlockUpdates ();
200204 getLogger ().info (record );
201205 sender .sendMessage (record );
202206 return true ;
@@ -459,15 +463,13 @@ private static String sanitize(String value) {
459463 return sanitized .substring (0 , Math .min (64 , sanitized .length ()));
460464 }
461465
462- static RequestedFlags readRequestedFlags (Plugin target ) {
463- if (!(target instanceof JavaPlugin javaPlugin )) {
464- throw new IllegalStateException ("InteractionVisualizer target is not a JavaPlugin" );
465- }
466- return new RequestedFlags (
467- javaPlugin .getConfig ().getBoolean (
468- "Settings.Performance.VirtualItems.PacketOnlyStatic" ),
469- javaPlugin .getConfig ().getBoolean (
470- "Settings.Performance.BlockUpdates.EventDriven" ));
466+ static RequestedFlags requestedFlagsForProfile (String runtimeProfile ) {
467+ return switch (runtimeProfile ) {
468+ case "legacy-parity" -> RequestedFlags .disabled ();
469+ case "optimized-candidate" -> new RequestedFlags (true , true );
470+ default -> throw new IllegalArgumentException (
471+ "runtime profile must be legacy-parity or optimized-candidate" );
472+ };
471473 }
472474
473475 static EffectiveFlags inspectEffectiveFlags (Class <?> targetClass ) {
0 commit comments