diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/build.gradle b/build.gradle old mode 100644 new mode 100755 index e6b56606..c1a9280f --- a/build.gradle +++ b/build.gradle @@ -77,3 +77,19 @@ processResources exclude 'mcmod.info' } } + + +def shade() { + exec { + executable "./shade.sh" + args "./build/libs/replaymod-0.6.jar", "./libs", "replaymod-0.6.jar" + } +} + +task doShade { + doLast { + shade() + } +} + +defaultTasks 'build', 'doShade' \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 diff --git a/gradlew.bat b/gradlew.bat old mode 100644 new mode 100755 diff --git a/lib/monte-cc.jar b/libs/monte-cc.jar similarity index 100% rename from lib/monte-cc.jar rename to libs/monte-cc.jar diff --git a/libs/replaystudio-0.0.1-SNAPSHOT-all.jar b/libs/replaystudio-0.0.1-SNAPSHOT-all.jar new file mode 100644 index 00000000..78d9e328 Binary files /dev/null and b/libs/replaystudio-0.0.1-SNAPSHOT-all.jar differ diff --git a/shade.sh b/shade.sh new file mode 100644 index 00000000..9557299f --- /dev/null +++ b/shade.sh @@ -0,0 +1,17 @@ +#!/bin/sh +JARPATH="$1" +LIBSPATH="$2" +FILENAME="$3" + +TEMPDIR="./tempdir" +mkdir $TEMPDIR + +unzip -o $LIBSPATH"/*.jar" -d $TEMPDIR +unzip -o $JARPATH -d $TEMPDIR + +JARDIR=$(dirname "$JARPATH") + +#Thanks to johni0702 for the following line of code <3 +cd $TEMPDIR && ls | zip -r -@ "../$JARDIR/$FILENAME" && cd .. + +rm -r $TEMPDIR \ No newline at end of file diff --git a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/ApiClient.java b/src/main/java/eu/crushedpixel/replaymod/api/client/ApiClient.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/ApiException.java b/src/main/java/eu/crushedpixel/replaymod/api/client/ApiException.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/ApiMethods.java b/src/main/java/eu/crushedpixel/replaymod/api/client/ApiMethods.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/FileUploader.java b/src/main/java/eu/crushedpixel/replaymod/api/client/FileUploader.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/GsonApiClient.java b/src/main/java/eu/crushedpixel/replaymod/api/client/GsonApiClient.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/QueryBuilder.java b/src/main/java/eu/crushedpixel/replaymod/api/client/QueryBuilder.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/SearchPagination.java b/src/main/java/eu/crushedpixel/replaymod/api/client/SearchPagination.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/SearchQuery.java b/src/main/java/eu/crushedpixel/replaymod/api/client/SearchQuery.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/SimpleApiClient.java b/src/main/java/eu/crushedpixel/replaymod/api/client/SimpleApiClient.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/ApiError.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/ApiError.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/AuthKey.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/AuthKey.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/Category.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/Category.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/FileInfo.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/FileInfo.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/Rating.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/Rating.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/SearchResult.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/SearchResult.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/Success.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/Success.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/api/client/holders/UserFiles.java b/src/main/java/eu/crushedpixel/replaymod/api/client/holders/UserFiles.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/chat/ChatMessageRequests.java b/src/main/java/eu/crushedpixel/replaymod/chat/ChatMessageRequests.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/coremod/ClassTransformer.java b/src/main/java/eu/crushedpixel/replaymod/coremod/ClassTransformer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/coremod/LoadingPlugin.java b/src/main/java/eu/crushedpixel/replaymod/coremod/LoadingPlugin.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java b/src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/events/GuiEventHandler.java b/src/main/java/eu/crushedpixel/replaymod/events/GuiEventHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/events/GuiReplayOverlay.java b/src/main/java/eu/crushedpixel/replaymod/events/GuiReplayOverlay.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/events/KeyInputHandler.java b/src/main/java/eu/crushedpixel/replaymod/events/KeyInputHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java b/src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java b/src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java old mode 100644 new mode 100755 index f4e543b5..5813efa2 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java @@ -42,4 +42,7 @@ public class GuiConstants { public static final int REPLAY_EDITOR_UP_BUTTON = 5006; public static final int REPLAY_EDITOR_DOWN_BUTTON = 5007; + + public static final int REPLAY_EDITOR_REMOVE_BUTTON = 5008; + public static final int REPLAY_EDITOR_ADD_BUTTON = 5009; } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySaving.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySaving.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySettings.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySettings.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySpeedSlider.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySpeedSlider.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiSpectateSelection.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiSpectateSelection.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoFramerateSlider.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoFramerateSlider.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoQualitySlider.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoQualitySlider.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java b/src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiArrowButton.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiArrowButton.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java old mode 100644 new mode 100755 index 2b21da16..ef6f06fc --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java @@ -190,4 +190,8 @@ public class GuiDropdown extends GuiTextField { public void removeSelectionListener(SelectionListener listener) { this.selectionListeners.remove(listener); } + + public boolean isExpanded() { + return open; + } } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiEntryList.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiEntryList.java old mode 100644 new mode 100755 index 7be42ac8..1d6b8db1 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiEntryList.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiEntryList.java @@ -42,7 +42,7 @@ public class GuiEntryList extends GuiTextField { //drawing the entries for(int i=0; i-upperIndex= elements.size()) break; if(i == selectionIndex) { @@ -84,6 +84,7 @@ public class GuiEntryList extends GuiTextField { @Override public void mouseClicked(int xPos, int yPos, int mouseButton) { + if(!(xPos >= xPosition && xPos <= xPosition+width && yPos >= yPosition && yPos <= yPosition+height)) return; int clickedIndex = (int)Math.floor((yPos-yPosition) / elementHeight) + upperIndex; if(clickedIndex < elements.size() && clickedIndex >= 0) { selectionIndex = clickedIndex; @@ -96,7 +97,7 @@ public class GuiEntryList extends GuiTextField { listener.onSelectionChanged(selectionIndex); } } - + @Override public void setText(String text) {} @@ -122,13 +123,16 @@ public class GuiEntryList extends GuiTextField { } public T getElement(int index) { - return elements.get(index); + if(index >= 0) { + return elements.get(index); + } + return null; } public int getSelectionIndex() { return selectionIndex; } - + public void setSelectionIndex(int index) { this.selectionIndex = index; if(selectionIndex < 0) selectionIndex = -1; diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiMouseInput.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiMouseInput.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiNumberInput.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiNumberInput.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListEntry.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListEntry.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListExtended.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListExtended.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/SelectionListener.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/SelectionListener.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiLoginPrompt.java b/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiLoginPrompt.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java b/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiUploadFile.java b/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiUploadFile.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/online/ReplayFileList.java b/src/main/java/eu/crushedpixel/replaymod/gui/online/ReplayFileList.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiConnectPart.java b/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiConnectPart.java old mode 100644 new mode 100755 index 8c188d5a..232e6765 --- a/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiConnectPart.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiConnectPart.java @@ -2,6 +2,7 @@ package eu.crushedpixel.replaymod.gui.replaystudio; import java.awt.Color; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -24,13 +25,13 @@ public class GuiConnectPart extends GuiStudioPart { private static final String TITLE = "Connect Replays"; private boolean initialized = false; - + private GuiEntryList concatList; private GuiDropdown replayDropdown; - + private GuiButton removeButton, addButton; private GuiArrowButton upButton, downButton; - + private List replayFiles; private List filesToConcat; @@ -65,9 +66,9 @@ public class GuiConnectPart extends GuiStudioPart { concatList.setElements(filesToConcat); concatList.setSelectionIndex(0); - + replayDropdown = new GuiDropdown(1, fontRendererObj, 250, yPos+5, 0, 4); - + replayDropdown.clearElements(); replayFiles = ReplayFileIO.getAllReplayFiles(); int index = -1; @@ -80,19 +81,20 @@ public class GuiConnectPart extends GuiStudioPart { } i++; } - + replayDropdown.setSelectionPos(index); - + replayDropdown.addSelectionListener(new SelectionListener() { - + @Override public void onSelectionChanged(int selectionIndex) { - filesToConcat.set(concatList.getSelectionIndex(), (String)replayDropdown.getElement(selectionIndex)); - concatList.setElements(filesToConcat); - + try { + filesToConcat.set(concatList.getSelectionIndex(), (String)replayDropdown.getElement(selectionIndex)); + concatList.setElements(filesToConcat); + } catch(Exception e) {} //Sorry, too lazy to properly avoid this Exception here } }); - + concatList.addSelectionListener(new SelectionListener() { @Override public void onSelectionChanged(int selectionIndex) { @@ -106,54 +108,58 @@ public class GuiConnectPart extends GuiStudioPart { } i++; } + removeButton.enabled = upButton.enabled = downButton.enabled = !(selectionIndex < 0 || selectionIndex >= filesToConcat.size()); + if(upButton.enabled && selectionIndex == 0) upButton.enabled = false; + if(downButton.enabled && selectionIndex == filesToConcat.size()-1) downButton.enabled = false; } }); - + upButton = new GuiArrowButton(GuiConstants.REPLAY_EDITOR_UP_BUTTON, 195, yPos+40, "", true); buttonList.add(upButton); - + downButton = new GuiArrowButton(GuiConstants.REPLAY_EDITOR_DOWN_BUTTON, 219, yPos+40, "", false); buttonList.add(downButton); - + int w = GuiReplayStudio.instance.width-243-20-4; - - removeButton = new GuiButton(1, 243, yPos+40, "Remove"); + + removeButton = new GuiButton(GuiConstants.REPLAY_EDITOR_REMOVE_BUTTON, 249, yPos+40, "Remove"); buttonList.add(removeButton); - - addButton = new GuiButton(1, 0, yPos+40, "Add"); + + addButton = new GuiButton(GuiConstants.REPLAY_EDITOR_ADD_BUTTON, 0, yPos+40, "Add"); buttonList.add(addButton); - + + concatList.setSelectionIndex(0); } - - int w = GuiReplayStudio.instance.width-243-20-4; - addButton.xPosition = 243+6+(w/2); - + + int w = GuiReplayStudio.instance.width-249-20-4; + addButton.xPosition = 249+6+(w/2); + addButton.width = w/2+2; removeButton.width = w/2+2; - - replayDropdown.width = GuiReplayStudio.instance.width-250-20; - + + replayDropdown.width = GuiReplayStudio.instance.width-250-18; + int h = GuiReplayStudio.instance.height-yPos-20; int rows = (int)(h / (float)GuiEntryList.elementHeight); concatList.setVisibleElements(rows); - + initialized = true; } @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) { + public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { + super.mouseClicked(mouseX, mouseY, mouseButton); //call this first to ensure the dropdown is still open concatList.mouseClicked(mouseX, mouseY, mouseButton); replayDropdown.mouseClicked(mouseX, mouseY, mouseButton); } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); concatList.drawTextBox(); replayDropdown.drawTextBox(); - + drawString(fontRendererObj, "Replay:", 200, yPos+5+7, Color.WHITE.getRGB()); - - super.drawScreen(mouseX, mouseY, partialTicks); } @Override @@ -165,4 +171,28 @@ public class GuiConnectPart extends GuiStudioPart { public void keyTyped(char typedChar, int keyCode) { } + + @Override + protected void actionPerformed(GuiButton button) { + if(!button.enabled || replayDropdown.isExpanded()) { + return; + } + + if(button.id == GuiConstants.REPLAY_EDITOR_ADD_BUTTON) { + filesToConcat.add(FilenameUtils.getBaseName(replayFiles.get(0).getAbsolutePath())); + concatList.setElements(filesToConcat); + concatList.setSelectionIndex(filesToConcat.size()-1); + } else if(button.id == GuiConstants.REPLAY_EDITOR_REMOVE_BUTTON) { + int indexBefore = concatList.getSelectionIndex(); + if(indexBefore >= 0 && indexBefore < filesToConcat.size()) { + filesToConcat.remove(indexBefore); + concatList.setElements(filesToConcat); + if(filesToConcat.size() <= indexBefore) { + concatList.setSelectionIndex(filesToConcat.size()-1); + } else { + concatList.setSelectionIndex(indexBefore); + } + } + } + } } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiReplayStudio.java b/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiReplayStudio.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiStudioPart.java b/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiStudioPart.java old mode 100644 new mode 100755 index ae51e394..405d7668 --- a/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiStudioPart.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiStudioPart.java @@ -1,5 +1,7 @@ package eu.crushedpixel.replaymod.gui.replaystudio; +import java.io.IOException; + import net.minecraft.client.gui.GuiScreen; public abstract class GuiStudioPart extends GuiScreen { @@ -20,5 +22,7 @@ public abstract class GuiStudioPart extends GuiScreen { public abstract void keyTyped(char typedChar, int keyCode); @Override - public abstract void mouseClicked(int mouseX, int mouseY, int mouseButton); + public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { + super.mouseClicked(mouseX, mouseY, mouseButton); + } } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiTrimPart.java b/src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiTrimPart.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiRenameReplay.java b/src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiRenameReplay.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiReplayViewer.java b/src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiReplayViewer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/ReplayList.java b/src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/ReplayList.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/Keyframe.java b/src/main/java/eu/crushedpixel/replaymod/holders/Keyframe.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeComparator.java b/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeComparator.java old mode 100644 new mode 100755 index 309f4e7d..b56c28e6 --- a/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeComparator.java +++ b/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeComparator.java @@ -10,7 +10,7 @@ public class KeyframeComparator implements Comparator { public int compare(Keyframe o1, Keyframe o2) { if(ReplayHandler.isSelected(o1)) return 1; if(ReplayHandler.isSelected(o2)) return -1; - return o1.getRealTimestamp()-o2.getRealTimestamp(); + return ((Integer)o1.getRealTimestamp()).compareTo(o2.getRealTimestamp()); } } diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/PacketData.java b/src/main/java/eu/crushedpixel/replaymod/holders/PacketData.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/Position.java b/src/main/java/eu/crushedpixel/replaymod/holders/Position.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/PositionKeyframe.java b/src/main/java/eu/crushedpixel/replaymod/holders/PositionKeyframe.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/TimeInfo.java b/src/main/java/eu/crushedpixel/replaymod/holders/TimeInfo.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/TimeKeyframe.java b/src/main/java/eu/crushedpixel/replaymod/holders/TimeKeyframe.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/interpolation/BasicSpline.java b/src/main/java/eu/crushedpixel/replaymod/interpolation/BasicSpline.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/interpolation/Cubic.java b/src/main/java/eu/crushedpixel/replaymod/interpolation/Cubic.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/interpolation/LinearInterpolation.java b/src/main/java/eu/crushedpixel/replaymod/interpolation/LinearInterpolation.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/interpolation/LinearPoint.java b/src/main/java/eu/crushedpixel/replaymod/interpolation/LinearPoint.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/interpolation/LinearTimestamp.java b/src/main/java/eu/crushedpixel/replaymod/interpolation/LinearTimestamp.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/interpolation/SplinePoint.java b/src/main/java/eu/crushedpixel/replaymod/interpolation/SplinePoint.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/online/authentication/AuthenticationHandler.java b/src/main/java/eu/crushedpixel/replaymod/online/authentication/AuthenticationHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/ConnectionEventHandler.java b/src/main/java/eu/crushedpixel/replaymod/recording/ConnectionEventHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java b/src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java b/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/PacketSerializer.java b/src/main/java/eu/crushedpixel/replaymod/recording/PacketSerializer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/ReplayMetaData.java b/src/main/java/eu/crushedpixel/replaymod/recording/ReplayMetaData.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/reflection/MCPEnvironment.java b/src/main/java/eu/crushedpixel/replaymod/reflection/MCPEnvironment.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/reflection/MCPNames.java b/src/main/java/eu/crushedpixel/replaymod/reflection/MCPNames.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java b/src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/registry/ReplayGuiRegistry.java b/src/main/java/eu/crushedpixel/replaymod/registry/ReplayGuiRegistry.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java b/src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/LesserDataWatcher.java b/src/main/java/eu/crushedpixel/replaymod/replay/LesserDataWatcher.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/OpenEmbeddedChannel.java b/src/main/java/eu/crushedpixel/replaymod/replay/OpenEmbeddedChannel.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/PacketDeserializer.java b/src/main/java/eu/crushedpixel/replaymod/replay/PacketDeserializer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/PacketInfo.java b/src/main/java/eu/crushedpixel/replaymod/replay/PacketInfo.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java old mode 100644 new mode 100755 index 98ae1686..ae46b1cf --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java @@ -48,6 +48,8 @@ public class ReplayProcess { } public static void startReplayProcess(boolean record) { + ReplayHandler.selectKeyframe(null); + isVideoRecording = record; lastPosition = null; motionSpline = null; @@ -295,15 +297,13 @@ public class ReplayProcess { private static void recordingTick() { if(ReplayHandler.isHurrying()) { - if(!isVideoRecording()) { - lastRealTime = System.currentTimeMillis(); - } return; } if(blocked && isVideoRecording()) { return; } + deepBlock = true; blocked = true; @@ -345,15 +345,8 @@ public class ReplayProcess { motionSpline.calcSpline(); } - long timeStep; - long curTime = System.currentTimeMillis(); - - if(isVideoRecording()) { - timeStep = 1000/ReplayMod.replaySettings.getVideoFramerate(); - } else { - timeStep = curTime - lastRealTime; - } + long timeStep = 1000/ReplayMod.replaySettings.getVideoFramerate(); int curRealReplayTime = (int)(lastRealReplayTime + timeStep); @@ -409,14 +402,20 @@ public class ReplayProcess { } } - int currentDiff = nextPosStamp - lastPosStamp; - int current = curRealReplayTime - lastPosStamp; + int currentPosDiff = nextPosStamp - lastPosStamp; + int currentPos = curRealReplayTime - lastPosStamp; - float currentStepPerc = (float)current/(float)currentDiff; //The percentage of the travelled path between the current positions - if(Float.isInfinite(currentStepPerc)) currentStepPerc = 0; + float currentPosStepPerc = (float)currentPos/(float)currentPosDiff; //The percentage of the travelled path between the current positions + if(Float.isInfinite(currentPosStepPerc)) currentPosStepPerc = 0; - float splinePos = ((float)ReplayHandler.getKeyframeIndex(lastPos) + currentStepPerc)/(float)(ReplayHandler.getPosKeyframeCount()-1); - float timePos = ((float)ReplayHandler.getKeyframeIndex(lastTime) + currentStepPerc)/(float)(ReplayHandler.getTimeKeyframeCount()-1); + int currentTimeDiff = nextTimeStamp - lastTimeStamp; + int currentTime = curRealReplayTime - lastTimeStamp; + + float currentTimeStepPerc = (float)currentTime/(float)currentTimeDiff; //The percentage of the travelled path between the current timestamps + if(Float.isInfinite(currentTimeStepPerc)) currentTimeStepPerc = 0; + + float splinePos = ((float)ReplayHandler.getKeyframeIndex(lastPos) + currentPosStepPerc)/(float)(ReplayHandler.getPosKeyframeCount()-1); + float timePos = ((float)ReplayHandler.getKeyframeIndex(lastTime) + currentTimeStepPerc)/(float)(ReplayHandler.getTimeKeyframeCount()-1); Position pos = null; if(!linear) { diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java old mode 100644 new mode 100755 index 345bbc34..e65868e3 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java @@ -13,11 +13,14 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.List; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiDownloadTerrain; import net.minecraft.client.particle.EffectRenderer; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.network.EnumConnectionState; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; @@ -29,6 +32,8 @@ import net.minecraft.network.play.server.S07PacketRespawn; import net.minecraft.network.play.server.S08PacketPlayerPosLook; import net.minecraft.network.play.server.S0BPacketAnimation; import net.minecraft.network.play.server.S0CPacketSpawnPlayer; +import net.minecraft.network.play.server.S0EPacketSpawnObject; +import net.minecraft.network.play.server.S0FPacketSpawnMob; import net.minecraft.network.play.server.S1CPacketEntityMetadata; import net.minecraft.network.play.server.S1DPacketEntityEffect; import net.minecraft.network.play.server.S1FPacketSetExperience; @@ -56,6 +61,7 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipFile; import org.apache.commons.io.FilenameUtils; +import com.google.common.base.Predicate; import com.google.gson.Gson; import eu.crushedpixel.replaymod.ReplayMod; @@ -250,7 +256,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { lastPacketSent = System.currentTimeMillis(); ReplayHandler.restartReplay(); } - + while(!terminate && !startFromBeginning && (!paused() || FMLClientHandler.instance().isGUIOpen(GuiDownloadTerrain.class))) { try { /* @@ -355,7 +361,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { private static Field playerUUIDField; private static Field gameProfileField; - + //private static Field dataWatcherField; static { @@ -365,7 +371,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { gameProfileField = S38PacketPlayerListItem.AddPlayerData.class.getDeclaredField("field_179964_d"); gameProfileField.setAccessible(true); - + //dataWatcherField = S0CPacketSpawnPlayer.class.getDeclaredField(MCPNames.field("field_148960_i")); //dataWatcherField.setAccessible(true); } catch(Exception e) { @@ -398,7 +404,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { if(p instanceof S45PacketTitle || p instanceof S2APacketParticles) return; } - + if(p instanceof S29PacketSoundEffect && ReplayHandler.isInPath() && ReplayProcess.isVideoRecording()) { return; } @@ -416,6 +422,22 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { if(badPackets.contains(p.getClass())) return; + /* + if(p instanceof S0EPacketSpawnObject) { + if(mc.theWorld != null) { + List arrows = mc.theWorld.getEntities(EntityArrow.class, new Predicate() { + @Override + public boolean apply(EntityArrow input) { + return true; + } + }); + if(arrows.size() > 20) { + System.out.println(currentTimeStamp); + } + } + } + */ + try { if(p instanceof S1CPacketEntityMetadata) { if((Integer)metadataPacketEntityId.get(p) == actualID) { @@ -437,11 +459,12 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { p = new S01PacketJoinGame(entId, GameType.SPECTATOR, false, dimension, difficulty, maxPlayers, worldType, false); } - + if(p instanceof S07PacketRespawn) { S07PacketRespawn respawn = (S07PacketRespawn)p; p = new S07PacketRespawn(respawn.func_149082_c(), respawn.func_149081_d(), respawn.func_149080_f(), GameType.SPECTATOR); + allowMovement = true; } @@ -474,15 +497,15 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { p = sp; } - */ - + */ + /* if(p instanceof S0CPacketSpawnPlayer) { System.out.println(dataWatcherField.get(p)); System.out.println(((S0CPacketSpawnPlayer) p).func_148944_c()); } - */ - + */ + if(p instanceof S08PacketPlayerPosLook) { final S08PacketPlayerPosLook ppl = (S08PacketPlayerPosLook)p; @@ -510,7 +533,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { } Entity ent = ReplayHandler.getCameraEntity(); - + if(ent == null || !(ent instanceof CameraEntity)) ent = new CameraEntity(mc.theWorld); CameraEntity cent = (CameraEntity)ent; cent.moveAbsolute(ppl.func_148932_c(), ppl.func_148928_d(), ppl.func_148933_e()); @@ -525,7 +548,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { if(p instanceof S43PacketCamera) { return; } - + super.channelRead(ctx, p); } catch(Exception e) { System.out.println(p.getClass()); diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/TimeHandler.java b/src/main/java/eu/crushedpixel/replaymod/replay/TimeHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/spectate/SpectateHandler.java b/src/main/java/eu/crushedpixel/replaymod/replay/spectate/SpectateHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/settings/ReplaySettings.java b/src/main/java/eu/crushedpixel/replaymod/settings/ReplaySettings.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java b/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java old mode 100644 new mode 100755 index 129e883e..badfad91 --- a/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java +++ b/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java @@ -1,13 +1,11 @@ package eu.crushedpixel.replaymod.studio; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import de.johni0702.replaystudio.Studio; -import de.johni0702.replaystudio.collection.PacketData; +import de.johni0702.replaystudio.PacketData; import de.johni0702.replaystudio.filter.RemoveFilter; import de.johni0702.replaystudio.filter.SquashFilter; import de.johni0702.replaystudio.io.ReplayOutputStream; diff --git a/src/main/java/eu/crushedpixel/replaymod/studio/VersionValidator.java b/src/main/java/eu/crushedpixel/replaymod/studio/VersionValidator.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/timer/EnchantmentTimer.java b/src/main/java/eu/crushedpixel/replaymod/timer/EnchantmentTimer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java b/src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/utils/ImageUtils.java b/src/main/java/eu/crushedpixel/replaymod/utils/ImageUtils.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/utils/MouseUtils.java b/src/main/java/eu/crushedpixel/replaymod/utils/MouseUtils.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/utils/ReplayFileIO.java b/src/main/java/eu/crushedpixel/replaymod/utils/ReplayFileIO.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/utils/ResourceHelper.java b/src/main/java/eu/crushedpixel/replaymod/utils/ResourceHelper.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/utils/StreamTools.java b/src/main/java/eu/crushedpixel/replaymod/utils/StreamTools.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/utils/ZipFileUtils.java b/src/main/java/eu/crushedpixel/replaymod/utils/ZipFileUtils.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/video/ReplayScreenshot.java b/src/main/java/eu/crushedpixel/replaymod/video/ReplayScreenshot.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/video/ReplayTimer.java b/src/main/java/eu/crushedpixel/replaymod/video/ReplayTimer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/video/ScreenCapture.java b/src/main/java/eu/crushedpixel/replaymod/video/ScreenCapture.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/crushedpixel/replaymod/video/VideoWriter.java b/src/main/java/eu/crushedpixel/replaymod/video/VideoWriter.java old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/replaymod/.DS_Store b/src/main/resources/assets/replaymod/.DS_Store old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/replaymod/extended_gui.png b/src/main/resources/assets/replaymod/extended_gui.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/replaymod/replay_gui.png b/src/main/resources/assets/replaymod/replay_gui.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/replaymod/timeline_icons.png b/src/main/resources/assets/replaymod/timeline_icons.png old mode 100644 new mode 100755 diff --git a/src/main/resources/default_thumb.jpg b/src/main/resources/default_thumb.jpg old mode 100644 new mode 100755 diff --git a/src/main/resources/fields.csv b/src/main/resources/fields.csv old mode 100644 new mode 100755 diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info old mode 100644 new mode 100755 diff --git a/src/main/resources/methods.csv b/src/main/resources/methods.csv old mode 100644 new mode 100755 diff --git a/src/main/resources/params.csv b/src/main/resources/params.csv old mode 100644 new mode 100755