<commit_before>package net.wizardsoflua.lua.classes.scan;

import com.google.auto.service.AutoService;

import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.wizardsoflua.lua.classes.DeclareLuaClass;
import net.wizardsoflua.lua.classes.DelegatorLuaClass;
import net.wizardsoflua.lua.classes.common.LuaInstance;
import net.wizardsoflua.lua.classes.spi.DeclaredLuaClass;

@AutoService(DeclaredLuaClass.class)
@DeclareLuaClass (name = BlockHitClass.NAME)
public class BlockHitClass
    extends DelegatorLuaClass<RayTraceResult, BlockHitClass.Proxy<RayTraceResult>> {
  public static final String NAME = "BlockHit";

  @Override
  public Proxy<RayTraceResult> toLua(RayTraceResult javaObj) {
    return new Proxy<>(this, javaObj);
  }

  public static class Proxy<D extends RayTraceResult> extends LuaInstance<D> {
    public Proxy(DelegatorLuaClass<?, ?> luaClass, D delegate) {
      super(luaClass, delegate);
      addImmutable("hitVec", getConverters().toLuaNullable(delegate.hitVec));
      addImmutable("pos", getConverters().toLuaNullable(new Vec3d(delegate.getBlockPos())));
      addImmutable("sideHit", getConverters().toLuaNullable(delegate.sideHit));
    }

    @Override
    public boolean isTransferable() {
      return true;
    }
  }
}
<commit_msg>Update BlockHitClass to architecture 3<commit_after>package net.wizardsoflua.lua.classes.scan;

import com.google.auto.service.AutoService;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.sandius.rembulan.Table;
import net.wizardsoflua.annotation.GenerateLuaClassTable;
import net.wizardsoflua.annotation.GenerateLuaDoc;
import net.wizardsoflua.annotation.GenerateLuaInstanceTable;
import net.wizardsoflua.annotation.LuaProperty;
import net.wizardsoflua.extension.api.inject.Resource;
import net.wizardsoflua.extension.spell.api.resource.LuaConverters;
import net.wizardsoflua.extension.spell.spi.LuaConverter;
import net.wizardsoflua.lua.classes.LuaInstance;
import net.wizardsoflua.lua.classes.common.Delegator;
import net.wizardsoflua.lua.extension.util.BasicLuaClass;
import net.wizardsoflua.lua.extension.util.LuaClassAttributes;

@AutoService(LuaConverter.class)
@LuaClassAttributes(name = BlockHitClass.NAME)
@GenerateLuaClassTable(instance = BlockHitClass.Instance.class)
@GenerateLuaDoc(subtitle = "What Lies in View")
public class BlockHitClass extends BasicLuaClass<RayTraceResult, BlockHitClass.Instance<?>> {
  public static final String NAME = "BlockHit";
  @Resource
  private LuaConverters converters;

  @Override
  protected Table createRawTable() {
    return new BlockHitClassTable<>(this, converters);
  }

  @Override
  protected Delegator<Instance<?>> toLuaInstance(RayTraceResult javaInstance) {
    return new BlockHitClassInstanceTable<>(new Instance<>(javaInstance), getTable(), converters);
  }

  @GenerateLuaInstanceTable
  public static class Instance<D extends RayTraceResult> extends LuaInstance<D> {
    public Instance(D delegate) {
      super(delegate);
    }

    @LuaProperty
    public Vec3d getHitVec() {
      return delegate.hitVec;
    }

    @LuaProperty
    public BlockPos getPos() {
      return delegate.getBlockPos();
    }

    @LuaProperty
    public EnumFacing getSideHit() {
      return delegate.sideHit;
    }
  }
}

{'fraction_non_alphanumeric': 0.10167499265354099, 'fraction_numerical': 0.0014692918013517484, 'mean_word_length': 5.459203036053131, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, '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': '1694110', 'n_tokens_mistral': 1088, 'n_tokens_neox': 1090, 'n_words': 185}