diff options
| author | Alexdoru <57050655+Alexdoru@users.noreply.github.com> | 2024-09-28 13:25:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-28 11:25:01 +0000 |
| commit | 86f1765b171f4cc6f163b8027d1330f4e5094e2d (patch) | |
| tree | b6e293bd3c976558fc4e4b7190e4d342c2ddc555 /src/main/java/gtPlusPlus/plugin/fixes/vanilla | |
| parent | 6b1f145f5028f1bc92cf478e5963224e7d94b5cd (diff) | |
| download | GT5-Unofficial-86f1765b171f4cc6f163b8027d1330f4e5094e2d.tar.gz GT5-Unofficial-86f1765b171f4cc6f163b8027d1330f4e5094e2d.tar.bz2 GT5-Unofficial-86f1765b171f4cc6f163b8027d1330f4e5094e2d.zip | |
Remove more reflection + reorganize mixin accessors packages (#3260)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Co-authored-by: boubou19 <miisterunknown@gmail.com>
Diffstat (limited to 'src/main/java/gtPlusPlus/plugin/fixes/vanilla')
4 files changed, 12 insertions, 319 deletions
diff --git a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBackgroundMusicFix.java b/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBackgroundMusicFix.java deleted file mode 100644 index 386fac65ee..0000000000 --- a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBackgroundMusicFix.java +++ /dev/null @@ -1,64 +0,0 @@ -package gtPlusPlus.plugin.fixes.vanilla; - -import java.util.Timer; -import java.util.TimerTask; - -import gtPlusPlus.api.interfaces.IPlugin; -import gtPlusPlus.core.config.ASMConfiguration; -import gtPlusPlus.core.util.Utils; -import gtPlusPlus.plugin.fixes.interfaces.IBugFix; -import gtPlusPlus.plugin.fixes.vanilla.music.MusicTocker; - -public class VanillaBackgroundMusicFix implements IBugFix { - - private final IPlugin mParent; - private final boolean enabled; - private MusicTocker mFixInstance; - - public VanillaBackgroundMusicFix(IPlugin minstance) { - mParent = minstance; - if (ASMConfiguration.general.enableWatchdogBGM > 0 && Utils.isClient()) { - mParent.log("[BGM] Registering BGM delay Fix."); - enabled = true; - mFixInstance = new MusicTocker(mParent); - } else if (ASMConfiguration.general.enableWatchdogBGM > 0 && Utils.isServer()) { - mParent.log("[BGM] Tried registering BGM delay Fix on Server, disabling."); - enabled = false; - } else { - mParent.log("[BGM] Not registering BGM delay Fix."); - enabled = false; - } - } - - @Override - public boolean isFixValid() { - return enabled; - } - - public void manage() { - if (ASMConfiguration.general.enableWatchdogBGM > 0 && Utils.isClient()) { - TimerTask task = new ManageTask(this.mFixInstance); - Timer timer = new Timer("BGM-WatchDog"); - long delay = 1000 * 60; - timer.scheduleAtFixedRate(task, delay, 5000); - } - } - - private static class ManageTask extends TimerTask { - - private final MusicTocker A; - - public ManageTask(MusicTocker a) { - A = a; - } - - @Override - public void run() { - if (ASMConfiguration.general.enableWatchdogBGM > 0 && Utils.isClient()) { - if (!A.mVanillaManager) { - A.run(); - } - } - } - } -} diff --git a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java b/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java index 8395f7b3f7..0d1151abaa 100644 --- a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java +++ b/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java @@ -10,39 +10,31 @@ import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import gregtech.asm.GTCorePlugin; -import gtPlusPlus.api.interfaces.IPlugin; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.util.reflect.ReflectionUtils; -import gtPlusPlus.plugin.fixes.interfaces.IBugFix; // TODO move this as a mixin in hodgepodge -public class VanillaBedHeightFix implements IBugFix { +public class VanillaBedHeightFix { private final Method mSleepInBedAt; - private final IPlugin mParent; - public VanillaBedHeightFix(IPlugin minstance) { - mParent = minstance; - Method m = ReflectionUtils.getMethod( - EntityPlayer.class, - GTCorePlugin.isDevEnv() ? "sleepInBedAt" : "func_71018_a", - int.class, - int.class, - int.class); + public VanillaBedHeightFix() { + Method m = null; + try { + m = EntityPlayer.class.getDeclaredMethod( + GTCorePlugin.isDevEnv() ? "sleepInBedAt" : "func_71018_a", + int.class, + int.class, + int.class); + } catch (NoSuchMethodException ignored) {} if (m != null) { mSleepInBedAt = m; - mParent.log("Registering Bed Height Fix."); + Logger.INFO("Registering Bed Height Fix."); MinecraftForge.EVENT_BUS.register(this); } else { mSleepInBedAt = null; } } - @Override - public boolean isFixValid() { - return mSleepInBedAt != null; - } - /** * Fix created by deNULL - * https://github.com/deNULL/BugPatch/blob/master/src/main/java/ru/denull/BugPatch/mod/ClientEvents.java#L45 @@ -52,7 +44,7 @@ public class VanillaBedHeightFix implements IBugFix { @SubscribeEvent(priority = EventPriority.HIGHEST) public void playerSleepInBed(PlayerSleepInBedEvent evt) { Logger.WARNING("Sleep Event Detected. Player is sleeping at Y: " + evt.y); - if (evt.y <= 0 && isFixValid()) { + if (evt.y <= 0) { int correctY = 256 + evt.y; if (correctY <= 0) { Logger.WARNING( @@ -73,9 +65,6 @@ public class VanillaBedHeightFix implements IBugFix { Logger.WARNING("Encountered an error trying to sleep."); } } - } else if (!isFixValid()) { - Logger.WARNING( - "Method sleepInBedAt was not found in EntityPlayer (wrong MC and/or Forge version?), unable to fix"); } } } diff --git a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaFixesCore.java b/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaFixesCore.java deleted file mode 100644 index b6cfb9d3ba..0000000000 --- a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaFixesCore.java +++ /dev/null @@ -1,101 +0,0 @@ -package gtPlusPlus.plugin.fixes.vanilla; - -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; - -import gtPlusPlus.api.interfaces.IPlugin; -import gtPlusPlus.core.util.minecraft.ItemUtils; -import gtPlusPlus.plugin.manager.CoreManager; - -// Called by Core_Manager#veryEarlyInit -@SuppressWarnings("unused") -public class VanillaFixesCore implements IPlugin { - - static final VanillaFixesCore mInstance; - static final VanillaBedHeightFix mBedFixInstance; - static final VanillaBackgroundMusicFix mMusicFixInstance; - - static { - mInstance = new VanillaFixesCore(); - mBedFixInstance = new VanillaBedHeightFix(mInstance); - mMusicFixInstance = new VanillaBackgroundMusicFix(mInstance); - mInstance.log("Preparing " + mInstance.getPluginName() + " for use."); - } - - VanillaFixesCore() { - CoreManager.registerPlugin(this); - } - - @Override - public boolean preInit() { - return fixVanillaOD(); - } - - @Override - public boolean init() { - return true; - } - - @Override - public boolean postInit() { - return true; - } - - @Override - public boolean serverStart() { - mMusicFixInstance.manage(); - return true; - } - - @Override - public boolean serverStop() { - return true; - } - - @Override - public String getPluginName() { - return "GT++ Vanilla Fixes Module"; - } - - @Override - public String getPluginAbbreviation() { - return "VFIX"; - } - - private boolean fixVanillaOD() { - registerToOreDict(ItemUtils.getSimpleStack(Items.blaze_rod), "rodBlaze"); - registerToOreDict(ItemUtils.getSimpleStack(Items.nether_wart), "cropNetherWart"); - registerToOreDict(ItemUtils.getSimpleStack(Items.reeds), "sugarcane"); - registerToOreDict(ItemUtils.getSimpleStack(Items.paper), "paper"); - registerToOreDict(ItemUtils.getSimpleStack(Items.ender_pearl), "enderpearl"); - registerToOreDict(ItemUtils.getSimpleStack(Items.bone), "bone"); - registerToOreDict(ItemUtils.getSimpleStack(Items.gunpowder), "gunpowder"); - registerToOreDict(ItemUtils.getSimpleStack(Items.string), "string"); - registerToOreDict(ItemUtils.getSimpleStack(Items.nether_star), "netherStar"); - registerToOreDict(ItemUtils.getSimpleStack(Items.leather), "leather"); - registerToOreDict(ItemUtils.getSimpleStack(Items.feather), "feather"); - registerToOreDict(ItemUtils.getSimpleStack(Items.egg), "egg"); - registerToOreDict(ItemUtils.getSimpleStack(Blocks.end_stone), "endstone"); - registerToOreDict(ItemUtils.getSimpleStack(Blocks.vine), "vine"); - registerToOreDict(ItemUtils.getSimpleStack(Blocks.cactus), "blockCactus"); - registerToOreDict(ItemUtils.getSimpleStack(Blocks.grass), "grass"); - registerToOreDict(ItemUtils.getSimpleStack(Blocks.obsidian), "obsidian"); - registerToOreDict(ItemUtils.getSimpleStack(Blocks.crafting_table), "workbench"); - return true; - } - - private void registerToOreDict(ItemStack aStack, String aString) { - if (aStack.getItem() == Items.blaze_rod) { - mInstance - .log("Registering " + aStack.getDisplayName() + " to OreDictionary under the tag '" + aString + "'."); - } else { - mInstance.log( - "Registering " + aStack.getDisplayName() - + " to OreDictionary under the tag '" - + aString - + "'. (Added to Forge in 1.8.9)"); - } - ItemUtils.addItemToOreDictionary(aStack, aString); - } -} diff --git a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/music/MusicTocker.java b/src/main/java/gtPlusPlus/plugin/fixes/vanilla/music/MusicTocker.java deleted file mode 100644 index 46dec56124..0000000000 --- a/src/main/java/gtPlusPlus/plugin/fixes/vanilla/music/MusicTocker.java +++ /dev/null @@ -1,131 +0,0 @@ -package gtPlusPlus.plugin.fixes.vanilla.music; - -import java.lang.reflect.Field; -import java.util.Random; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.ISound; -import net.minecraft.client.audio.MusicTicker; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.util.MathHelper; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import gregtech.api.objects.XSTR; -import gtPlusPlus.api.interfaces.IPlugin; -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.config.ASMConfiguration; -import gtPlusPlus.core.util.reflect.ReflectionUtils; - -@SideOnly(Side.CLIENT) -public class MusicTocker extends MusicTicker implements Runnable { - - private final Random mRandom = new XSTR(); - private final Minecraft mMinecraft; - private final IPlugin mPlugin; - private ISound mSound; - private int mTimeUntilNextTrack = 100; - - public boolean mVanillaManager = false; - - public MusicTocker(IPlugin aPlugin) { - super(Minecraft.getMinecraft()); - mPlugin = aPlugin; - mMinecraft = Minecraft.getMinecraft(); - mPlugin.log("[BGM] Created BGM Watchdog with a delay of " + getDelay() + " ticks."); - inject(); - } - - private static int getDelay() { - return ASMConfiguration.general.enableWatchdogBGM; - } - - private boolean inject() { - mPlugin.log("[BGM] Inject new Watchdog into Minecraft instance."); - ReflectionUtils.setField(Minecraft.getMinecraft(), "mcMusicTicker", this); - mPlugin.log("[BGM] Verifying..."); - Field f = ReflectionUtils.getField(Minecraft.class, "mcMusicTicker"); - try { - Object m = f.get(mMinecraft); - if (m != null) { - if (m instanceof MusicTocker || m.getClass() - .isAssignableFrom(getClass())) { - mPlugin.log("[BGM] Success."); - return true; - } else if (m instanceof MusicTicker || m.getClass() - .isAssignableFrom(MusicTicker.class)) { - mPlugin.log("[BGM] Found Vanilla MusicTicker, but may be instance of MusicTocker."); - return true; - } - } - } catch (IllegalArgumentException | IllegalAccessException e) {} - - mPlugin.log("[BGM] Failed."); - return false; - } - - private void updateInternalNumber() { - if (ReflectionUtils.doesFieldExist(getClass(), "field_147676_d")) { - ReflectionUtils.setField(this, "field_147676_d", mTimeUntilNextTrack); - } - } - - private void updateInternalSound(ISound aSound) { - if (ReflectionUtils.doesFieldExist(getClass(), "field_147678_c")) { - ReflectionUtils.setField(this, "field_147678_c", aSound); - } - } - - /** - * Updates the JList with a new model. - */ - @Override - public void update() { - run(); - mVanillaManager = true; - } - - @Override - public void run() { - MusicType musictype = this.mMinecraft.func_147109_W(); - - if (this.mSound != null) { - if (!musictype.getMusicTickerLocation() - .equals(this.mSound.getPositionedSoundLocation())) { - this.mMinecraft.getSoundHandler() - .stopSound(this.mSound); - this.mTimeUntilNextTrack = MathHelper.getRandomIntegerInRange(this.mRandom, 0, getDelay() / 2); - updateInternalNumber(); - Logger.INFO("[BGM] Adjusted BGM delay 1"); - } - if (!this.mMinecraft.getSoundHandler() - .isSoundPlaying(this.mSound)) { - this.mSound = null; - updateInternalSound(null); - this.mTimeUntilNextTrack = Math.min( - MathHelper.getRandomIntegerInRange(this.mRandom, getDelay(), getDelay() * 2), - this.mTimeUntilNextTrack); - updateInternalNumber(); - Logger.INFO("[BGM] Adjusted BGM delay 2"); - } - } else if (this.mSound == null && this.mTimeUntilNextTrack-- <= 0) { - this.mSound = PositionedSoundRecord.func_147673_a(musictype.getMusicTickerLocation()); - updateInternalSound(mSound); - this.mMinecraft.getSoundHandler() - .playSound(this.mSound); - this.mTimeUntilNextTrack = getDelay(); - updateInternalNumber(); - Logger.INFO("[BGM] Adjusted BGM 3"); - } - - /* - * try { // Get Value stored in underlying object. Integer aRealDelay = (Integer) - * ReflectionUtils.getField(getClass(), "field_147676_d").get(this); if (aRealDelay == null) { return; } else { - * if (aRealDelay > getDelay() || aRealDelay <= 0) { this.mTimeUntilNextTrack = getDelay(); - * updateInternalNumber(); } else { this.mTimeUntilNextTrack -= 5 * 20; updateInternalNumber(); } aRealDelay = - * (Integer) ReflectionUtils.getField(getClass(), "field_147676_d").get(this); - * Logger.INFO("[BGM] Adjusted BGM - "+aRealDelay); } } catch (IllegalArgumentException | IllegalAccessException - * e) { } - */ - } -} |
