Jump to content

Access transformer help


Mightydanp

Recommended Posts

What are you doing wrong:

 

0) Using an access transformer.  Reflection is much cleaner.

-1) Not posting your crash log

-2) Not posting your code

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

the crashlog basicly says that it cannot find a field and that field is mad public in my _at file.

the code is part of a api that isnt my code, the part of the code that needs to be made public is this

 

 

@SideOnly(Side.CLIENT)

    @SubscribeEvent

    public void guiPostInit (GuiScreenEvent.InitGuiEvent.Post event)

    {

        if ((event.gui instanceof GuiInventory))

        {

            int xSize = 176;

            int ySize = 166;

            int guiLeft = (event.gui.width - xSize) / 2;

            int guiTop = (event.gui.height - ySize) / 2;

guiLeft += getPotionOffset();

 

            updateTabValues(guiLeft, guiTop, InventoryTabVanilla.class);

            addTabsToList(event.gui.buttonList);

        }

    }

 

 

i need to make this public

public net.minecraft.client.gui.GuiScreen field_146292_n #buttonList

Link to comment
Share on other sites

GuiScreen.class.getField("field_146292_n").setAccessible(true)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Go look at the forge tutorial on access transformers.

 

Basically you make a text file in the resources folder that has your transformations. What's important to note is that the plugin class only loads the transforms on compiled clients, but in the dev workspace your access transformer is applied when forge is running the setupDecompWorkspace command, so it directly changes the decompiled minecraft classes in your workspace.

 

To tell forge to decompile with your access transformer you have to edit your build.gradle telling it the name of your access transformer. After changing your build file, its automatically applied after your next decompile. The info on the forge tutorial isn't completely accurate, but you can figure it out.

"you seem to be THE best modder I've seen imo."

~spynathan

 

ლ(́◉◞౪◟◉‵ლ

Link to comment
Share on other sites

Darco is it really that easy ?do i need to  put that in the same class that the field is in

 

You probably haven't dealt with reflection. This is exactly what you need here, as pointed out above, so read up on some tutorials. That should get rid of that nasty Access Transformer.

Development of Plugins [2012 - 2014] Development of Mods [2012 - Current]

Link to comment
Share on other sites

Instead of

instance.field

you do

fieldObj.set(instance, value)

, (for static fields, you use null as the instance) but you have to do what I said above first or you'll get Access Denied exceptions.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

i have just tried that and i get this error

java.lang.NoSuchFieldException: field_146292_n

at java.lang.Class.getField(Class.java:1695)

at com.mightydanp.eot.EotCore.preInit(EotCore.java:78)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

 

i  used this code

 

try {

GuiScreen.class.getField("field_146292_n").setAccessible(true);

} catch (SecurityException e) {

e.printStackTrace();

} catch (NoSuchFieldException e) {

e.printStackTrace();

}

Link to comment
Share on other sites

The field isn't called

field_146292_n

in the development environment, it's called

buttonList

. You need to check both names.

 

Look at (or use) FML's

ReflectionHelper

and

ObfuscationReflectionHelper

classes to see how they handle this. If I need to access a non-public field/method more than once, I'll usually use

ReflectionHelper.findField

/

ReflectionHelper.findMethod

and store the

Field

/

Method

object instead of looking it up each time.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

Alright i  tried something like this

ReflectionHelper.findField(GuiScreen.class, new String[]{"buttonList", "field_146292_n"}).setAccessible(true);;

 

and got this error

Exception caught during firing event net.minecraftforge.client.event.GuiScreenEvent$InitGuiEvent$Post@1f0f52d6:

java.lang.IllegalAccessError: tried to access field net.minecraft.client.gui.GuiScreen.field_146292_n from class tconstruct.client.tabs.TabRegistry

Link to comment
Share on other sites

Alright i  tried something like this

ReflectionHelper.findField(GuiScreen.class, new String[]{"buttonList", "field_146292_n"}).setAccessible(true);;

 

and got this error

Exception caught during firing event net.minecraftforge.client.event.GuiScreenEvent$InitGuiEvent$Post@1f0f52d6:

java.lang.IllegalAccessError: tried to access field net.minecraft.client.gui.GuiScreen.field_146292_n from class tconstruct.client.tabs.TabRegistry

 

You tried to access a

GuiScreen

field on TConstruct's

TabRegistry

class, which doesn't extend

GuiScreen

.

 

Edit: Disregard this post, I misinterpreted the error.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

well it was why i wanted help with my access transformer ive seen alot of modders use it in there mod >.<, but the api of thinkers gets obs into my mod itself for it to be used without tinkers construct, they are under a Creative Commons 3.0 can i change the code in that class or do i have to leave it alone because if i can change some of it i can do what you just told me to do ???

 

Link to comment
Share on other sites

Seriously the hell are you guys doing?

If the library uses the AT system properly it'll just work when you setup the project.

What are YOU trying to accomplish.

Show your code that's having issues.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Link to comment
Share on other sites

You should read the whole topic and replies if you want to know whats going on all of the information is in the topic and replies

 

Even those of us who HAVE read the thread have no idea what you're trying to do.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • OLXTOTO: Menikmati Sensasi Bermain Togel dan Slot dengan Aman dan Mengasyikkan Dunia perjudian daring terus berkembang dengan cepat, dan salah satu situs yang telah menonjol dalam pasar adalah OLXTOTO. Sebagai platform resmi untuk permainan togel dan slot, OLXTOTO telah memenangkan kepercayaan banyak pemain dengan menyediakan pengalaman bermain yang aman, adil, dan mengasyikkan. DAFTAR OLXTOTO DISINI <a href="https://imgbb.com/"><img src="https://i.ibb.co/GnjSVpx/daftar1-480x480.webp" alt="daftar1-480x480" border="0" /></a> Keamanan Sebagai Prioritas Utama Salah satu aspek utama yang membuat OLXTOTO begitu menonjol adalah komitmennya terhadap keamanan pemain. Dengan menggunakan teknologi enkripsi terkini, situs ini memastikan bahwa semua informasi pribadi dan keuangan para pemain tetap aman dan terlindungi dari akses yang tidak sah. Beragam Permainan yang Menarik Di OLXTOTO, pemain dapat menemukan beragam permainan yang menarik untuk dinikmati. Mulai dari permainan klasik seperti togel hingga slot modern dengan fitur-fitur inovatif, ada sesuatu untuk setiap selera dan preferensi. Grafik yang memukau dan efek suara yang mengagumkan menambah keseruan setiap putaran. Peluang Menang yang Tinggi Salah satu hal yang paling menarik bagi para pemain adalah peluang menang yang tinggi yang ditawarkan oleh OLXTOTO. Dengan pembayaran yang adil dan peluang yang setara bagi semua pemain, setiap taruhan memberikan kesempatan nyata untuk memenangkan hadiah besar. Layanan Pelanggan yang Responsif Tim layanan pelanggan OLXTOTO siap membantu para pemain dengan setiap pertanyaan atau masalah yang mereka hadapi. Dengan layanan yang ramah dan responsif, pemain dapat yakin bahwa mereka akan mendapatkan bantuan yang mereka butuhkan dengan cepat dan efisien. Kesimpulan OLXTOTO telah membuktikan dirinya sebagai salah satu situs terbaik untuk penggemar togel dan slot online. Dengan fokus pada keamanan, beragam permainan yang menarik, peluang menang yang tinggi, dan layanan pelanggan yang luar biasa, tidak mengherankan bahwa situs ini telah menjadi pilihan utama bagi banyak pemain. Jadi, jika Anda mencari pengalaman bermain yang aman, adil, dan mengasyikkan, jangan ragu untuk bergabung dengan OLXTOTO hari ini dan rasakan sensasi kemenangan!
    • Slot deposit dana adalah situs slot deposit dana yang juga menerima dari e-wallet lain seperti deposit via dana, ovo, gopay & linkaja terlengkap saat ini, sehingga para pemain yang tidak memiliki rekening bank lokal bisa tetap bermain slot dan terbantu dengan adanya fitur tersebut.   DAFTAR & LOGIN AKUN PRO SLOT DEPOSIT DANA ⭐⭐⭐ KLIK DISINI ⭐⭐⭐  
    • Slot deposit dana adalah situs slot deposit dana minimal 5000 yang dijamin garansi super gacor dan gampang menang, dimana para pemain yang tidak memiliki rekening bank lokal tetap dalam bermain slot dengan melakukan deposit dana serta e-wallet lainnya seperti ovo, gopay maupun linkaja lengkap. Agar para pecinta slot di seluruh Indonesia tetap dapat menikmati permainan tanpa halangan apapun khususnya metode deposit, dimana ketersediaan cara deposit saat ini yang lebih beragam tentunya sangat membantu para pecinta slot.   DAFTAR & LOGIN AKUN PRO SLOT DEPOSIT DANA ⭐⭐⭐ KLIK DISINI ⭐⭐⭐  
    • Slot deposit pulsa adalah situs slot deposit pulsa tanpa potongan apapun yang dijamin garansi terpercaya, dimana kamu bisa bermain slot dengan melakukan deposit pulsa dan tanpa dikenakan potongan apapun sehingga dana yang masuk ke dalam akun akan 100% utuh. Proses penarikan dana juga dijamin gampang dan tidak sulit sehingga kamu tidak perlu khawatir akan kemenangan yang akan kamu peroleh dengan sangat mudah jika bermain disini.   DAFTAR & LOGIN AKUN PRO SLOT DEPOSIT PULSA TANPA POTONGAN ⭐⭐⭐ KLIK DISINI ⭐⭐⭐  
    • Slot deposit pulsa merupakan situs slot deposit pulsa tanpa potongan apapun yang dijamin 100% garansi bebas biaya dimana deposit pulsa yang masuk ke dalam akun tidak akan dikenakan potongan apapun sehingga para pemain tidak akan terbebani dan bisa memanfaatkan modal bermain mereka dengan lebih maksimal. Sebab slot deposit pulsa tanpa potongan ini bertujuan untuk membantu para pecinta slot yang gemar bermain tetapi terhalang oleh keterbatasan akses dan modal, yang maka dari itu kami hadirkan fasilitas terbaru ini.   DAFTAR & LOGIN AKUN PRO SLOT DEPOSIT PULSA TANPA POTONGAN ⭐⭐⭐ KLIK DISINI ⭐⭐⭐  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.