--- a/net/minecraft/world/entity/vehicle/MinecartCommandBlock.java
+++ b/net/minecraft/world/entity/vehicle/MinecartCommandBlock.java
@@ -22,7 +_,7 @@
 import net.minecraft.world.phys.Vec3;
 
 public class MinecartCommandBlock extends AbstractMinecart {
-    static final EntityDataAccessor<String> DATA_ID_COMMAND_NAME = SynchedEntityData.defineId(MinecartCommandBlock.class, EntityDataSerializers.STRING);
+    public static final EntityDataAccessor<String> DATA_ID_COMMAND_NAME = SynchedEntityData.defineId(MinecartCommandBlock.class, EntityDataSerializers.STRING);
     static final EntityDataAccessor<Component> DATA_ID_LAST_OUTPUT = SynchedEntityData.defineId(MinecartCommandBlock.class, EntityDataSerializers.COMPONENT);
     private final BaseCommandBlock commandBlock = new MinecartCommandBlock.MinecartCommandBase();
     private static final int ACTIVATION_DELAY = 4;
@@ -33,7 +_,7 @@
     }
 
     @Override
-    protected Item getDropItem() {
+    public Item getDropItem() {
         return Items.MINECART;
     }
 
@@ -126,7 +_,7 @@
                 MinecartCommandBlock.this.position(),
                 MinecartCommandBlock.this.getRotationVector(),
                 this.getLevel(),
-                2,
+                this.getLevel().paperConfig().commandBlocks.permissionsLevel, // Paper - configurable command block perm level
                 this.getName().getString(),
                 MinecartCommandBlock.this.getDisplayName(),
                 this.getLevel().getServer(),
@@ -138,5 +_,12 @@
         public boolean isValid() {
             return !MinecartCommandBlock.this.isRemoved();
         }
+
+        // CraftBukkit start
+        @Override
+        public org.bukkit.command.CommandSender getBukkitSender(CommandSourceStack wrapper) {
+            return net.minecraft.world.entity.vehicle.MinecartCommandBlock.this.getBukkitEntity();
+        }
+        // CraftBukkit end
     }
 }
