mirror of
https://github.com/GTNewHorizons/StructureLib.git
synced 2026-11-12 00:07:27 +00:00
41 lines
1013 B
Java
41 lines
1013 B
Java
package com.gtnewhorizon.structurelib.structure;
|
|||
|
|
|
||
|
|
import net.minecraft.item.ItemStack;
|
||
|
|
import net.minecraft.world.World;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Use StructureUtility to instantiate
|
||
|
|
*/
|
||
|
|
public interface IStructureElementChain<T> extends IStructureElement<T> {
|
||
|
|
IStructureElement<T>[] fallbacks();
|
||
|
|
|
||
|
|
@Override
|
||
|
|
default boolean check(T t, World world, int x, int y, int z) {
|
||
|
|
for (IStructureElement<T> fallback : fallbacks()) {
|
||
|
|
if (fallback.check(t, world, x, y, z)) {
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
@Override
|
||
|
|
default boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
|
||
|
|
for (IStructureElement<T> fallback : fallbacks()) {
|
||
|
|
if (fallback.spawnHint(t, world, x, y, z, trigger)) {
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
@Override
|
||
|
|
default boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
|
||
|
|
for (IStructureElement<T> fallback : fallbacks()) {
|
||
|
|
if (fallback.placeBlock(t, world, x, y, z, trigger)) {
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|