--- a/net/minecraft/world/level/storage/loot/predicates/ExplosionCondition.java
+++ b/net/minecraft/world/level/storage/loot/predicates/ExplosionCondition.java
@@ -9,11 +9,11 @@
 import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
 
 public class ExplosionCondition implements LootItemCondition {
+
     private static final ExplosionCondition INSTANCE = new ExplosionCondition();
-    public static final MapCodec<ExplosionCondition> CODEC = MapCodec.unit(INSTANCE);
+    public static final MapCodec<ExplosionCondition> CODEC = MapCodec.unit(ExplosionCondition.INSTANCE);
 
-    private ExplosionCondition() {
-    }
+    private ExplosionCondition() {}
 
     @Override
     public LootItemConditionType getType() {
@@ -25,19 +25,23 @@
         return ImmutableSet.of(LootContextParams.EXPLOSION_RADIUS);
     }
 
-    @Override
-    public boolean test(LootContext lootContext) {
-        Float float_ = lootContext.getParamOrNull(LootContextParams.EXPLOSION_RADIUS);
-        if (float_ != null) {
-            RandomSource randomSource = lootContext.getRandom();
-            float f = 1.0F / float_;
-            return randomSource.nextFloat() <= f;
+    public boolean test(LootContext loottableinfo) {
+        Float ofloat = (Float) loottableinfo.getParamOrNull(LootContextParams.EXPLOSION_RADIUS);
+
+        if (ofloat != null) {
+            RandomSource randomsource = loottableinfo.getRandom();
+            float f = 1.0F / ofloat;
+
+            // CraftBukkit - <= to < to allow for plugins to completely disable block drops from explosions
+            return randomsource.nextFloat() < f;
         } else {
             return true;
         }
     }
 
     public static LootItemCondition.Builder survivesExplosion() {
-        return () -> INSTANCE;
+        return () -> {
+            return ExplosionCondition.INSTANCE;
+        };
     }
 }
