aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/djtheredstoner/perspectivemod/PerspectiveMod.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/djtheredstoner/perspectivemod/PerspectiveMod.java')
-rw-r--r--src/main/java/me/djtheredstoner/perspectivemod/PerspectiveMod.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/main/java/me/djtheredstoner/perspectivemod/PerspectiveMod.java b/src/main/java/me/djtheredstoner/perspectivemod/PerspectiveMod.java
new file mode 100644
index 0000000..8ef5ed5
--- /dev/null
+++ b/src/main/java/me/djtheredstoner/perspectivemod/PerspectiveMod.java
@@ -0,0 +1,133 @@
+package me.djtheredstoner.perspectivemod;
+
+import me.djtheredstoner.perspectivemod.commands.PerspectiveModCommand;
+import me.djtheredstoner.perspectivemod.config.PerspectiveModConfig;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.GameSettings;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraftforge.client.ClientCommandHandler;
+import net.minecraftforge.client.event.GuiOpenEvent;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.client.registry.ClientRegistry;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.common.event.FMLInitializationEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.opengl.Display;
+
+@Mod(modid = "djperspectivemod", name = "Perspective Mod v4", version = "4.5", acceptedMinecraftVersions = "[1.8.9]", clientSideOnly = true)
+public class PerspectiveMod {
+
+ @Mod.Instance
+ public static PerspectiveMod instance;
+
+ public final PerspectiveModConfig config = new PerspectiveModConfig();
+
+ public boolean perspectiveToggled = false;
+ public float cameraYaw = 0F;
+ public float cameraPitch = 0F;
+
+ private int previousPerspective = 0;
+ private boolean prevState = false;
+
+ private final Minecraft mc = Minecraft.getMinecraft();
+ private final KeyBinding perspectiveKey = new KeyBinding("Perspective", Keyboard.KEY_LMENU, "Perspective Mod");
+ private final Logger logger = LogManager.getLogger("Perspective Mod v4");
+
+ @Mod.EventHandler
+ public void init(FMLInitializationEvent event) {
+ config.preload();
+
+ ClientRegistry.registerKeyBinding(perspectiveKey);
+ new PerspectiveModCommand("perspectivemod").register();
+ new PerspectiveModCommand("pmod").register();
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ @SubscribeEvent
+ public void tick(TickEvent.RenderTickEvent event) {
+ boolean down = GameSettings.isKeyDown(perspectiveKey);
+ if(down != prevState && mc.currentScreen == null && mc.theWorld != null && mc.thePlayer != null) {
+ prevState = down;
+ onPressed(down);
+ }
+ }
+
+ @SubscribeEvent
+ public void onGuiOpen(GuiOpenEvent event) {
+ if (event.gui != null && perspectiveToggled && config.holdMode) {
+ resetPerspective();
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldLoad(WorldEvent.Load event) {
+ if (perspectiveToggled) {
+ resetPerspective();
+ }
+ }
+
+ public void onPressed(boolean state) {
+ if (config.modEnabled) {
+ if (state) {
+ cameraYaw = mc.thePlayer.rotationYaw;
+ cameraPitch = mc.thePlayer.rotationPitch;
+
+ if (perspectiveToggled) {
+ resetPerspective();
+ } else {
+ enterPerspective();
+ }
+ mc.renderGlobal.setDisplayListEntitiesDirty();
+ } else if (config.holdMode) {
+ resetPerspective();
+ }
+ } else if (perspectiveToggled) {
+ resetPerspective();
+ }
+ }
+
+ public void enterPerspective() {
+ perspectiveToggled = true;
+ previousPerspective = mc.gameSettings.thirdPersonView;
+ mc.gameSettings.thirdPersonView = 1;
+ }
+
+ public void resetPerspective() {
+ perspectiveToggled = false;
+ mc.gameSettings.thirdPersonView = previousPerspective;
+ mc.renderGlobal.setDisplayListEntitiesDirty();
+ }
+
+ public boolean overrideMouse() {
+ if (mc.inGameHasFocus && Display.isActive()) {
+ if (!perspectiveToggled) {
+ return true;
+ }
+
+ // CODE
+ mc.mouseHelper.mouseXYChange();
+ float f1 = mc.gameSettings.mouseSensitivity * 0.6F + 0.2F;
+ float f2 = f1 * f1 * f1 * 8.0F;
+ float f3 = (float) mc.mouseHelper.deltaX * f2;
+ float f4 = (float) mc.mouseHelper.deltaY * f2;
+
+ if(config.invertPitch) {
+ f4 = -f4;
+ }
+
+ cameraYaw += f3 * 0.15F;
+ cameraPitch += f4 * 0.15F;
+
+ if (cameraPitch > 90) cameraPitch = 90;
+ if (cameraPitch < -90) cameraPitch = -90;
+ mc.renderGlobal.setDisplayListEntitiesDirty();
+ }
+
+ return false;
+ }
+}