Add spectating
This commit is contained in:
@@ -11,6 +11,9 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityPlayerSP;
|
||||
import net.minecraft.client.network.NetHandlerPlayClient;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.item.EntityItemFrame;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.stats.StatFileWriter;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
@@ -214,9 +217,22 @@ public class CameraEntity extends EntityPlayerSP {
|
||||
long timePassed = now - lastControllerUpdate;
|
||||
cameraController.update(timePassed / 50f);
|
||||
lastControllerUpdate = now;
|
||||
|
||||
if (mc.gameSettings.keyBindAttack.isPressed() || mc.gameSettings.keyBindUseItem.isPressed()) {
|
||||
if (canSpectate(mc.pointedEntity)) {
|
||||
ReplayModReplay.instance.getReplayHandler().spectateEntity(mc.pointedEntity);
|
||||
// Make sure we don't exit right away
|
||||
mc.gameSettings.keyBindSneak.pressTime = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canSpectate(Entity e) {
|
||||
return e != null && !e.isInvisible()
|
||||
&& (e instanceof EntityPlayer || e instanceof EntityLiving || e instanceof EntityItemFrame);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onSettingsChanged(SettingsChangedEvent event) {
|
||||
if (event.getKey() == Setting.CAMERA) {
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.replaymod.replay.camera;
|
||||
|
||||
import com.replaymod.replay.ReplayModReplay;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class SpectatorCameraController implements CameraController {
|
||||
private final CameraEntity camera;
|
||||
|
||||
@Override
|
||||
public void update(float partialTicksPassed) {
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
if (mc.gameSettings.keyBindSneak.isPressed()) {
|
||||
ReplayModReplay.instance.getReplayHandler().spectateCamera();
|
||||
}
|
||||
|
||||
// Soak up all remaining key presses
|
||||
for (KeyBinding binding : Arrays.asList(mc.gameSettings.keyBindAttack, mc.gameSettings.keyBindUseItem,
|
||||
mc.gameSettings.keyBindJump, mc.gameSettings.keyBindSneak, mc.gameSettings.keyBindForward,
|
||||
mc.gameSettings.keyBindBack, mc.gameSettings.keyBindLeft, mc.gameSettings.keyBindRight)) {
|
||||
binding.pressTime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void increaseSpeed() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decreaseSpeed() {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user