mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-25 09:59:20 +00:00
修改方法匹配写法
This commit is contained in:
@@ -109,44 +109,18 @@ public final class BlockGenerator {
|
||||
.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$onPlace))
|
||||
.intercept(MethodDelegation.to(OnPlaceInterceptor.INSTANCE))
|
||||
// onBrokenAfterFall
|
||||
.method(ElementMatchers.takesArguments(3)
|
||||
.and(ElementMatchers.takesArgument(0, CoreReflections.clazz$Level))
|
||||
.and(ElementMatchers.takesArgument(1, CoreReflections.clazz$BlockPos))
|
||||
.and(ElementMatchers.takesArgument(2, CoreReflections.clazz$FallingBlockEntity))
|
||||
)
|
||||
.method(ElementMatchers.is(CoreReflections.method$Fallable$onBrokenAfterFall))
|
||||
.intercept(MethodDelegation.to(OnBrokenAfterFallInterceptor.INSTANCE))
|
||||
// onLand
|
||||
.method(ElementMatchers.takesArguments(5)
|
||||
.and(ElementMatchers.takesArgument(0, CoreReflections.clazz$Level))
|
||||
.and(ElementMatchers.takesArgument(1, CoreReflections.clazz$BlockPos))
|
||||
.and(ElementMatchers.takesArgument(2, CoreReflections.clazz$BlockState))
|
||||
.and(ElementMatchers.takesArgument(3, CoreReflections.clazz$BlockState))
|
||||
.and(ElementMatchers.takesArgument(4, CoreReflections.clazz$FallingBlockEntity))
|
||||
)
|
||||
.method(ElementMatchers.is(CoreReflections.method$Fallable$onLand))
|
||||
.intercept(MethodDelegation.to(OnLandInterceptor.INSTANCE))
|
||||
// canSurvive
|
||||
.method(ElementMatchers.takesArguments(3)
|
||||
.and(ElementMatchers.takesArgument(0, CoreReflections.clazz$BlockState))
|
||||
.and(ElementMatchers.takesArgument(1, CoreReflections.clazz$LevelReader))
|
||||
.and(ElementMatchers.takesArgument(2, CoreReflections.clazz$BlockPos))
|
||||
.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$canSurvive)
|
||||
)
|
||||
.intercept(MethodDelegation.to(CanSurviveInterceptor.INSTANCE))
|
||||
// updateShape
|
||||
.method(ElementMatchers.returns(CoreReflections.clazz$BlockState)
|
||||
.and(ElementMatchers.takesArgument(0, CoreReflections.clazz$BlockState))
|
||||
// LevelReader 1.21.3+ // 1.20-1.12.2
|
||||
.and(ElementMatchers.takesArgument(1, CoreReflections.clazz$LevelReader).or(ElementMatchers.takesArgument(1, CoreReflections.clazz$Direction)))
|
||||
.and(ElementMatchers.named("updateShape").or(ElementMatchers.named("a"))))
|
||||
.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$updateShape))
|
||||
.intercept(MethodDelegation.to(UpdateShapeInterceptor.INSTANCE))
|
||||
// onExplosionHit 1.21+
|
||||
.method(ElementMatchers.returns(void.class)
|
||||
.and(ElementMatchers.takesArgument(0, CoreReflections.clazz$BlockState))
|
||||
.and(ElementMatchers.takesArgument(1, VersionHelper.isOrAbove1_21_2() ? CoreReflections.clazz$ServerLevel : CoreReflections.clazz$Level))
|
||||
.and(ElementMatchers.takesArgument(2, CoreReflections.clazz$BlockPos))
|
||||
.and(ElementMatchers.takesArgument(3, CoreReflections.clazz$Explosion))
|
||||
.and(ElementMatchers.takesArgument(4, BiConsumer.class))
|
||||
)
|
||||
.intercept(MethodDelegation.to(OnExplosionHitInterceptor.INSTANCE))
|
||||
// neighborChanged
|
||||
.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$neighborChanged))
|
||||
.intercept(MethodDelegation.to(NeighborChangedInterceptor.INSTANCE))
|
||||
@@ -177,15 +151,21 @@ public final class BlockGenerator {
|
||||
// spawnAfterBreak
|
||||
.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$spawnAfterBreak))
|
||||
.intercept(MethodDelegation.to(SpawnAfterBreakInterceptor.INSTANCE));
|
||||
// 1.21.5+
|
||||
if (CoreReflections.method$BlockBehaviour$affectNeighborsAfterRemoval != null) {
|
||||
builder = builder.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$affectNeighborsAfterRemoval))
|
||||
.intercept(MethodDelegation.to(AffectNeighborsAfterRemovalInterceptor.INSTANCE));
|
||||
}
|
||||
// 1.20-1.21.4
|
||||
if (CoreReflections.method$BlockBehaviour$onRemove != null) {
|
||||
builder = builder.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$onRemove))
|
||||
.intercept(MethodDelegation.to(OnRemoveInterceptor.INSTANCE));
|
||||
}
|
||||
|
||||
// 1.21+
|
||||
if (CoreReflections.method$BlockBehaviour$onExplosionHit != null) {
|
||||
builder = builder.method(ElementMatchers.is(CoreReflections.method$BlockBehaviour$onExplosionHit))
|
||||
.intercept(MethodDelegation.to(OnExplosionHitInterceptor.INSTANCE));
|
||||
}
|
||||
Class<?> clazz$CraftEngineBlock = builder.make().load(BlockGenerator.class.getClassLoader()).getLoaded();
|
||||
constructor$CraftEngineBlock = MethodHandles.publicLookup().in(clazz$CraftEngineBlock)
|
||||
.findConstructor(clazz$CraftEngineBlock, MethodType.methodType(void.class, CoreReflections.clazz$BlockBehaviour$Properties))
|
||||
|
||||
@@ -1181,6 +1181,17 @@ public final class CoreReflections {
|
||||
)
|
||||
);
|
||||
|
||||
public static final Class<?> clazz$ServerLevel = requireNonNull(
|
||||
BukkitReflectionUtils.findReobfOrMojmapClass(
|
||||
"server.level.WorldServer",
|
||||
"server.level.ServerLevel"
|
||||
)
|
||||
);
|
||||
|
||||
public static final Class<?> clazz$Explosion = requireNonNull(
|
||||
ReflectionUtils.getClazz(BukkitReflectionUtils.assembleMCClass("world.level.Explosion"))
|
||||
);
|
||||
|
||||
public static final Constructor<?> constructor$StateDefinition$Builder = requireNonNull(
|
||||
ReflectionUtils.getTheOnlyConstructor(clazz$StateDefinition$Builder)
|
||||
);
|
||||
@@ -1663,6 +1674,15 @@ public final class CoreReflections {
|
||||
ReflectionUtils.getDeclaredMethod(clazz$BlockBehaviour, clazz$BlockState, clazz$BlockState, clazz$Direction, clazz$BlockState, clazz$LevelAccessor, clazz$BlockPos, clazz$BlockPos)
|
||||
);
|
||||
|
||||
public static final Method method$BlockBehaviour$canSurvive = requireNonNull(
|
||||
ReflectionUtils.getDeclaredMethod(clazz$BlockBehaviour, boolean.class, clazz$BlockState, clazz$LevelReader, clazz$BlockPos)
|
||||
);
|
||||
|
||||
public static final Method method$BlockBehaviour$onExplosionHit = MiscUtils.requireNonNullIf(
|
||||
ReflectionUtils.getDeclaredMethod(clazz$BlockBehaviour, void.class, clazz$BlockState, VersionHelper.isOrAbove1_21_2() ? clazz$ServerLevel : clazz$Level, clazz$BlockPos, clazz$Explosion, BiConsumer.class),
|
||||
VersionHelper.isOrAbove1_21()
|
||||
);
|
||||
|
||||
public static final Class<?> clazz$Fallable = requireNonNull(
|
||||
ReflectionUtils.getClazz(BukkitReflectionUtils.assembleMCClass("world.level.block.Fallable"))
|
||||
);
|
||||
@@ -1685,6 +1705,14 @@ public final class CoreReflections {
|
||||
)
|
||||
);
|
||||
|
||||
public static final Method method$Fallable$onLand = requireNonNull(
|
||||
ReflectionUtils.getMethod(clazz$Fallable, void.class, clazz$Level, clazz$BlockPos, clazz$BlockState, clazz$BlockState, clazz$FallingBlockEntity)
|
||||
);
|
||||
|
||||
public static final Method method$Fallable$onBrokenAfterFall = requireNonNull(
|
||||
ReflectionUtils.getMethod(clazz$Fallable, void.class, clazz$Level, clazz$BlockPos, clazz$FallingBlockEntity)
|
||||
);
|
||||
|
||||
public static final Method method$FallingBlockEntity$fall = requireNonNull(
|
||||
ReflectionUtils.getStaticMethod(clazz$FallingBlockEntity, clazz$FallingBlockEntity, clazz$Level, clazz$BlockPos, clazz$BlockState)
|
||||
);
|
||||
@@ -2969,13 +2997,6 @@ public final class CoreReflections {
|
||||
ReflectionUtils.getInstanceDeclaredField(clazz$ServerPlayer, clazz$ServerGamePacketListenerImpl, 0)
|
||||
);
|
||||
|
||||
public static final Class<?> clazz$ServerLevel = requireNonNull(
|
||||
BukkitReflectionUtils.findReobfOrMojmapClass(
|
||||
"server.level.WorldServer",
|
||||
"server.level.ServerLevel"
|
||||
)
|
||||
);
|
||||
|
||||
public static final Method method$ServerLevel$getNoiseBiome = requireNonNull(
|
||||
ReflectionUtils.getMethod(clazz$ServerLevel, clazz$Holder, int.class, int.class, int.class)
|
||||
);
|
||||
@@ -3620,12 +3641,6 @@ public final class CoreReflections {
|
||||
)
|
||||
);
|
||||
|
||||
public static final Class<?> clazz$Explosion = requireNonNull(
|
||||
ReflectionUtils.getClazz(
|
||||
BukkitReflectionUtils.assembleMCClass("world.level.Explosion")
|
||||
)
|
||||
);
|
||||
|
||||
// 1.20.5+
|
||||
public static final Field field$ItemStack$CODEC = ReflectionUtils.getDeclaredField(clazz$ItemStack, "CODEC", "b");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user