类net.minecraft.util.ITickable源码实例Demo

下面列出了怎么用net.minecraft.util.ITickable的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: GregTech   文件: PipeCoverableImplementation.java
public final boolean placeCoverOnSide(EnumFacing side, ItemStack itemStack, CoverDefinition coverDefinition) {
    Preconditions.checkNotNull(side, "side");
    Preconditions.checkNotNull(coverDefinition, "coverDefinition");
    CoverBehavior coverBehavior = coverDefinition.createCoverBehavior(this, side);
    if (!canPlaceCoverOnSide(side) || !coverBehavior.canAttach()) {
        return false;
    }
    //if cover requires ticking and we're not tickable, update ourselves and redirect call to new tickable tile entity
    boolean requiresTicking = coverBehavior instanceof ITickable;
    if (requiresTicking && !holder.supportsTicking()) {
        IPipeTile<?, ?> newHolderTile = holder.setSupportsTicking();
        return newHolderTile.getCoverableImplementation().placeCoverOnSide(side, itemStack, coverDefinition);
    }
    if (coverBehaviors[side.getIndex()] != null) {
        removeCover(side);
    }
    this.coverBehaviors[side.getIndex()] = coverBehavior;
    coverBehavior.onAttached(itemStack);
    writeCustomData(1, buffer -> {
        buffer.writeByte(side.getIndex());
        buffer.writeVarInt(CoverDefinition.getNetworkIdForCover(coverDefinition));
        coverBehavior.writeInitialSyncData(buffer);
    });
    if (!coverBehavior.canPipePassThrough()) {
        holder.setConnectionBlocked(AttachmentType.COVER, side, true);
    }
    holder.notifyBlockUpdate();
    holder.markAsDirty();
    return true;
}
 
源代码2 项目: GregTech   文件: PipeCoverableImplementation.java
public void update() {
    if (!getWorld().isRemote) {
        for (CoverBehavior coverBehavior : coverBehaviors) {
            if (coverBehavior instanceof ITickable) {
                ((ITickable) coverBehavior).update();
            }
        }
    }
}
 
源代码3 项目: VanillaFix   文件: MixinWorld.java
/**
 * @reason Adds subsections to the "root.tick.level.entities.blockEntities"
 * profiler, using the entity ID, or the class name if the ID is null.
 */
@Redirect(method = "updateEntities", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/ITickable;update()V"))
private void tileEntityUpdate(ITickable tileEntity) {
    profiler.func_194340_a(() -> { // func_194340_a = startSection(Supplier<String>)
        final ResourceLocation tileEntityID = TileEntity.getKey(((TileEntity) tileEntity).getClass());
        return tileEntityID == null ? tileEntity.getClass().getSimpleName() : tileEntityID.toString();
    });
    tileEntity.update();
    profiler.endSection();
}
 
源代码4 项目: GregTech   文件: TickableWorldPipeNet.java
public void update() {
    if (getWorld().getTotalWorldTime() % getUpdateRate() == 0L) {
        tickingPipeNets.forEach(ITickable::update);
    }
}
 
 类所在包
 类方法
 同包方法