Updated build.gradle to automatically build fat jars with the dependencies in the /libs folder. This utilizes the shade.sh shell script. Use ./gradlew without explicitely invoking the build task, as this will automatically build a fat jar.
Sorry for this painful commit, but git somehow f'd up and sees changes in files where there aren't any.
This commit is contained in:
0
src/main/java/eu/crushedpixel/replaymod/ReplayMod.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/ReplayMod.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/ApiClient.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/ApiClient.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/ApiException.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/ApiException.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/ApiMethods.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/ApiMethods.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/FileUploader.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/FileUploader.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/GsonApiClient.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/GsonApiClient.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/QueryBuilder.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/QueryBuilder.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/SearchPagination.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/SearchPagination.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/SearchQuery.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/SearchQuery.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/SimpleApiClient.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/SimpleApiClient.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/ApiError.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/ApiError.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/AuthKey.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/AuthKey.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/Category.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/Category.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/FileInfo.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/FileInfo.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/Rating.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/Rating.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/SearchResult.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/SearchResult.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/Success.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/Success.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/UserFiles.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/api/client/holders/UserFiles.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/chat/ChatMessageRequests.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/chat/ChatMessageRequests.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/coremod/ClassTransformer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/coremod/ClassTransformer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/coremod/LoadingPlugin.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/coremod/LoadingPlugin.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/GuiEventHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/GuiEventHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/GuiReplayOverlay.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/GuiReplayOverlay.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/KeyInputHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/KeyInputHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/MinecraftTicker.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/events/RecordingHandler.java
Normal file → Executable file
3
src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java
Normal file → Executable file
3
src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java
Normal file → Executable file
@@ -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;
|
||||
}
|
||||
|
||||
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySaving.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySaving.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySettings.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySettings.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySpeedSlider.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiReplaySpeedSlider.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiSpectateSelection.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiSpectateSelection.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoFramerateSlider.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoFramerateSlider.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoQualitySlider.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoQualitySlider.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/PasswordTextField.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiArrowButton.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiArrowButton.java
Normal file → Executable file
4
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java
Normal file → Executable file
4
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java
Normal file → Executable file
@@ -190,4 +190,8 @@ public class GuiDropdown<T> extends GuiTextField {
|
||||
public void removeSelectionListener(SelectionListener listener) {
|
||||
this.selectionListeners.remove(listener);
|
||||
}
|
||||
|
||||
public boolean isExpanded() {
|
||||
return open;
|
||||
}
|
||||
}
|
||||
|
||||
12
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiEntryList.java
Normal file → Executable file
12
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiEntryList.java
Normal file → Executable file
@@ -42,7 +42,7 @@ public class GuiEntryList<T> extends GuiTextField {
|
||||
//drawing the entries
|
||||
for(int i=0; i-upperIndex<visibleElements; i++) {
|
||||
if(i<upperIndex) continue;
|
||||
|
||||
|
||||
if(i >= elements.size()) break;
|
||||
|
||||
if(i == selectionIndex) {
|
||||
@@ -84,6 +84,7 @@ public class GuiEntryList<T> 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<T> extends GuiTextField {
|
||||
listener.onSelectionChanged(selectionIndex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setText(String text) {}
|
||||
|
||||
@@ -122,13 +123,16 @@ public class GuiEntryList<T> 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;
|
||||
|
||||
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiMouseInput.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiMouseInput.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiNumberInput.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiNumberInput.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListEntry.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListEntry.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListExtended.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiReplayListExtended.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/SelectionListener.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/elements/listeners/SelectionListener.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/GuiLoginPrompt.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/GuiLoginPrompt.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/GuiUploadFile.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/GuiUploadFile.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/ReplayFileList.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/online/ReplayFileList.java
Normal file → Executable file
94
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiConnectPart.java
Normal file → Executable file
94
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiConnectPart.java
Normal file → Executable file
@@ -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<String> concatList;
|
||||
private GuiDropdown<String> replayDropdown;
|
||||
|
||||
|
||||
private GuiButton removeButton, addButton;
|
||||
private GuiArrowButton upButton, downButton;
|
||||
|
||||
|
||||
private List<File> replayFiles;
|
||||
private List<String> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
0
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiReplayStudio.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiReplayStudio.java
Normal file → Executable file
6
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiStudioPart.java
Normal file → Executable file
6
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiStudioPart.java
Normal file → Executable file
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
0
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiTrimPart.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replaystudio/GuiTrimPart.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiRenameReplay.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiRenameReplay.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiReplayViewer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/GuiReplayViewer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/ReplayList.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/gui/replayviewer/ReplayList.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/Keyframe.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/Keyframe.java
Normal file → Executable file
2
src/main/java/eu/crushedpixel/replaymod/holders/KeyframeComparator.java
Normal file → Executable file
2
src/main/java/eu/crushedpixel/replaymod/holders/KeyframeComparator.java
Normal file → Executable file
@@ -10,7 +10,7 @@ public class KeyframeComparator implements Comparator<Keyframe> {
|
||||
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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
0
src/main/java/eu/crushedpixel/replaymod/holders/PacketData.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/PacketData.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/Position.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/Position.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/PositionKeyframe.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/PositionKeyframe.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/TimeInfo.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/TimeInfo.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/TimeKeyframe.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/holders/TimeKeyframe.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/BasicSpline.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/BasicSpline.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/Cubic.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/Cubic.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/LinearInterpolation.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/LinearInterpolation.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/LinearPoint.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/LinearPoint.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/LinearTimestamp.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/LinearTimestamp.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/SplinePoint.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/interpolation/SplinePoint.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/online/authentication/AuthenticationHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/online/authentication/AuthenticationHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/ConnectionEventHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/ConnectionEventHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/DataListener.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/PacketSerializer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/PacketSerializer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/ReplayMetaData.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/recording/ReplayMetaData.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/reflection/MCPEnvironment.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/reflection/MCPEnvironment.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/reflection/MCPNames.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/reflection/MCPNames.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/registry/KeybindRegistry.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/registry/ReplayGuiRegistry.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/registry/ReplayGuiRegistry.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/renderer/SafeEntityRenderer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/LesserDataWatcher.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/LesserDataWatcher.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/OpenEmbeddedChannel.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/OpenEmbeddedChannel.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/PacketDeserializer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/PacketDeserializer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/PacketInfo.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/PacketInfo.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java
Normal file → Executable file
33
src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java
Normal file → Executable file
33
src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java
Normal file → Executable file
@@ -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) {
|
||||
|
||||
45
src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java
Normal file → Executable file
45
src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java
Normal file → Executable file
@@ -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<EntityArrow> arrows = mc.theWorld.getEntities(EntityArrow.class, new Predicate<EntityArrow>() {
|
||||
@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());
|
||||
|
||||
0
src/main/java/eu/crushedpixel/replaymod/replay/TimeHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/TimeHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/spectate/SpectateHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/replay/spectate/SpectateHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/settings/ReplaySettings.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/settings/ReplaySettings.java
Normal file → Executable file
4
src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java
Normal file → Executable file
4
src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java
Normal file → Executable file
@@ -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;
|
||||
|
||||
0
src/main/java/eu/crushedpixel/replaymod/studio/VersionValidator.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/studio/VersionValidator.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/timer/EnchantmentTimer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/timer/EnchantmentTimer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/timer/MCTimerHandler.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ImageUtils.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ImageUtils.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/MouseUtils.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/MouseUtils.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ReplayFileIO.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ReplayFileIO.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ResourceHelper.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ResourceHelper.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/StreamTools.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/StreamTools.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ZipFileUtils.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/utils/ZipFileUtils.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/video/ReplayScreenshot.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/video/ReplayScreenshot.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/video/ReplayTimer.java
Normal file → Executable file
0
src/main/java/eu/crushedpixel/replaymod/video/ReplayTimer.java
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user