--- a/net/minecraft/util/random/WeightedList.java
+++ b/net/minecraft/util/random/WeightedList.java
@@ -13,14 +_,14 @@
 import net.minecraft.util.ExtraCodecs;
 import net.minecraft.util.RandomSource;
 
-public final class WeightedList<E> {
+public class WeightedList<E> { // Paper - non-final
     private static final int FLAT_THRESHOLD = 64;
     private final int totalWeight;
     private final List<Weighted<E>> items;
     @Nullable
     private final WeightedList.Selector<E> selector;
 
-    WeightedList(List<? extends Weighted<E>> items) {
+    protected WeightedList(List<? extends Weighted<E>> items) { // Paper - protected
         this.items = List.copyOf(items);
         this.totalWeight = WeightedRandom.getTotalWeight(items, Weighted::weight);
         if (this.totalWeight == 0) {
@@ -122,7 +_,7 @@
     }
 
     public static class Builder<E> {
-        private final ImmutableList.Builder<Weighted<E>> result = ImmutableList.builder();
+        protected final ImmutableList.Builder<Weighted<E>> result = ImmutableList.builder();
 
         public WeightedList.Builder<E> add(E element) {
             return this.add(element, 1);
