--- a/net/minecraft/server/level/Ticket.java
+++ b/net/minecraft/server/level/Ticket.java
@@ -14,17 +_,36 @@
                 ExtraCodecs.NON_NEGATIVE_INT.fieldOf("level").forGetter(Ticket::getTicketLevel),
                 Codec.LONG.optionalFieldOf("ticks_left", 0L).forGetter(ticket -> ticket.ticksLeft)
             )
-            .apply(instance, Ticket::new)
+            .apply(instance, (type, level, ticks) -> new Ticket(type, level.intValue(), ticks.longValue())) // Paper - add identifier
     );
     private final TicketType type;
     private final int ticketLevel;
     private long ticksLeft;
+    // Paper start - add identifier
+    private Object identifier;
+
+    public Object getIdentifier() {
+        return this.identifier;
+    }
+    // Paper end - add identifier
+
 
     public Ticket(TicketType type, int ticketLevel) {
-        this(type, ticketLevel, type.timeout());
+        // Paper start - add identifier
+        this(type, ticketLevel, null);
+    }
+    public Ticket(TicketType type, int ticketLevel, Object identifier) {
+        this(type, ticketLevel, type.timeout(), identifier);
+        // Paper end - add identifier
     }
 
     private Ticket(TicketType type, int ticketLevel, long ticksLeft) {
+        // Paper start - add identifier
+        this(type, ticketLevel, ticksLeft, null);
+    }
+    private Ticket(TicketType type, int ticketLevel, long ticksLeft, Object identifier) {
+        this.identifier = identifier;
+        // Paper end - add identifier
         this.type = type;
         this.ticketLevel = ticketLevel;
         this.ticksLeft = ticksLeft;
