--- a/net/minecraft/world/entity/vehicle/MinecartHopper.java
+++ b/net/minecraft/world/entity/vehicle/MinecartHopper.java
@@ -48,6 +_,7 @@
         if (flag != this.isEnabled()) {
             this.setEnabled(flag);
         }
+        this.immunize(); // Paper
     }
 
     public boolean isEnabled() {
@@ -101,11 +_,13 @@
 
     public boolean suckInItems() {
         if (HopperBlockEntity.suckInItems(this.level(), this)) {
+            this.immunize(); // Paper
             return true;
         } else {
             for (ItemEntity itemEntity : this.level()
                 .getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(0.25, 0.0, 0.25), EntitySelector.ENTITY_STILL_ALIVE)) {
                 if (HopperBlockEntity.addItem(this, itemEntity)) {
+                    this.immunize(); // Paper
                     return true;
                 }
             }
@@ -115,7 +_,7 @@
     }
 
     @Override
-    protected Item getDropItem() {
+    public Item getDropItem() {
         return Items.HOPPER_MINECART;
     }
 
@@ -140,4 +_,11 @@
     public AbstractContainerMenu createMenu(int id, Inventory playerInventory) {
         return new HopperMenu(id, playerInventory, this);
     }
+
+    // Paper start
+    public void immunize() {
+        this.activatedImmunityTick = Math.max(this.activatedImmunityTick, net.minecraft.server.MinecraftServer.currentTick + 20);
+    }
+    // Paper end
+
 }
