12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package me.km.effects;
- import me.km.KajetansMod;
- import java.util.ArrayList;
- import java.util.function.Consumer;
- import me.km.api.Location;
- import net.minecraft.block.Block;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.World;
- public class EffectBlockChanger
- {
- private final World w;
- private final ArrayList<ChangeBlock> list;
-
- public EffectBlockChanger(World w)
- {
- this.w = w;
- list = new ArrayList<>();
- }
-
- public void addBlock(BlockPos pos, Block b, int s)
- {
- if(w.isAirBlock(pos))
- {
- list.add(new ChangeBlock(pos, b, s));
- }
- }
-
- public void addBlock(BlockPos pos, Block b)
- {
- addBlock(pos, b, 0);
- }
-
- public void run(int clean)
- {
- list.forEach(c -> c.run());
- KajetansMod.scheduler.scheduleTask(() -> list.forEach(c -> c.clear()), clean);
- }
-
- public World getWorld()
- {
- return w;
- }
-
- public void forEachLocation(Consumer<? super Location> c)
- {
- list.stream().map(l -> new Location(w, l.pos)).forEach(c);
- }
-
- private class ChangeBlock
- {
- private BlockPos pos;
- private IBlockState state;
- public ChangeBlock(BlockPos pos, Block b, int s)
- {
- if(s != 0)
- {
- this.state = b.getStateFromMeta(s);
- }
- else
- {
- this.state = b.getDefaultState();
- }
- this.pos = pos;
- }
- public ChangeBlock(BlockPos pos, Block b)
- {
- this(pos, b, 0);
- }
- public void run()
- {
- w.setBlockState(pos, state);
- }
- public void clear()
- {
- w.setBlockToAir(pos);
- }
- }
- }
|