Skip to content

Commit

Permalink
Merge pull request #8 from KatatsumuriPan/develop
Browse files Browse the repository at this point in the history
Update to v1.6.0
  • Loading branch information
KatatsumuriPan authored Dec 9, 2023
2 parents 2d2610a + ebd9d93 commit 0633b92
Show file tree
Hide file tree
Showing 35 changed files with 849 additions and 673 deletions.
4 changes: 4 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,8 @@ dependencies {
implementation fg.deobf("curse.maven:gregtech-ce-unofficial-557242:4904269")
implementation fg.deobf("curse.maven:the-one-probe-245211:2667280")
runtimeOnly fg.deobf("curse.maven:codechicken-lib-1-8-242818:2779848")

implementation fg.deobf("curse.maven:item-filters-309674:3003364")
implementation fg.deobf("curse.maven:ftb-library-legacy-forge-237167:2985811")
implementation fg.deobf("curse.maven:ftb-quests-forge-289412:3156637")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package kpan.uti_alsofluids.asm.acc.integration.ftbquests;


import kpan.uti_alsofluids.asm.core.adapters.MixinAccessorAdapter.NewField;

public interface ACC_ButtonTask {

//新しいインスタンスフィールドの追加&getter作成
//getterとsetterの両方を作成する必要はないが、初期化する方法が無いので両方作るのが基本
//@NewFieldはgetterとsetterの両方に必要
@NewField
String get_localizedLine();

//新しいインスタンスフィールドの追加&setter作成
//説明はgetter同様
@NewField
void set_localizedLine(String value);

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import kpan.uti_alsofluids.asm.tf.integration.ae2.TF_GuiFluidSlot;
import kpan.uti_alsofluids.asm.tf.integration.ae2.TF_GuiFluidTank;
import kpan.uti_alsofluids.asm.tf.integration.ae2.TF_GuiFluidTerminal;
import kpan.uti_alsofluids.asm.tf.integration.ftbquests.TF_ButtonTask;
import kpan.uti_alsofluids.asm.tf.integration.gregtech.TF_AEFluidConfigSlot;
import kpan.uti_alsofluids.asm.tf.integration.gregtech.TF_AEFluidDisplayWidget;
import kpan.uti_alsofluids.asm.tf.integration.gregtech.TF_GTFluid$GTMaterialFluid;
Expand Down Expand Up @@ -55,6 +56,7 @@ public byte[] transform(String name, String transformedName, byte[] bytes) {
ClassVisitor cv = cw;
cv = TF_AEFluidConfigSlot.appendVisitor(cv, transformedName);
cv = TF_AEFluidDisplayWidget.appendVisitor(cv, transformedName);
cv = TF_ButtonTask.appendVisitor(cv, transformedName);
cv = TF_Fluid.appendVisitor(cv, transformedName);
cv = TF_FluidRegistry_LAVA.appendVisitor(cv, transformedName);
cv = TF_FluidRegistry_WATER.appendVisitor(cv, transformedName);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package kpan.uti_alsofluids.asm.core;

import com.google.common.io.CharSource;
import net.minecraftforge.fml.common.asm.transformers.AccessTransformer;

import java.io.IOException;

public class AccessTransformerForMixin extends AccessTransformer {

private static AccessTransformerForMixin INSTANCE;
private static boolean callSuper = false;


public static void toPublic(String deobfOwner, String srgMethodName, String deobfMethodDesc) {
String rule = "public " + deobfOwner + " " + srgMethodName + deobfMethodDesc;
callSuper = true;
INSTANCE.processATFile(CharSource.wrap(rule));
callSuper = false;
}

public AccessTransformerForMixin() throws IOException {
super();
INSTANCE = this;
}

@Override
protected void processATFile(CharSource rulesResource) {
if (!callSuper)
return;
try {
super.processATFile(rulesResource);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
59 changes: 31 additions & 28 deletions src/main/java/kpan/uti_alsofluids/asm/core/AsmTypes.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package kpan.uti_alsofluids.asm.core;

import kpan.uti_alsofluids.ModReference;

import java.util.ArrayList;
import java.util.List;

import kpan.uti_alsofluids.ModReference;

@SuppressWarnings("unused")
public class AsmTypes {

public static final String HOOK = ModReference.SRC_DIR.replace('.', '/') + "/asm/hook/";
public static final String ACC = ModReference.SRC_DIR.replace('.', '/') + "/asm/acc/";
public static final String VOID = "V";
public static final String BOOL = "Z";
public static final String CHAR = "C";
Expand Down Expand Up @@ -40,6 +42,7 @@ public class AsmTypes {
public static final String IBLOCKACCESS = "net/minecraft/world/IBlockAccess";
public static final String FLUID = "net/minecraftforge/fluids/Fluid";
public static final String FLUIDSTACK = "net/minecraftforge/fluids/FluidStack";
public static final String CONTAINER = "net/minecraft/inventory/Container";

public static final String METHOD_VOID = "()V";

Expand Down Expand Up @@ -74,34 +77,34 @@ public static MethodDesc fromMethodDesc(String methodDesc) {
if (c == ')')
break;
switch (c) {
case 'Z':
case 'C':
case 'B':
case 'S':
case 'I':
case 'J':
case 'F':
case 'D':
sb.append(c);
params.add(sb.toString());
sb.setLength(0);
index++;
break;
case '[':
sb.append('[');
index++;
break;
case 'L': {
int end_index = methodDesc.indexOf(';', index);
params.add(methodDesc.substring(index + 1, end_index));
index = end_index + 1;
break;
}
default:
throw new RuntimeException("Invalid Char:" + c);
case 'Z':
case 'C':
case 'B':
case 'S':
case 'I':
case 'J':
case 'F':
case 'D':
sb.append(c);
params.add(sb.toString());
sb.setLength(0);
index++;
break;
case '[':
sb.append('[');
index++;
break;
case 'L': {
int end_index = methodDesc.indexOf(';', index);
params.add(methodDesc.substring(index + 1, end_index));
index = end_index + 1;
break;
}
default:
throw new RuntimeException("Invalid Char:" + c);
}
}
return new MethodDesc(methodDesc.substring(index + 1), params.toArray(new String[params.size()]));
return new MethodDesc(methodDesc.substring(index + 1), params.toArray(new String[0]));
}

public final String returnDesc;
Expand Down
20 changes: 15 additions & 5 deletions src/main/java/kpan/uti_alsofluids/asm/core/AsmUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,7 @@ public static String toDesc(Object raw) {
@SuppressWarnings("unused")
public static MethodVisitor traceMethod(MethodVisitor mv, @Nullable String methodName) {
Textifier p = new MyTextifier(methodName);
TraceMethodVisitor tracemv = new TraceMethodVisitor(mv, p);
return tracemv;
return new TraceMethodVisitor(mv, p);
}

//MethodDescにも使用可能
Expand All @@ -154,8 +153,8 @@ public static String[] runtimeExceptions(String[] deobfExceptions) {
throw new NotImplementedException("TODO");//TODO
}

public static int loadOpcode(String type) {
switch (type) {
public static int toLoadOpcode(String desc) {
switch (desc) {
case AsmTypes.BOOL:
case AsmTypes.CHAR:
case AsmTypes.BYTE:
Expand All @@ -172,8 +171,19 @@ public static int loadOpcode(String type) {
return Opcodes.ALOAD;
}
}
public static int loadLocals(MethodVisitor mv, String[] descs, int offset) {
for (String desc : descs) {
int opcode = AsmUtil.toLoadOpcode(desc);
mv.visitVarInsn(opcode, offset);
if (opcode == Opcodes.LLOAD || opcode == Opcodes.DOUBLE)
offset += 2;
else
offset += 1;
}
return offset;
}

public static int returnOpcode(String type) {
public static int toReturnOpcode(String type) {
switch (type) {
case AsmTypes.VOID:
return Opcodes.RETURN;
Expand Down
Loading

0 comments on commit 0633b92

Please sign in to comment.