@@ -0,0 +1,2619 @@
+package im.wma.Creepair;%0A%0Aimport java.util.ArrayList;%0Aimport org.bukkit.Effect;%0Aimport org.bukkit.Material;%0Aimport org.bukkit.block.Block;%0Aimport org.bukkit.entity.EntityType;%0Aimport org.bukkit.event.EventHandler;%0Aimport org.bukkit.event.Listener;%0Aimport org.bukkit.event.entity.EntityExplodeEvent;%0Aimport org.bukkit.plugin.java.JavaPlugin;%0A%0Apublic class Creepair extends JavaPlugin implements Listener %7B%0A    private final ArrayList%3CString%3E worlds = new ArrayList%3CString%3E();%0A    private int y;%0A    private RepairHelper helper;%0A%0A    @Override%0A    public void onEnable() %7B%0A        if (!this.getConfig().contains(%22config%22))%0A            this.getConfig().options().copyDefaults(true);%0A%0A        worlds.addAll(this.getConfig().getStringList(%22worlds%22));%0A        y = this.getConfig().getInt(%22above_y%22, 50);%0A%0A        this.helper = new RepairHelper();%0A        this.getServer().getScheduler().scheduleSyncRepeatingTask(this, this.helper, 10, 10);%0A%0A        this.getServer().getPluginManager().registerEvents(this, this);%0A    %7D%0A%0A    @EventHandler%0A    public void onEntityExplode(EntityExplodeEvent event) %7B%0A        if (!worlds.contains(event.getLocation().getWorld().getName()) %7C%7C event.getEntityType() != EntityType.CREEPER) %7B%0A            return;%0A        %7D%0A%0A        if (event.getLocation().getBlockY() %3E= y) %7B%0A            event.setYield(0F);%0A%0A            for (Block block : event.blockList()) %7B%0A                if (block.getType() == Material.GRASS %7C%7C block.getType() == Material.DIRT)%0A                    helper.add(new CreepairBlock(block, block.getType()));%0A            %7D%0A        %7D%0A    %7D%0A%0A    public class CreepairBlock %7B%0A        public Block block;%0A        public Material original;%0A%0A        public CreepairBlock(Block block, Material original) %7B%0A            this.block = block;%0A            this.original = original;%0A        %7D%0A    %7D%0A%0A    public class RepairHelper implements Runnable %7B%0A        private final ArrayList%3CCreepairBlock%3E blocks = new ArrayList%3CCreepairBlock%3E();%0A%0A        public void add(CreepairBlock block) %7B%0A            blocks.add(block);%0A        %7D%0A%0A        @Override%0A        public void run() %7B%0A            for (int i = 0; i %3C 5; i++) %7B%0A                if (blocks.size() == 0) %7B%0A                    return;%0A                %7D%0A%0A                if (blocks.get(0) != null) %7B%0A                    CreepairBlock block = blocks.get(0);%0A                    block.block.getLocation().getWorld().playEffect(block.block.getLocation(), Effect.STEP_SOUND, block.original.getId());%0A                    block.block.setType(block.original);%0A                    blocks.remove(0);%0A                %7D%0A            %7D%0A        %7D%0A    %7D%0A%0A%7D%0A

Create Creepair.java