<commit_before>#pragma once
#ifndef BLOCK_H
#define BLOCK_H

class Block
{
    public:
        Block() {};
        virtual Block *newBlock() {};
        
        char faces; // Faces to render (using 6 bits)
        char Type;
        int DamageTaken;
        int DamageThreshold;
};

class AirBlock: public Block
{
public:
    AirBlock() : DamageTaken(0), faces(0x3F), Type(0), DamageThreshold(-1) {};

    AirBlock *newBlock()
    {
        return new AirBlock();
    }

    char faces;
    int DamageTaken;
    char Type;
    int DamageThreshold;
};

class StoneBlock: public Block
{
    public:

        StoneBlock() : DamageTaken(0), faces(0x3F), Type(1), DamageThreshold(50) {};

        StoneBlock *newBlock()
        {
            return new StoneBlock();
        }
        
        char faces;
        char Type;
        int DamageTaken;
        int DamageThreshold;
};

class DirtBlock: public Block
{
    public:

        DirtBlock() : DamageTaken(0), faces(0x3F), Type(2), DamageThreshold(10) {};

        DirtBlock *newBlock()
        {
            return new DirtBlock();
        }
        
        char faces;
        char Type;
        int DamageTaken;
        int DamageThreshold;
};

class GrassBlock: public Block
{
    public:

        GrassBlock() : DamageTaken(0), faces(0x3F), Type(3), DamageThreshold(15) {};

        GrassBlock *newBlock()
        {
            return new GrassBlock();
        }
        
        char faces;
        char Type;
        int DamageTaken;
        int DamageThreshold;
};
#endif<commit_msg>Here, have some better OOP.<commit_after>#pragma once
#ifndef BLOCK_H
#define BLOCK_H

class Block
{
    public:
        Block(char Type = 0, int DamageTaken = 0, int DamageThreshold = 0) : Type(Type), faces(0x3F), DamageTaken(DamageTaken), DamageThreshold(DamageThreshold) {};
        virtual Block *newBlock() {};
        
        char Type;
        char faces;
        int DamageTaken;
        int DamageThreshold;
};

class AirBlock: public Block
{
    public:
        AirBlock() : Block(0) {};

        AirBlock *newBlock()
        {
            return new AirBlock();
        }
};

class StoneBlock: public Block
{
    public:
        StoneBlock() : Block(1, 0, 50) {};

        StoneBlock *newBlock()
        {
            return new StoneBlock();
        }
};

class DirtBlock: public Block
{
    public:
        DirtBlock() : Block(2, 0, 10) {};

        DirtBlock *newBlock()
        {
            return new DirtBlock();
        }
};

class GrassBlock: public Block
{
    public:
        GrassBlock() : Block(3, 0, 15) {};

        GrassBlock *newBlock()
        {
            return new GrassBlock();
        }
};

#endif
{'fraction_non_alphanumeric': 0.11277072442120986, 'fraction_numerical': 0.01568334578043316, 'mean_word_length': 1.9119565217391303, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3776088', 'n_tokens_mistral': 855, 'n_tokens_neox': 794, 'n_words': 211}