Skip to content

Commit

Permalink
Make the arcane bore place lights if given a pickaxe with lamplighter (
Browse files Browse the repository at this point in the history
  • Loading branch information
TheCodex6824 committed Aug 21, 2024
1 parent 2e196c7 commit b8ca14c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,12 @@
import net.minecraftforge.fml.common.eventhandler.Event.Result;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import thaumcraft.api.blocks.BlocksTC;
import thaumcraft.client.renderers.models.gear.ModelCustomArmor;
import thaumcraft.common.config.ModConfig;
import thaumcraft.common.entities.EntityFluxRift;
import thaumcraft.common.entities.construct.EntityArcaneBore;
import thaumcraft.common.lib.enchantment.EnumInfusionEnchantment;
import thaumcraft.common.lib.utils.Utils;
import thecodex6824.coremodlib.FieldAccessType;
import thecodex6824.coremodlib.FieldDefinition;
Expand Down Expand Up @@ -188,10 +190,17 @@ public static FakePlayer makeBoreFakePlayer(FakePlayer original) {
return original;
}

public static boolean isBoreTargetAir(World world, BlockPos target, boolean original) {
public static boolean isBoreTargetAir(World world, BlockPos target, boolean original, EntityArcaneBore bore) {
// TC calls setBlockToAir and checks the return value, expecting it to be true (block set to air)
// however, the block was already set to air, so it returns false
return world.isAirBlock(target);
boolean air = world.isAirBlock(target);
if (air && world.getLight(target) < 8 && EnumInfusionEnchantment.getInfusionEnchantmentLevel(
bore.getHeldItemMainhand(), EnumInfusionEnchantment.LAMPLIGHT) > 0) {

world.setBlockState(target, BlocksTC.effectGlimmer.getDefaultState());
}

return air;
}

public static int modSpiral(int old, EntityArcaneBore bore) {
Expand Down Expand Up @@ -417,7 +426,7 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
makeEntityProcessInteractTransformer("thaumcraft/common/entities/construct/EntityTurretCrossbowAdvanced");

public static final Supplier<ITransformer> BORE_PROCESS_INTERACT_DEAD =
makeEntityProcessInteractTransformer("thaumcraft/common/entities/construct/EntityArcaneBore");
makeEntityProcessInteractTransformer(Types.ENTITY_ARCANE_BORE.getInternalName());

public static final Supplier<ITransformer> CROSSBOW_PROCESS_INTERACT_DEAD =
makeEntityProcessInteractTransformer("thaumcraft/common/entities/construct/EntityTurretCrossbow");
Expand Down Expand Up @@ -549,7 +558,7 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
return new GenericStateMachineTransformer(
PatchStateMachine.builder(
new MethodDefinition(
"thaumcraft/common/entities/construct/EntityArcaneBore",
Types.ENTITY_ARCANE_BORE.getInternalName(),
false,
"dig",
Type.BOOLEAN_TYPE
Expand All @@ -565,10 +574,12 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
.insertInstructionsSurrounding()
.before(new InsnNode(Opcodes.DUP2))
.after(
new VarInsnNode(Opcodes.ALOAD, 0),
new MethodInsnNode(Opcodes.INVOKESTATIC,
HOOKS_COMMON,
"isBoreTargetAir",
Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Types.WORLD, Types.BLOCK_POS, Type.BOOLEAN_TYPE),
Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Types.WORLD, Types.BLOCK_POS,
Type.BOOLEAN_TYPE, Types.ENTITY_ARCANE_BORE),
false
)
)
Expand All @@ -581,7 +592,7 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
return new GenericStateMachineTransformer(
PatchStateMachine.builder(
new MethodDefinition(
"thaumcraft/common/entities/construct/EntityArcaneBore",
Types.ENTITY_ARCANE_BORE.getInternalName(),
false,
"dig",
Type.BOOLEAN_TYPE
Expand Down Expand Up @@ -644,7 +655,7 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
return new GenericStateMachineTransformer(
PatchStateMachine.builder(
new MethodDefinition(
"thaumcraft/common/entities/construct/EntityArcaneBore",
Types.ENTITY_ARCANE_BORE.getInternalName(),
false,
"findNextBlockToDig",
Type.VOID_TYPE
Expand All @@ -663,14 +674,14 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
new MethodInsnNode(Opcodes.INVOKESTATIC,
HOOKS_COMMON,
"getFixedDistanceSq",
Type.getMethodDescriptor(Type.DOUBLE_TYPE, Type.getType("Lthaumcraft/common/entities/construct/EntityArcaneBore;"),
Type.getMethodDescriptor(Type.DOUBLE_TYPE, Types.ENTITY_ARCANE_BORE,
Types.BLOCK_POS, Type.DOUBLE_TYPE),
false
)
)
.endAction()
.findNextFieldAccess(new FieldDefinition(
"thaumcraft/common/entities/construct/EntityArcaneBore",
Types.ENTITY_ARCANE_BORE.getInternalName(),
"spiral",
Type.INT_TYPE
), FieldAccessType.STORE)
Expand All @@ -680,7 +691,7 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
HOOKS_COMMON,
"modSpiral",
Type.getMethodDescriptor(Type.INT_TYPE, Type.INT_TYPE,
Type.getType("Lthaumcraft/common/entities/construct/EntityArcaneBore;")),
Types.ENTITY_ARCANE_BORE),
false
)
)
Expand All @@ -704,7 +715,7 @@ private static Supplier<ITransformer> makeEntityProcessInteractTransformer(Strin
HOOKS_COMMON,
"modRotation",
Type.getMethodDescriptor(Types.VEC_3D, Types.VEC_3D,
Type.getType("Lthaumcraft/common/entities/construct/EntityArcaneBore;")),
Types.ENTITY_ARCANE_BORE),
false
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,11 @@ private Types() {}
public static final Type WORLD = Type.getType("Lnet/minecraft/world/World;");
public static final Type WORLD_SERVER = Type.getType("Lnet/minecraft/world/WorldServer;");

public static final Type SUBSCRIBE_EVENT = Type.getType("Lnet/minecraftforge/fml/common/eventhandler/SubscribeEvent;");
public static final Type EVENT_PRIORITY = Type.getType("Lnet/minecraftforge/fml/common/eventhandler/EventPriority;");

public static final Type TEXTURE_ATLAS_SPRITE = Type.getType("Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;");

public static final Type ASPECT = Type.getType("Lthaumcraft/api/aspects/Aspect;");
public static final Type ASPECT_LIST = Type.getType("Lthaumcraft/api/aspects/AspectList;");

Expand All @@ -101,9 +106,6 @@ private Types() {}

public static final Type RESEARCH_TABLE_DATA = Type.getType("Lthaumcraft/api/research/theorycraft/ResearchTableData;");

public static final Type SUBSCRIBE_EVENT = Type.getType("Lnet/minecraftforge/fml/common/eventhandler/SubscribeEvent;");
public static final Type EVENT_PRIORITY = Type.getType("Lnet/minecraftforge/fml/common/eventhandler/EventPriority;");

public static final Type TEXTURE_ATLAS_SPRITE = Type.getType("Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;");
public static final Type ENTITY_ARCANE_BORE = Type.getType("Lthaumcraft/common/entities/construct/EntityArcaneBore;");

}

0 comments on commit b8ca14c

Please sign in to comment.