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!
This commit is contained in:
Electroblob77
2019-08-18 00:04:18 +01:00
parent 2680d02304
commit f37812be3e
1564 changed files with 47652 additions and 12984 deletions
@@ -0,0 +1,39 @@
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;
}
}