Compare commits
19 Commits
1.9.4-2.1.
...
1.11-2.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a47f579a9 | ||
|
|
96b2904e4b | ||
|
|
0c36022b47 | ||
|
|
325d041bd9 | ||
|
|
b6cf42c3be | ||
|
|
c6dec95a57 | ||
|
|
503b308043 | ||
|
|
7b491d188d | ||
|
|
fb4140a123 | ||
|
|
905ae75330 | ||
|
|
2428c01c9c | ||
|
|
260720d5ba | ||
|
|
372206fdff | ||
|
|
58b7c44a33 | ||
|
|
9f7ccb9d07 | ||
|
|
ce313596db | ||
|
|
b1661e359a | ||
|
|
7cc0ee523a | ||
|
|
09f167f10e |
Submodule ReplayStudio updated: c283a44257...12b4fdd40e
@@ -34,9 +34,9 @@ archivesBaseName = "replaymod"
|
|||||||
|
|
||||||
minecraft {
|
minecraft {
|
||||||
coreMod = 'com.replaymod.core.LoadingPlugin'
|
coreMod = 'com.replaymod.core.LoadingPlugin'
|
||||||
version = '1.9.4-12.17.0.1976'
|
version = '1.11-13.19.1.2188'
|
||||||
runDir = "eclipse"
|
runDir = "eclipse"
|
||||||
mappings = "snapshot_20160518"
|
mappings = "snapshot_20161111"
|
||||||
replace '@MOD_VERSION@', project.version
|
replace '@MOD_VERSION@', project.version
|
||||||
replace '@MC_VERSION@', project.minecraft.version
|
replace '@MC_VERSION@', project.minecraft.version
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ package com.replaymod.online.api.replay.holders;
|
|||||||
public enum MinecraftVersion {
|
public enum MinecraftVersion {
|
||||||
|
|
||||||
MC_1_8("Minecraft 1.8", "1.8"),
|
MC_1_8("Minecraft 1.8", "1.8"),
|
||||||
MC_1_9_4("Minecraft 1.9.4", "1.9.4");
|
MC_1_9_4("Minecraft 1.9.4", "1.9.4"),
|
||||||
|
MC_1_10_2("Minecraft 1.10.2", "1.10.2"),
|
||||||
|
MC_1_11("Minecraft 1.11", "1.11");
|
||||||
|
|
||||||
private String niceName, apiName;
|
private String niceName, apiName;
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,9 @@ public class ConnectionEventHandler {
|
|||||||
worldName = mc.getIntegratedServer().getWorldName();
|
worldName = mc.getIntegratedServer().getWorldName();
|
||||||
} else if (Minecraft.getMinecraft().getCurrentServerData() != null) {
|
} else if (Minecraft.getMinecraft().getCurrentServerData() != null) {
|
||||||
worldName = Minecraft.getMinecraft().getCurrentServerData().serverIP;
|
worldName = Minecraft.getMinecraft().getCurrentServerData().serverIP;
|
||||||
|
} else if (Minecraft.getMinecraft().isConnectedToRealms()) {
|
||||||
|
// we can't access the server name without tapping too deep in the Realms Library
|
||||||
|
worldName = "A Realms Server";
|
||||||
} else {
|
} else {
|
||||||
logger.info("Recording not started as the world is neither local nor remote (probably a replay).");
|
logger.info("Recording not started as the world is neither local nor remote (probably a replay).");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -178,23 +178,23 @@ public class RecordingEventHandler {
|
|||||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.OFFHAND, playerItems[1]));
|
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.OFFHAND, playerItems[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playerItems[2] != mc.thePlayer.inventory.armorInventory[0]) {
|
if (playerItems[2] != mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.FEET)) {
|
||||||
playerItems[2] = mc.thePlayer.inventory.armorInventory[0];
|
playerItems[2] = mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.FEET);
|
||||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.FEET, playerItems[2]));
|
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.FEET, playerItems[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playerItems[3] != mc.thePlayer.inventory.armorInventory[1]) {
|
if (playerItems[3] != mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.LEGS)) {
|
||||||
playerItems[3] = mc.thePlayer.inventory.armorInventory[1];
|
playerItems[3] = mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.LEGS);
|
||||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.LEGS, playerItems[3]));
|
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.LEGS, playerItems[3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playerItems[4] != mc.thePlayer.inventory.armorInventory[2]) {
|
if (playerItems[4] != mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.CHEST)) {
|
||||||
playerItems[4] = mc.thePlayer.inventory.armorInventory[2];
|
playerItems[4] = mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.CHEST);
|
||||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.CHEST, playerItems[4]));
|
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.CHEST, playerItems[4]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playerItems[5] != mc.thePlayer.inventory.armorInventory[3]) {
|
if (playerItems[5] != mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.HEAD)) {
|
||||||
playerItems[5] = mc.thePlayer.inventory.armorInventory[3];
|
playerItems[5] = mc.thePlayer.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
|
||||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.HEAD, playerItems[5]));
|
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.HEAD, playerItems[5]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,7 +234,8 @@ public class RecordingEventHandler {
|
|||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onPickupItem(ItemPickupEvent event) {
|
public void onPickupItem(ItemPickupEvent event) {
|
||||||
try {
|
try {
|
||||||
packetListener.save(new SPacketCollectItem(event.pickedUp.getEntityId(), event.player.getEntityId()));
|
packetListener.save(new SPacketCollectItem(event.pickedUp.getEntityId(), event.player.getEntityId(),
|
||||||
|
event.pickedUp.getEntityItem().getMaxStackSize()));
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,39 +87,39 @@ public class ResourcePackRecorder {
|
|||||||
final File levelDir = new File(savesDir, levelName);
|
final File levelDir = new File(savesDir, levelName);
|
||||||
|
|
||||||
if (levelDir.isFile()) {
|
if (levelDir.isFile()) {
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.ACCEPTED));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.ACCEPTED));
|
||||||
Futures.addCallback(mc.getResourcePackRepository().setResourcePackInstance(levelDir), new FutureCallback<Object>() {
|
Futures.addCallback(mc.getResourcePackRepository().setResourcePackInstance(levelDir), new FutureCallback<Object>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Object result) {
|
public void onSuccess(Object result) {
|
||||||
recordResourcePack(levelDir, requestId);
|
recordResourcePack(levelDir, requestId);
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@Nonnull Throwable throwable) {
|
public void onFailure(@Nonnull Throwable throwable) {
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
final ServerData serverData = mc.getCurrentServerData();
|
final ServerData serverData = mc.getCurrentServerData();
|
||||||
if (serverData != null && serverData.getResourceMode() == ServerData.ServerResourceMode.ENABLED) {
|
if (serverData != null && serverData.getResourceMode() == ServerData.ServerResourceMode.ENABLED) {
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.ACCEPTED));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.ACCEPTED));
|
||||||
downloadResourcePackFuture(requestId, url, hash);
|
downloadResourcePackFuture(requestId, url, hash);
|
||||||
} else if (serverData != null && serverData.getResourceMode() != ServerData.ServerResourceMode.PROMPT) {
|
} else if (serverData != null && serverData.getResourceMode() != ServerData.ServerResourceMode.PROMPT) {
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.DECLINED));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.DECLINED));
|
||||||
} else {
|
} else {
|
||||||
mc.addScheduledTask(() -> mc.displayGuiScreen(new GuiYesNo((result, id) -> {
|
mc.addScheduledTask(() -> mc.displayGuiScreen(new GuiYesNo((result, id) -> {
|
||||||
if (serverData != null) {
|
if (serverData != null) {
|
||||||
serverData.setResourceMode(result ? ServerData.ServerResourceMode.ENABLED : ServerData.ServerResourceMode.DISABLED);
|
serverData.setResourceMode(result ? ServerData.ServerResourceMode.ENABLED : ServerData.ServerResourceMode.DISABLED);
|
||||||
}
|
}
|
||||||
if (result) {
|
if (result) {
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.ACCEPTED));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.ACCEPTED));
|
||||||
downloadResourcePackFuture(requestId, url, hash);
|
downloadResourcePackFuture(requestId, url, hash);
|
||||||
} else {
|
} else {
|
||||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.DECLINED));
|
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.DECLINED));
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerList.saveSingleServer(serverData);
|
ServerList.saveSingleServer(serverData);
|
||||||
@@ -135,12 +135,12 @@ public class ResourcePackRecorder {
|
|||||||
Futures.addCallback(downloadResourcePack(requestId, url, hash), new FutureCallback() {
|
Futures.addCallback(downloadResourcePack(requestId, url, hash), new FutureCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Object result) {
|
public void onSuccess(Object result) {
|
||||||
mc.getConnection().sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
mc.getConnection().sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@Nonnull Throwable throwable) {
|
public void onFailure(@Nonnull Throwable throwable) {
|
||||||
mc.getConnection().sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
mc.getConnection().sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,7 @@ public class ResourcePackRecorder {
|
|||||||
|
|
||||||
Futures.getUnchecked(mc.addScheduledTask(() -> mc.displayGuiScreen(guiScreen)));
|
Futures.getUnchecked(mc.addScheduledTask(() -> mc.displayGuiScreen(guiScreen)));
|
||||||
|
|
||||||
Map<String, String> sessionInfo = Minecraft.getSessionInfo();
|
Map<String, String> sessionInfo = ResourcePackRepository.getDownloadHeaders();
|
||||||
repo.downloadingPacks = HttpUtil.downloadResourcePack(file, url, sessionInfo, 50 * 1024 * 1024, guiScreen, mc.getProxy());
|
repo.downloadingPacks = HttpUtil.downloadResourcePack(file, url, sessionInfo, 50 * 1024 * 1024, guiScreen, mc.getProxy());
|
||||||
Futures.addCallback(repo.downloadingPacks, new FutureCallback<Object>() {
|
Futures.addCallback(repo.downloadingPacks, new FutureCallback<Object>() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ public class InputReplayTimer extends WrappedTimer {
|
|||||||
// TODO: Translate magic values to Keyboard.KEY_ constants
|
// TODO: Translate magic values to Keyboard.KEY_ constants
|
||||||
|
|
||||||
if (key == 32 && Keyboard.isKeyDown(61) && mc.ingameGUI != null) {
|
if (key == 32 && Keyboard.isKeyDown(61) && mc.ingameGUI != null) {
|
||||||
mc.ingameGUI.getChatGUI().clearChatMessages();
|
mc.ingameGUI.getChatGUI().clearChatMessages(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == 31 && Keyboard.isKeyDown(61)) {
|
if (key == 31 && Keyboard.isKeyDown(61)) {
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ public class ReplayHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setup() {
|
private void setup() {
|
||||||
mc.ingameGUI.getChatGUI().clearChatMessages();
|
mc.ingameGUI.getChatGUI().clearChatMessages(true);
|
||||||
|
|
||||||
NetworkManager networkManager = new NetworkManager(EnumPacketDirection.CLIENTBOUND) {
|
NetworkManager networkManager = new NetworkManager(EnumPacketDirection.CLIENTBOUND) {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ import net.minecraft.network.*;
|
|||||||
import net.minecraft.network.play.server.*;
|
import net.minecraft.network.play.server.*;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.world.EnumDifficulty;
|
import net.minecraft.world.EnumDifficulty;
|
||||||
|
import net.minecraft.world.GameType;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.WorldSettings.GameType;
|
|
||||||
import net.minecraft.world.WorldType;
|
import net.minecraft.world.WorldType;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public abstract class MixinViewFrustum {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instead of calling {@link RenderChunk#setOrigin(int, int, int)} we recreate the render chunk
|
* Instead of calling {@link RenderChunk#setPosition(int, int, int)} we recreate the render chunk
|
||||||
* which seems to solve the problem that chunks are invisible when you leave an area and return
|
* which seems to solve the problem that chunks are invisible when you leave an area and return
|
||||||
* to it.
|
* to it.
|
||||||
* Any better fixes are welcome.
|
* Any better fixes are welcome.
|
||||||
@@ -59,7 +59,7 @@ public abstract class MixinViewFrustum {
|
|||||||
// Recreate render chunk instead of setting its position
|
// Recreate render chunk instead of setting its position
|
||||||
(renderChunks[(j1 * this.countChunksY + l1) * this.countChunksX + l] =
|
(renderChunks[(j1 * this.countChunksY + l1) * this.countChunksX + l] =
|
||||||
renderChunkFactory.create(world, renderGlobal, 0)
|
renderChunkFactory.create(world, renderGlobal, 0)
|
||||||
).setOrigin(blockpos.getX(), blockpos.getY(), blockpos.getZ());
|
).setPosition(blockpos.getX(), blockpos.getY(), blockpos.getZ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# To apply changes in this file run: ./gradlew clean setupDecompWorkspace idea
|
# To apply changes in this file run: ./gradlew clean setupDecompWorkspace idea
|
||||||
|
|
||||||
# Minecraft
|
# Minecraft
|
||||||
public net.minecraft.client.Minecraft field_71428_T # timer
|
public-f net.minecraft.client.Minecraft field_71428_T # timer
|
||||||
public net.minecraft.client.Minecraft field_83002_am # debugCrashKeyPressTime
|
public net.minecraft.client.Minecraft field_83002_am # debugCrashKeyPressTime
|
||||||
public net.minecraft.client.Minecraft field_71467_ac # rightClickDelayTimer
|
public net.minecraft.client.Minecraft field_71467_ac # rightClickDelayTimer
|
||||||
public net.minecraft.client.Minecraft field_71423_H # systemTime
|
public net.minecraft.client.Minecraft field_71423_H # systemTime
|
||||||
@@ -95,10 +95,10 @@ public net.minecraft.client.entity.EntityOtherPlayerMP *
|
|||||||
public net.minecraft.server.integrated.IntegratedServer field_71348_o # isGamePaused
|
public net.minecraft.server.integrated.IntegratedServer field_71348_o # isGamePaused
|
||||||
|
|
||||||
# GameSettings
|
# GameSettings
|
||||||
public net.minecraft.client.settings.GameSettings field_186714_aM # soundLevels
|
public-f net.minecraft.client.settings.GameSettings field_186714_aM # soundLevels
|
||||||
|
|
||||||
# Frustum
|
# Frustum
|
||||||
public net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper
|
public-f net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper
|
||||||
|
|
||||||
# CrashReportCategory
|
# CrashReportCategory
|
||||||
public net.minecraft.crash.CrashReportCategory field_85077_c # children
|
public net.minecraft.crash.CrashReportCategory field_85077_c # children
|
||||||
|
|||||||
Reference in New Issue
Block a user