SimpleGizmoCollector.java

net.minecraft.gizmos.SimpleGizmoCollector

信息

  • 全限定名:net.minecraft.gizmos.SimpleGizmoCollector
  • 类型:public class
  • 包:net.minecraft.gizmos
  • 源码路径:src/main/java/net/minecraft/gizmos/SimpleGizmoCollector.java
  • 起始行号:L9
  • 实现:GizmoCollector
  • 职责:

    TODO

字段/常量

  • gizmos

    • 类型: List<SimpleGizmoCollector.GizmoInstance>
    • 修饰符: private final
    • 源码定位: L10
    • 说明:

      TODO

  • temporaryGizmos

    • 类型: List<SimpleGizmoCollector.GizmoInstance>
    • 修饰符: private final
    • 源码定位: L11
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.gizmos.SimpleGizmoCollector.GizmoInstance
    • 类型: class
    • 修饰符: public static
    • 源码定位: L37
    • 说明:

      TODO

构造器

方法

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

public GizmoProperties add(Gizmo gizmo) @ L13

  • 方法名:add
  • 源码定位:L13
  • 返回类型:GizmoProperties
  • 修饰符:public

参数:

  • gizmo: Gizmo

说明:

TODO

public List<SimpleGizmoCollector.GizmoInstance> drainGizmos() @ L20

  • 方法名:drainGizmos
  • 源码定位:L20
  • 返回类型:List<SimpleGizmoCollector.GizmoInstance>
  • 修饰符:public

参数:

说明:

TODO

public List<SimpleGizmoCollector.GizmoInstance> getGizmos() @ L29

  • 方法名:getGizmos
  • 源码定位:L29
  • 返回类型:List<SimpleGizmoCollector.GizmoInstance>
  • 修饰符:public

参数:

说明:

TODO

public void addTemporaryGizmos(Collection<SimpleGizmoCollector.GizmoInstance> gizmos) @ L33

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

参数:

  • gizmos: Collection<SimpleGizmoCollector.GizmoInstance>

说明:

TODO

代码

public class SimpleGizmoCollector implements GizmoCollector {
    private final List<SimpleGizmoCollector.GizmoInstance> gizmos = new ArrayList<>();
    private final List<SimpleGizmoCollector.GizmoInstance> temporaryGizmos = new ArrayList<>();
 
    @Override
    public GizmoProperties add(Gizmo gizmo) {
        SimpleGizmoCollector.GizmoInstance instance = new SimpleGizmoCollector.GizmoInstance(gizmo);
        this.gizmos.add(instance);
        return instance;
    }
 
    public List<SimpleGizmoCollector.GizmoInstance> drainGizmos() {
        ArrayList<SimpleGizmoCollector.GizmoInstance> result = new ArrayList<>(this.gizmos);
        result.addAll(this.temporaryGizmos);
        long currentMillis = Util.getMillis();
        this.gizmos.removeIf(gizmo -> gizmo.getExpireTimeMillis() < currentMillis);
        this.temporaryGizmos.clear();
        return result;
    }
 
    public List<SimpleGizmoCollector.GizmoInstance> getGizmos() {
        return this.gizmos;
    }
 
    public void addTemporaryGizmos(Collection<SimpleGizmoCollector.GizmoInstance> gizmos) {
        this.temporaryGizmos.addAll(gizmos);
    }
 
    public static class GizmoInstance implements GizmoProperties {
        private final Gizmo gizmo;
        private boolean isAlwaysOnTop;
        private long startTimeMillis;
        private long expireTimeMillis;
        private boolean shouldFadeOut;
 
        private GizmoInstance(Gizmo gizmo) {
            this.gizmo = gizmo;
        }
 
        @Override
        public GizmoProperties setAlwaysOnTop() {
            this.isAlwaysOnTop = true;
            return this;
        }
 
        @Override
        public GizmoProperties persistForMillis(int milliseconds) {
            this.startTimeMillis = Util.getMillis();
            this.expireTimeMillis = this.startTimeMillis + milliseconds;
            return this;
        }
 
        @Override
        public GizmoProperties fadeOut() {
            this.shouldFadeOut = true;
            return this;
        }
 
        public float getAlphaMultiplier(long currentMillis) {
            if (this.shouldFadeOut) {
                long duration = this.expireTimeMillis - this.startTimeMillis;
                long timeSinceStart = currentMillis - this.startTimeMillis;
                return 1.0F - Mth.clamp((float)timeSinceStart / (float)duration, 0.0F, 1.0F);
            } else {
                return 1.0F;
            }
        }
 
        public boolean isAlwaysOnTop() {
            return this.isAlwaysOnTop;
        }
 
        public long getExpireTimeMillis() {
            return this.expireTimeMillis;
        }
 
        public Gizmo gizmo() {
            return this.gizmo;
        }
    }
}

引用的其他类

  • Gizmo

    • 引用位置: 参数
  • GizmoCollector

    • 引用位置: 实现
  • GizmoProperties

    • 引用位置: 返回值
  • Mth

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

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