aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/plugin/fixes/vanilla
diff options
context:
space:
mode:
authorAlexdoru <57050655+Alexdoru@users.noreply.github.com>2024-09-28 13:25:01 +0200
committerGitHub <noreply@github.com>2024-09-28 11:25:01 +0000
commit86f1765b171f4cc6f163b8027d1330f4e5094e2d (patch)
treeb6e293bd3c976558fc4e4b7190e4d342c2ddc555 /src/main/java/gtPlusPlus/plugin/fixes/vanilla
parent6b1f145f5028f1bc92cf478e5963224e7d94b5cd (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBackgroundMusicFix.java64
-rw-r--r--src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaBedHeightFix.java35
-rw-r--r--src/main/java/gtPlusPlus/plugin/fixes/vanilla/VanillaFixesCore.java101
-rw-r--r--src/main/java/gtPlusPlus/plugin/fixes/vanilla/music/MusicTocker.java131
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) { }
- */
- }
-}