Add 1.7.10 version

This commit is contained in:
Jonas Herzig
2018-03-07 22:00:30 +01:00
parent fbbca76099
commit eb04eb47dc
106 changed files with 2083 additions and 251 deletions

View File

@@ -9,9 +9,15 @@ import de.johni0702.minecraft.gui.element.GuiImage;
import de.johni0702.minecraft.gui.element.IGuiImage;
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import net.minecraft.client.settings.GameSettings;
import org.lwjgl.input.Keyboard;
//#if MC>=10800
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.lwjgl.input.Keyboard;
//#else
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
//$$ import cpw.mods.fml.common.gameevent.TickEvent;
//#endif
import static com.replaymod.core.versions.MCVer.*;

View File

@@ -17,11 +17,16 @@ import de.johni0702.minecraft.gui.layout.GridLayout;
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import de.johni0702.minecraft.gui.layout.LayoutData;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.lwjgl.input.Keyboard;
import org.lwjgl.util.Dimension;
import org.lwjgl.util.ReadableDimension;
//#if MC>=10800
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
//#else
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
//#endif
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

View File

@@ -14,9 +14,14 @@ import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import de.johni0702.minecraft.gui.layout.VerticalLayout;
import de.johni0702.minecraft.gui.popup.AbstractGuiPopup;
import de.johni0702.minecraft.gui.utils.Colors;
import net.minecraftforge.fml.common.Loader;
import org.apache.commons.io.FileUtils;
//#if MC>=10800
import net.minecraftforge.fml.common.Loader;
//#else
//$$ import cpw.mods.fml.common.Loader;
//#endif
import javax.net.ssl.HttpsURLConnection;
import java.io.File;
import java.io.FileOutputStream;

View File

@@ -5,10 +5,17 @@ import com.replaymod.extras.advancedscreenshots.AdvancedScreenshots;
import com.replaymod.extras.playeroverview.PlayerOverview;
import com.replaymod.extras.urischeme.UriSchemeExtra;
import com.replaymod.extras.youtube.YoutubeUpload;
import org.apache.logging.log4j.Logger;
//#if MC>=10800
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import org.apache.logging.log4j.Logger;
//#else
//$$ import cpw.mods.fml.common.Mod;
//$$ import cpw.mods.fml.common.event.FMLInitializationEvent;
//$$ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
//#endif
import java.util.Arrays;
import java.util.HashMap;
@@ -20,7 +27,9 @@ import java.util.Optional;
version = "@MOD_VERSION@",
acceptedMinecraftVersions = "@MC_VERSION@",
acceptableRemoteVersions = "*",
//#if MC>=10800
clientSideOnly = true,
//#endif
useMetadata = true)
public class ReplayModExtras {
public static final String MOD_ID = "replaymod-extras";

View File

@@ -6,9 +6,14 @@ import com.replaymod.replay.events.ReplayDispatchKeypressesEvent;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiControls;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.lwjgl.input.Keyboard;
//#if MC>=10800
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
//#else
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
//#endif
public class AdvancedScreenshots implements Extra {
private ReplayMod mod;

View File

@@ -2,7 +2,6 @@ package com.replaymod.extras.advancedscreenshots;
import com.replaymod.render.RenderSettings;
import com.replaymod.render.capturer.RenderInfo;
import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
import com.replaymod.render.rendering.Pipelines;
import lombok.RequiredArgsConstructor;
import net.minecraft.client.Minecraft;
@@ -10,6 +9,10 @@ import net.minecraft.crash.CrashReport;
import org.lwjgl.util.Dimension;
import org.lwjgl.util.ReadableDimension;
//#if MC>=10800
import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
//#endif
@RequiredArgsConstructor
public class ScreenshotRenderer implements RenderInfo {
@@ -17,6 +20,8 @@ public class ScreenshotRenderer implements RenderInfo {
private final RenderSettings settings;
private int framesDone;
public boolean renderScreenshot() throws Throwable {
try {
int displayWidthBefore = mc.displayWidth;
@@ -25,12 +30,16 @@ public class ScreenshotRenderer implements RenderInfo {
boolean hideGUIBefore = mc.gameSettings.hideGUI;
mc.gameSettings.hideGUI = true;
//#if MC>=10800
ChunkLoadingRenderGlobal clrg = new ChunkLoadingRenderGlobal(mc.renderGlobal);
//#endif
Pipelines.newPipeline(settings.getRenderMethod(),this,
new ScreenshotWriter(settings.getOutputFile())).run();
//#if MC>=10800
clrg.uninstall();
//#endif
mc.gameSettings.hideGUI = hideGUIBefore;
mc.resize(displayWidthBefore, displayHeightBefore);
@@ -48,6 +57,11 @@ public class ScreenshotRenderer implements RenderInfo {
return new Dimension(settings.getVideoWidth(), settings.getVideoHeight());
}
@Override
public int getFramesDone() {
return framesDone;
}
@Override
public int getTotalFrames() {
// render 2 frames, because only the second contains all frames fully loaded
@@ -56,6 +70,7 @@ public class ScreenshotRenderer implements RenderInfo {
@Override
public float updateForNextFrame() {
framesDone++;
return mc.timer.renderPartialTicks;
}

View File

@@ -1,7 +1,6 @@
package com.replaymod.extras.playeroverview;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.replaymod.core.ReplayMod;
import com.replaymod.core.utils.Utils;
import com.replaymod.extras.Extra;
@@ -12,12 +11,20 @@ import com.replaymod.replay.events.ReplayOpenEvent;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.lwjgl.input.Keyboard;
//#if MC>=10800
import com.google.common.base.Predicate;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
//#else
//$$ import cpw.mods.fml.common.eventhandler.EventPriority;
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
//$$ import net.minecraftforge.client.event.RenderPlayerEvent;
//#endif
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
import static com.replaymod.core.versions.MCVer.*;
@@ -36,12 +43,19 @@ public class PlayerOverview implements Extra {
public void run() {
if (module.getReplayHandler() != null) {
@SuppressWarnings("unchecked")
//#if MC>=10800
List<EntityPlayer> players = world(mod.getMinecraft()).getPlayers(EntityPlayer.class, new Predicate() {
@Override
public boolean apply(Object input) {
return !(input instanceof CameraEntity); // Exclude the camera entity
}
});
//#else
//$$ List<EntityPlayer> players = mod.getMinecraft().theWorld.playerEntities;
//$$ players = players.stream()
//$$ .filter(it -> !(it instanceof CameraEntity)) // Exclude the camera entity
//$$ .collect(Collectors.toList());
//#endif
if (!Utils.isCtrlDown()) {
// Hide all players that have an UUID v2 (commonly used for NPCs)
Iterator<EntityPlayer> iter = players.iterator();
@@ -91,12 +105,22 @@ public class PlayerOverview implements Extra {
@SubscribeEvent
public void oRenderHand(RenderHandEvent event) {
Entity view = module.getCore().getMinecraft().getRenderViewEntity();
Entity view = getRenderViewEntity(module.getCore().getMinecraft());
if (view != null && isHidden(view.getUniqueID())) {
event.setCanceled(true);
}
}
// See MixinRender for why this is 1.7.10 only
//#if MC<=10710
//$$ @SubscribeEvent(priority = EventPriority.HIGHEST)
//$$ public void preRenderPlayer(RenderPlayerEvent.Pre event) {
//$$ if (isHidden(event.entityPlayer.getUniqueID())) {
//$$ event.setCanceled(true);
//$$ }
//$$ }
//#endif
public boolean isSavingEnabled() {
return savingEnabled;
}

View File

@@ -20,7 +20,6 @@ import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import de.johni0702.minecraft.gui.utils.Colors;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EnumPlayerModelParts;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.util.Dimension;
import org.lwjgl.util.ReadableDimension;
@@ -32,6 +31,10 @@ import net.minecraft.init.SoundEvents;
//$$ import net.minecraft.potion.Potion;
//#endif
//#if MC>=10800
import net.minecraft.entity.player.EnumPlayerModelParts;
//#endif
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -55,7 +58,11 @@ public class PlayerOverviewGui extends GuiScreen implements Closeable {
//#if MC>=10904
getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F));
//#else
//#if MC>=10800
//$$ getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(BUTTON_SOUND, 1.0F));
//#else
//$$ getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.createPositionedSoundRecord(BUTTON_SOUND, 1.0F));
//#endif
//#endif
playersScrollable.forEach(IGuiCheckbox.class).setChecked(true);
}
@@ -66,7 +73,11 @@ public class PlayerOverviewGui extends GuiScreen implements Closeable {
//#if MC>=10904
getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F));
//#else
//#if MC>=10800
//$$ getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(BUTTON_SOUND, 1.0F));
//#else
//$$ getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.createPositionedSoundRecord(BUTTON_SOUND, 1.0F));
//#endif
//#endif
playersScrollable.forEach(IGuiCheckbox.class).setChecked(false);
}
@@ -113,13 +124,23 @@ public class PlayerOverviewGui extends GuiScreen implements Closeable {
//#if MC>=10809
if (p.isWearing(EnumPlayerModelParts.HAT)) {
//#else
//#if MC>=10800
//$$ if (p.func_175148_a(EnumPlayerModelParts.HAT)) {
//#else
//$$ {
//#endif
//#endif
renderer.drawTexturedRect(0, 0, 40, 8, size.getWidth(), size.getHeight(), 8, 8, 64, 64);
}
}
}.setSize(16, 16),
new GuiLabel().setText(p.getName()).setColor(isSpectator(p) ? Colors.DKGREY : Colors.WHITE)
new GuiLabel().setText(
//#if MC>=10800
p.getName()
//#else
//$$ p.getDisplayName()
//#endif
).setColor(isSpectator(p) ? Colors.DKGREY : Colors.WHITE)
).onClick(new Runnable() {
@Override
public void run() {
@@ -175,7 +196,11 @@ public class PlayerOverviewGui extends GuiScreen implements Closeable {
public int compare(EntityPlayer o1, EntityPlayer o2) {
if (isSpectator(o1) && !isSpectator(o2)) return 1;
if (isSpectator(o2) && !isSpectator(o1)) return -1;
//#if MC>=10800
return o1.getName().compareToIgnoreCase(o2.getName());
//#else
//$$ return o1.getDisplayName().compareToIgnoreCase(o2.getDisplayName());
//#endif
}
}
}

View File

@@ -2,14 +2,19 @@ package com.replaymod.extras.playeroverview.mixin;
import com.replaymod.extras.ReplayModExtras;
import com.replaymod.extras.playeroverview.PlayerOverview;
import net.minecraft.client.renderer.culling.ICamera;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
//#if MC>=10800
import net.minecraft.client.renderer.culling.ICamera;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
//#else
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#endif
/**
* This mixin prevents players that are hidden in the PlayerOverview from being rendered.
@@ -23,9 +28,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
* One example of the previous solution breaking is when used with VanillaEnhancements because it replaces the
* RenderManager with a new custom one which in turn will reset our registered RenderPlayer instances because
* it does so after we have already registered with the old RenderManager.
*
* For 1.7.10, that method doesn't exist, so we use a combination of the event and inject into
*/
@Mixin(value = Render.class, priority = 1200)
public abstract class MixinRender {
//#if MC>=10800
@Inject(method = "shouldRender", at=@At("HEAD"), cancellable = true)
public void replayModExtras_isPlayerHidden(Entity entity, ICamera camera, double camX, double camY, double camZ, CallbackInfoReturnable<Boolean> ci) {
ReplayModExtras.instance.get(PlayerOverview.class).ifPresent(playerOverview -> {
@@ -37,4 +45,17 @@ public abstract class MixinRender {
}
});
}
//#else
//$$ @Inject(method = "doRenderShadowAndFire", at=@At("HEAD"), cancellable = true)
//$$ private void replayModExtras_isPlayerHidden(Entity entity, double x, double y, double z, float yaw, float time, CallbackInfo ci) {
//$$ ReplayModExtras.instance.get(PlayerOverview.class).ifPresent(playerOverview -> {
//$$ if (entity instanceof EntityPlayer) {
//$$ EntityPlayer player = (EntityPlayer) entity;
//$$ if (playerOverview.isHidden(player.getUniqueID())) {
//$$ ci.cancel();
//$$ }
//$$ }
//$$ });
//$$ }
//#endif
}

View File

@@ -7,7 +7,12 @@ import de.johni0702.minecraft.gui.container.GuiScreen;
import de.johni0702.minecraft.gui.element.GuiButton;
import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.common.MinecraftForge;
//#if MC>=10800
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
//#else
//$$ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
//#endif
import static com.replaymod.core.versions.MCVer.*;