Ticket.java

net.minecraft.server.level.Ticket

信息

  • 全限定名:net.minecraft.server.level.Ticket
  • 类型:public class
  • 包:net.minecraft.server.level
  • 源码路径:src/main/java/net/minecraft/server/level/Ticket.java
  • 起始行号:L10
  • 职责:

    TODO

字段/常量

  • CODEC

    • 类型: MapCodec<Ticket>
    • 修饰符: public static final
    • 源码定位: L11
    • 说明:

      TODO

  • type

    • 类型: TicketType
    • 修饰符: private final
    • 源码定位: L19
    • 说明:

      TODO

  • ticketLevel

    • 类型: int
    • 修饰符: private final
    • 源码定位: L20
    • 说明:

      TODO

  • ticksLeft

    • 类型: long
    • 修饰符: private
    • 源码定位: L21
    • 说明:

      TODO

内部类/嵌套类型

构造器

public Ticket(TicketType type, int ticketLevel) @ L23

  • 构造器名:Ticket
  • 源码定位:L23
  • 修饰符:public

参数:

  • type: TicketType
  • ticketLevel: int

说明:

TODO

private Ticket(TicketType type, int ticketLevel, long ticksLeft) @ L27

  • 构造器名:Ticket
  • 源码定位:L27
  • 修饰符:private

参数:

  • type: TicketType
  • ticketLevel: int
  • ticksLeft: long

说明:

TODO

方法

下面的方法块按源码顺序生成。

public String toString() @ L33

  • 方法名:toString
  • 源码定位:L33
  • 返回类型:String
  • 修饰符:public

参数:

说明:

TODO

public TicketType getType() @ L48

  • 方法名:getType
  • 源码定位:L48
  • 返回类型:TicketType
  • 修饰符:public

参数:

说明:

TODO

public int getTicketLevel() @ L52

  • 方法名:getTicketLevel
  • 源码定位:L52
  • 返回类型:int
  • 修饰符:public

参数:

说明:

TODO

public void resetTicksLeft() @ L56

  • 方法名:resetTicksLeft
  • 源码定位:L56
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

public void decreaseTicksLeft() @ L60

  • 方法名:decreaseTicksLeft
  • 源码定位:L60
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

public boolean isTimedOut() @ L66

  • 方法名:isTimedOut
  • 源码定位:L66
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

代码

public class Ticket {
    public static final MapCodec<Ticket> CODEC = RecordCodecBuilder.mapCodec(
        i -> i.group(
                BuiltInRegistries.TICKET_TYPE.byNameCodec().fieldOf("type").forGetter(Ticket::getType),
                ExtraCodecs.NON_NEGATIVE_INT.fieldOf("level").forGetter(Ticket::getTicketLevel),
                Codec.LONG.optionalFieldOf("ticks_left", 0L).forGetter(t -> t.ticksLeft)
            )
            .apply(i, Ticket::new)
    );
    private final TicketType type;
    private final int ticketLevel;
    private long ticksLeft;
 
    public Ticket(TicketType type, int ticketLevel) {
        this(type, ticketLevel, type.timeout());
    }
 
    private Ticket(TicketType type, int ticketLevel, long ticksLeft) {
        this.type = type;
        this.ticketLevel = ticketLevel;
        this.ticksLeft = ticksLeft;
    }
 
    @Override
    public String toString() {
        return this.type.hasTimeout()
            ? "Ticket["
                + Util.getRegisteredName(BuiltInRegistries.TICKET_TYPE, this.type)
                + " "
                + this.ticketLevel
                + "] with "
                + this.ticksLeft
                + " ticks left ( out of"
                + this.type.timeout()
                + ")"
            : "Ticket[" + Util.getRegisteredName(BuiltInRegistries.TICKET_TYPE, this.type) + " " + this.ticketLevel + "] with no timeout";
    }
 
    public TicketType getType() {
        return this.type;
    }
 
    public int getTicketLevel() {
        return this.ticketLevel;
    }
 
    public void resetTicksLeft() {
        this.ticksLeft = this.type.timeout();
    }
 
    public void decreaseTicksLeft() {
        if (this.type.hasTimeout()) {
            this.ticksLeft--;
        }
    }
 
    public boolean isTimedOut() {
        return this.type.hasTimeout() && this.ticksLeft < 0L;
    }
}

引用的其他类

  • TicketType

    • 引用位置: 参数/字段/返回值
  • Util

    • 引用位置: 方法调用
    • 关联成员: Util.getRegisteredName()