package com.gtnewhorizon.structurelib.structure; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import java.util.function.Function; class LazyStructureElement implements IStructureElementDeferred { private Function> to; private IStructureElement elem; public LazyStructureElement(Function> to) { this.to = to; } private IStructureElement get(T t) { if (to != null) { elem = to.apply(t); to = null; } return elem; } @Override public boolean check(T t, World world, int x, int y, int z) { return get(t).check(t, world, x, y, z); } @Override public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { return get(t).placeBlock(t, world, x, y, z, trigger); } @Override public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { return get(t).spawnHint(t, world, x, y, z, trigger); } }