Files
Wizardry/src/main/java/electroblob/wizardry/worldgen/MultiTemplateProcessor.java
T
Electroblob77 f37812be3e That's one heck of a commit you've got there...
I may have got a bit behind with version control. A lot behind, in fact. Maybe I'll go back and split this sometime - then again, I probably won't. But hey, at least it's here!
2019-08-18 00:04:18 +01:00

39 lines
1.5 KiB
Java

package electroblob.wizardry.worldgen;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.gen.structure.template.ITemplateProcessor;
import net.minecraft.world.gen.structure.template.Template;
import javax.annotation.Nullable;
/** Structure template processor that allows multiple processors to be run in order. */
public class MultiTemplateProcessor implements ITemplateProcessor {
private final ITemplateProcessor[] processors;
private final boolean stopWhenNull;
/**
* Creates a new {@code MultiTemplateProcessor} which applies the given processors in order.
* @param stopWhenNull True to skip any remaining processors in the sequence if one of them returns null, false to
* process them all regardless. If this is false, you should ensure all the given processors
* accept null {@link net.minecraft.world.gen.structure.template.Template.BlockInfo} arguments.
* @param processors The processors to be run, in order (i.e. the first one given will be applied first).
*/
public MultiTemplateProcessor(boolean stopWhenNull, ITemplateProcessor... processors){
this.processors = processors;
this.stopWhenNull = stopWhenNull;
}
@Nullable
@Override
public Template.BlockInfo processBlock(World world, BlockPos pos, Template.BlockInfo info){
for(ITemplateProcessor processor : processors){
info = processor.processBlock(world, pos, info);
if(stopWhenNull && info == null) break;
}
return info;
}
}