From ef39c7466dd764d34c4d1225a93bdf7df0d887db Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Fri, 10 Jul 2015 04:27:15 +0200 Subject: [PATCH] Renamed the commonly used Position POJO into AdvancedPosition, as it also hold pitch, yaw and roll Made GuiDropdown only accept instances of GuiEntryListEntry to avoid unneccessary toString() methods returning the name Added GuiEntryListValueEntry which holds a Value and a Name to be displayed Continued work on GuiObjectManager --- .../replaymod/assets/AssetRepository.java | 10 ++++ .../replaymod/assets/CustomImageObject.java | 36 ++++++------- .../replaymod/entities/CameraEntity.java | 6 +-- .../events/KeyframesModifyEvent.java | 4 +- .../replaymod/gui/GuiEditKeyframe.java | 10 ++-- .../replaymod/gui/GuiObjectManager.java | 19 ++++--- .../replaymod/gui/GuiRenderSettings.java | 8 ++- .../replaymod/gui/elements/GuiDropdown.java | 7 +-- .../timelines/GuiKeyframeTimeline.java | 12 ++--- .../replaymod/gui/online/GuiReplayCenter.java | 15 +++--- .../gui/overlay/GuiReplayOverlay.java | 20 ++++---- .../gui/replayeditor/GuiReplayEditor.java | 7 +-- .../replaymod/holders/AdvancedPosition.java | 51 +++++++++++++++++++ .../holders/GuiEntryListValueEntry.java | 17 +++++++ .../replaymod/holders/KeyframeSet.java | 8 +-- .../replaymod/holders/MarkerKeyframe.java | 2 +- .../replaymod/holders/NumberValue.java | 20 ++++++++ .../replaymod/holders/Position.java | 30 +---------- .../replaymod/holders/Transformation.java | 18 +++++++ .../replaymod/holders/Transformations.java | 15 +++--- .../replaymod/interpolation/KeyframeList.java | 4 +- .../replaymod/recording/PacketListener.java | 4 +- .../renderer/PathPreviewRenderer.java | 24 ++++----- .../replaymod/replay/ReplayHandler.java | 28 +++++----- .../replaymod/replay/ReplayProcess.java | 22 ++++---- .../replaymod/replay/ReplaySender.java | 4 +- .../replaymod/video/VideoRenderer.java | 20 ++++---- .../assets/replaymod/lang/en_US.lang | 3 +- 28 files changed, 260 insertions(+), 164 deletions(-) create mode 100755 src/main/java/eu/crushedpixel/replaymod/holders/AdvancedPosition.java create mode 100644 src/main/java/eu/crushedpixel/replaymod/holders/GuiEntryListValueEntry.java create mode 100644 src/main/java/eu/crushedpixel/replaymod/holders/NumberValue.java mode change 100755 => 100644 src/main/java/eu/crushedpixel/replaymod/holders/Position.java create mode 100644 src/main/java/eu/crushedpixel/replaymod/holders/Transformation.java diff --git a/src/main/java/eu/crushedpixel/replaymod/assets/AssetRepository.java b/src/main/java/eu/crushedpixel/replaymod/assets/AssetRepository.java index b949f2f1..db1abb54 100644 --- a/src/main/java/eu/crushedpixel/replaymod/assets/AssetRepository.java +++ b/src/main/java/eu/crushedpixel/replaymod/assets/AssetRepository.java @@ -105,4 +105,14 @@ public class AssetRepository { return replayAssets.get(uuid); } + public UUID getUUIDForAsset(ReplayAsset asset) { + for(Map.Entry e : replayAssets.entrySet()) { + if(e.getValue().equals(asset)) { + return e.getKey(); + } + } + + return null; + } + } diff --git a/src/main/java/eu/crushedpixel/replaymod/assets/CustomImageObject.java b/src/main/java/eu/crushedpixel/replaymod/assets/CustomImageObject.java index 5d4dcd87..1b1db2b7 100644 --- a/src/main/java/eu/crushedpixel/replaymod/assets/CustomImageObject.java +++ b/src/main/java/eu/crushedpixel/replaymod/assets/CustomImageObject.java @@ -1,7 +1,7 @@ package eu.crushedpixel.replaymod.assets; -import eu.crushedpixel.replaymod.holders.*; -import eu.crushedpixel.replaymod.interpolation.KeyframeList; +import eu.crushedpixel.replaymod.holders.GuiEntryListEntry; +import eu.crushedpixel.replaymod.holders.Transformations; import eu.crushedpixel.replaymod.registry.ResourceHelper; import eu.crushedpixel.replaymod.replay.ReplayHandler; import lombok.Getter; @@ -16,10 +16,14 @@ import java.util.UUID; public class CustomImageObject implements GuiEntryListEntry { - public CustomImageObject(String name, UUID assetUUID) throws IOException { + public CustomImageObject(String name, UUID assetUUID) { this.name = name; - setLinkedAsset(assetUUID); + try { + setLinkedAsset(assetUUID); + } catch(Exception e) { + e.printStackTrace(); + } } @Getter @Setter private String name; @@ -27,6 +31,13 @@ public class CustomImageObject implements GuiEntryListEntry { @Getter @Setter private float width, height; + private ResourceLocation resourceLocation; + private DynamicTexture dynamicTexture; + + @Getter private float textureWidth, textureHeight; + + @Getter private Transformations transformations; + public void setLinkedAsset(UUID assetUUID) throws IOException { ReplayAsset asset = ReplayHandler.getAssetRepository().getAssetByUUID(assetUUID); @@ -65,11 +76,6 @@ public class CustomImageObject implements GuiEntryListEntry { }); } - private ResourceLocation resourceLocation; - private DynamicTexture dynamicTexture; - - @Getter private float textureWidth, textureHeight; - public ResourceLocation getResourceLocation() { if(!ResourceHelper.isRegistered(resourceLocation)) { ResourceHelper.registerResource(resourceLocation); @@ -85,16 +91,4 @@ public class CustomImageObject implements GuiEntryListEntry { return name; } - /** - * Keyframing Code - */ - - private KeyframeList anchorPointKeyframes, positionKeyframes, orientationKeyframes; - private KeyframeList scaleKeyframes; - private KeyframeList opacityKeyframes; - - public Transformations getTransformationsForTimestamp(int timestamp) { - return null; //TODO - } - } diff --git a/src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java b/src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java index 3bc3e742..85bb7520 100755 --- a/src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java +++ b/src/main/java/eu/crushedpixel/replaymod/entities/CameraEntity.java @@ -1,6 +1,6 @@ package eu.crushedpixel.replaymod.entities; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.replay.LesserDataWatcher; import eu.crushedpixel.replaymod.replay.ReplayHandler; import net.minecraft.client.Minecraft; @@ -158,7 +158,7 @@ public class CameraEntity extends EntityPlayer { updateMovement(); } - public void moveAbsolute(Position pos) { + public void moveAbsolute(AdvancedPosition pos) { this.moveAbsolute(pos.getX(), pos.getY(), pos.getZ()); rotationPitch = (float)pos.getPitch(); rotationYaw = (float)pos.getYaw(); @@ -180,7 +180,7 @@ public class CameraEntity extends EntityPlayer { updateBoundingBox(); } - public void movePath(Position pos) { + public void movePath(AdvancedPosition pos) { this.prevRotationPitch = this.rotationPitch = (float)pos.getPitch(); this.prevRotationYaw = this.rotationYaw = (float)pos.getYaw(); this.lastTickPosX = this.prevPosX = this.posX = pos.getX(); diff --git a/src/main/java/eu/crushedpixel/replaymod/events/KeyframesModifyEvent.java b/src/main/java/eu/crushedpixel/replaymod/events/KeyframesModifyEvent.java index 61eb1e22..3115f578 100644 --- a/src/main/java/eu/crushedpixel/replaymod/events/KeyframesModifyEvent.java +++ b/src/main/java/eu/crushedpixel/replaymod/events/KeyframesModifyEvent.java @@ -1,6 +1,6 @@ package eu.crushedpixel.replaymod.events; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.holders.TimestampValue; import eu.crushedpixel.replaymod.interpolation.KeyframeList; import lombok.AllArgsConstructor; @@ -13,7 +13,7 @@ import net.minecraftforge.fml.common.eventhandler.Event; @EqualsAndHashCode(callSuper=true) public class KeyframesModifyEvent extends Event { - private KeyframeList positionKeyframes; + private KeyframeList positionKeyframes; private KeyframeList timeKeyframes; } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiEditKeyframe.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiEditKeyframe.java index d575ba4b..89ca9ebd 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiEditKeyframe.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiEditKeyframe.java @@ -4,7 +4,7 @@ import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.gui.elements.GuiArrowButton; import eu.crushedpixel.replaymod.gui.elements.GuiNumberInput; import eu.crushedpixel.replaymod.holders.Keyframe; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.holders.TimestampValue; import eu.crushedpixel.replaymod.interpolation.KeyframeList; import eu.crushedpixel.replaymod.replay.ReplayHandler; @@ -54,12 +54,12 @@ public class GuiEditKeyframe extends GuiScreen { public GuiEditKeyframe(Keyframe keyframe) { this.keyframe = keyframe; this.keyframeBackup = keyframe.copy(); - this.posKeyframe = keyframe.getValue() instanceof Position; + this.posKeyframe = keyframe.getValue() instanceof AdvancedPosition; boolean timeKeyframe = keyframe.getValue() instanceof TimestampValue; ReplayHandler.selectKeyframe(null); - KeyframeList positionKeyframes = ReplayHandler.getPositionKeyframes(); + KeyframeList positionKeyframes = ReplayHandler.getPositionKeyframes(); KeyframeList timeKeyframes = ReplayHandler.getTimeKeyframes(); if(posKeyframe) { @@ -107,7 +107,7 @@ public class GuiEditKeyframe extends GuiScreen { //Position/Virtual Time Input if(posKeyframe) { - Position pos = ((Keyframe)keyframe).getValue(); + AdvancedPosition pos = ((Keyframe)keyframe).getValue(); xCoord = new GuiNumberInput(fontRendererObj, 0, 0, 100, null, null, RoundUtils.round2Decimals(pos.getX()), true); yCoord = new GuiNumberInput(fontRendererObj, 0, 0, 100, null, null, RoundUtils.round2Decimals(pos.getY()), true); zCoord = new GuiNumberInput(fontRendererObj, 0, 0, 100, null, null, RoundUtils.round2Decimals(pos.getZ()), true); @@ -190,7 +190,7 @@ public class GuiEditKeyframe extends GuiScreen { } else { keyframe.setRealTimestamp(TimestampUtils.calculateTimestamp(min.getIntValue(), sec.getIntValue(), ms.getIntValue())); if(posKeyframe) { - ((Keyframe)keyframe).setValue(new Position(xCoord.getPreciseValue(), yCoord.getPreciseValue(), + ((Keyframe)keyframe).setValue(new AdvancedPosition(xCoord.getPreciseValue(), yCoord.getPreciseValue(), zCoord.getPreciseValue(), new Float(pitch.getPreciseValue()), (float) yaw.getPreciseValue(), (float) roll.getPreciseValue(), null)); } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiObjectManager.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiObjectManager.java index cf66238f..f47954db 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiObjectManager.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiObjectManager.java @@ -6,6 +6,7 @@ import eu.crushedpixel.replaymod.gui.elements.*; import eu.crushedpixel.replaymod.gui.elements.listeners.SelectionListener; import eu.crushedpixel.replaymod.gui.elements.timelines.GuiTimeline; import eu.crushedpixel.replaymod.gui.overlay.GuiReplayOverlay; +import eu.crushedpixel.replaymod.holders.GuiEntryListValueEntry; import eu.crushedpixel.replaymod.interpolation.KeyframeList; import eu.crushedpixel.replaymod.replay.ReplayHandler; import eu.crushedpixel.replaymod.utils.MouseUtils; @@ -17,6 +18,7 @@ import org.lwjgl.util.Point; import java.awt.*; import java.io.IOException; +import java.util.UUID; public class GuiObjectManager extends GuiScreen { @@ -30,7 +32,7 @@ public class GuiObjectManager extends GuiScreen { private GuiAdvancedTextField nameInput; private GuiString dropdownLabel; - private GuiDropdown assetDropdown; + private GuiDropdown> assetDropdown; private GuiDraggingNumberInput anchorXInput, anchorYInput, anchorZInput; private GuiDraggingNumberInput positionXInput, positionYInput, positionZInput; @@ -123,12 +125,13 @@ public class GuiObjectManager extends GuiScreen { opacityInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 50, 0d, 100d, 100d, true, "%"); dropdownLabel = new GuiString(0, 0, Color.WHITE, I18n.format("replaymod.gui.assets.filechooser")+": "); - assetDropdown = new GuiDropdown(fontRendererObj, 0, 0, 0, 5); + assetDropdown = new GuiDropdown>(fontRendererObj, 0, 0, 0, 5); if(ReplayHandler.getAssetRepository().getCopyOfReplayAssets().isEmpty()) { - assetDropdown.addElement(I18n.format("replaymod.gui.assets.emptylist")); + assetDropdown.addElement(new GuiEntryListValueEntry(I18n.format("replaymod.gui.assets.emptylist"), null)); } else { for(ReplayAsset asset : ReplayHandler.getAssetRepository().getCopyOfReplayAssets()) { - assetDropdown.addElement(asset.getDisplayString()); + assetDropdown.addElement(new GuiEntryListValueEntry( + asset.getDisplayString(), ReplayHandler.getAssetRepository().getUUIDForAsset(asset))); } } @@ -138,14 +141,16 @@ public class GuiObjectManager extends GuiScreen { addButton = new GuiAdvancedButton(0, 0, 0, 20, I18n.format("replaymod.gui.add"), new Runnable() { @Override public void run() { - + CustomImageObject customImageObject = new CustomImageObject(I18n.format("replaymod.gui.objects.defaultname"), null); + objectList.addElement(customImageObject); } }, null); removeButton = new GuiAdvancedButton(0, 0, 0, 20, I18n.format("replaymod.gui.remove"), new Runnable() { @Override public void run() { - + if(objectList.getElement(objectList.getSelectionIndex()) != null) + objectList.removeElement(objectList.getSelectionIndex()); } }, null); @@ -288,7 +293,7 @@ public class GuiObjectManager extends GuiScreen { addButton.yPosition = removeButton.yPosition = objectList.yPosition+objectList.height-20; allElements.addPart(addButton); - allElements.addPart(removeButton); + disableElements.addPart(removeButton); allElements.addPart(disableElements); diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java index 6758c25c..10013522 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiRenderSettings.java @@ -3,6 +3,7 @@ package eu.crushedpixel.replaymod.gui; import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.gui.elements.*; import eu.crushedpixel.replaymod.gui.elements.listeners.SelectionListener; +import eu.crushedpixel.replaymod.holders.GuiEntryListEntry; import eu.crushedpixel.replaymod.replay.ReplayHandler; import eu.crushedpixel.replaymod.settings.RenderOptions; import eu.crushedpixel.replaymod.utils.StringUtils; @@ -391,7 +392,7 @@ public class GuiRenderSettings extends GuiScreen { } } - private enum RendererSettings { + private enum RendererSettings implements GuiEntryListEntry { DEFAULT("default"), STEREOSCOPIC("stereoscopic"), CUBIC("cubic"), @@ -410,6 +411,11 @@ public class GuiRenderSettings extends GuiScreen { } public String getDescription() { return I18n.format(desc); } + + @Override + public String getDisplayString() { + return toString(); + } } private void startRendering() { diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java index 9bb44ea5..fa0c7460 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiDropdown.java @@ -2,6 +2,7 @@ package eu.crushedpixel.replaymod.gui.elements; import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.gui.elements.listeners.SelectionListener; +import eu.crushedpixel.replaymod.holders.GuiEntryListEntry; import eu.crushedpixel.replaymod.utils.MouseUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -13,7 +14,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -public class GuiDropdown extends GuiAdvancedTextField { +public class GuiDropdown extends GuiAdvancedTextField { private final int visibleDropout; private final int dropoutElementHeight = 14; @@ -38,7 +39,7 @@ public class GuiDropdown extends GuiAdvancedTextField { public void drawTextBox() { if(elements.size() > selectionIndex && selectionIndex >= 0) { setText(mc.fontRendererObj.trimStringToWidth( - elements.get(selectionIndex).toString(), width - 8)); + elements.get(selectionIndex).getDisplayString(), width - 8)); } else { setText(""); } @@ -83,7 +84,7 @@ public class GuiDropdown extends GuiAdvancedTextField { continue; } drawHorizontalLine(xPosition, xPosition + width, yPosition + height + y, -6250336); - String toWrite = mc.fontRendererObj.trimStringToWidth(obj.toString(), width - 8); + String toWrite = mc.fontRendererObj.trimStringToWidth(obj.getDisplayString(), width - 8); drawString(mc.fontRendererObj, toWrite, xPosition + 4, yPosition + height + y + 4, Color.WHITE.getRGB()); if(MouseUtils.isMouseWithinBounds(xPosition, yPosition + height + y, width, dropoutElementHeight)) { diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/timelines/GuiKeyframeTimeline.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/timelines/GuiKeyframeTimeline.java index 534d62df..06d26936 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/timelines/GuiKeyframeTimeline.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/timelines/GuiKeyframeTimeline.java @@ -2,7 +2,7 @@ package eu.crushedpixel.replaymod.gui.elements.timelines; import eu.crushedpixel.replaymod.gui.GuiEditKeyframe; import eu.crushedpixel.replaymod.holders.Keyframe; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.holders.TimestampValue; import eu.crushedpixel.replaymod.replay.ReplayHandler; import net.minecraft.client.Minecraft; @@ -113,9 +113,9 @@ public class GuiKeyframeTimeline extends GuiTimeline { //iterate over keyframes to find spectator segments if(placeKeyframes) { - ListIterator> iterator = ReplayHandler.getPositionKeyframes().listIterator(); + ListIterator> iterator = ReplayHandler.getPositionKeyframes().listIterator(); while(iterator.hasNext()) { - Keyframe kf = iterator.next(); + Keyframe kf = iterator.next(); if(kf.getValue().getSpectatedEntityID() == null) continue; @@ -124,7 +124,7 @@ public class GuiKeyframeTimeline extends GuiTimeline { int nextSpectatorKeyframeRealTime = -1; while(iterator.hasNext()) { - Keyframe kf2 = iterator.next(); + Keyframe kf2 = iterator.next(); if(kf.getValue().getSpectatedEntityID() .equals(kf2.getValue().getSpectatedEntityID())) { @@ -177,14 +177,14 @@ public class GuiKeyframeTimeline extends GuiTimeline { int keyframeX = getKeyframeX(kf.getRealTimestamp(), leftTime, bodyWidth, segmentLength); - if(kf.getValue() instanceof Position) { + if(kf.getValue() instanceof AdvancedPosition) { if(!placeKeyframes) return; textureX = KEYFRAME_PLACE_X; textureY = KEYFRAME_PLACE_Y; y += 0; //If Spectator Keyframe, use different texture - if(((Keyframe) kf).getValue().getSpectatedEntityID() != null) { + if(((Keyframe) kf).getValue().getSpectatedEntityID() != null) { textureX = KEYFRAME_SPEC_X; textureY = KEYFRAME_SPEC_Y; } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java b/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java index 105bcee4..131da487 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/online/GuiReplayCenter.java @@ -13,6 +13,7 @@ import eu.crushedpixel.replaymod.api.replay.pagination.SearchPagination; import eu.crushedpixel.replaymod.gui.GuiConstants; import eu.crushedpixel.replaymod.gui.elements.*; import eu.crushedpixel.replaymod.gui.replayviewer.GuiReplayViewer; +import eu.crushedpixel.replaymod.holders.GuiEntryListStringEntry; import eu.crushedpixel.replaymod.online.authentication.AuthenticationHandler; import eu.crushedpixel.replaymod.replay.ReplayHandler; import net.minecraft.client.gui.*; @@ -37,7 +38,7 @@ public class GuiReplayCenter extends GuiScreen implements GuiYesNoCallback { private List replayButtonBar, bottomBar, topBar; private GuiToggleButton searchGametypeToggle, searchSortToggle; - private GuiDropdown searchCategoryDropdown, searchVersionDropdown; + private GuiDropdown searchCategoryDropdown, searchVersionDropdown; private GuiAdvancedTextField searchNameInput, searchServerInput; private GuiButton searchActionButton; @@ -116,22 +117,22 @@ public class GuiReplayCenter extends GuiScreen implements GuiYesNoCallback { new String[]{I18n.format("options.particles.all"), I18n.format("menu.singleplayer"), I18n.format("menu.multiplayer")}); searchSortToggle = new GuiToggleButton(GuiConstants.CENTER_SEARCH_ORDER_TOGGLE, 0, 0, I18n.format("replaymod.gui.center.search.order")+": ", new String[]{I18n.format("replaymod.gui.center.search.order.best"), I18n.format("replaymod.gui.center.search.order.recent")}); - searchCategoryDropdown = new GuiDropdown(fontRendererObj, 0, 0, 0, Category.values().length+1); - searchVersionDropdown = new GuiDropdown(fontRendererObj, 0, 0, 0, 5); + searchCategoryDropdown = new GuiDropdown(fontRendererObj, 0, 0, 0, Category.values().length+1); + searchVersionDropdown = new GuiDropdown(fontRendererObj, 0, 0, 0, 5); searchNameInput = new GuiAdvancedTextField(fontRendererObj, 0, 0, 50, 20); searchServerInput = new GuiAdvancedTextField(fontRendererObj, 0, 0, 50, 20); searchNameInput.hint = I18n.format("replaymod.gui.center.search.name"); searchServerInput.hint = I18n.format("replaymod.gui.center.search.server"); - searchCategoryDropdown.addElement(I18n.format("replaymod.gui.center.search.category")); + searchCategoryDropdown.addElement(new GuiEntryListStringEntry(I18n.format("replaymod.gui.center.search.category"))); for(Category c : Category.values()) { - searchCategoryDropdown.addElement(c.toNiceString()); + searchCategoryDropdown.addElement(new GuiEntryListStringEntry(c.toNiceString())); } - searchVersionDropdown.addElement(I18n.format("replaymod.gui.center.search.version")); + searchVersionDropdown.addElement(new GuiEntryListStringEntry(I18n.format("replaymod.gui.center.search.version"))); for(MinecraftVersion v : MinecraftVersion.values()) { - searchVersionDropdown.addElement(v.toNiceName()); + searchVersionDropdown.addElement(new GuiEntryListStringEntry(v.toNiceName())); } } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java b/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java index 752d5112..bad34d61 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/overlay/GuiReplayOverlay.java @@ -10,7 +10,7 @@ import eu.crushedpixel.replaymod.gui.elements.*; import eu.crushedpixel.replaymod.gui.elements.timelines.GuiKeyframeTimeline; import eu.crushedpixel.replaymod.gui.elements.timelines.GuiMarkerTimeline; import eu.crushedpixel.replaymod.holders.Keyframe; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.holders.TimestampValue; import eu.crushedpixel.replaymod.registry.ReplayGuiRegistry; import eu.crushedpixel.replaymod.replay.ReplayHandler; @@ -137,13 +137,13 @@ public class GuiReplayOverlay extends Gui { public void run() { Entity cam = mc.getRenderViewEntity(); if (cam != null) { - Position position = new Position(cam.posX, cam.posY, cam.posZ, cam.rotationPitch, + AdvancedPosition position = new AdvancedPosition(cam.posX, cam.posY, cam.posZ, cam.rotationPitch, cam.rotationYaw % 360, ReplayHandler.getCameraTilt(), null); if (ReplayHandler.isCamera()) - ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), position)); + ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), position)); else - ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), new Position(cam.getEntityId(), true))); + ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), new AdvancedPosition(cam.getEntityId(), true))); } } }, "replaymod.gui.ingame.menu.addposkeyframe"); @@ -160,13 +160,13 @@ public class GuiReplayOverlay extends Gui { public void run() { Entity cam = mc.getRenderViewEntity(); if (cam != null) { - Position position = new Position(cam.posX, cam.posY, cam.posZ, cam.rotationPitch, + AdvancedPosition position = new AdvancedPosition(cam.posX, cam.posY, cam.posZ, cam.rotationPitch, cam.rotationYaw % 360, ReplayHandler.getCameraTilt(), null); if (ReplayHandler.isCamera()) - ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), position)); + ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), position)); else - ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), new Position(cam.getEntityId(), true))); + ReplayHandler.addKeyframe(new Keyframe(ReplayHandler.getRealTimelineCursor(), new AdvancedPosition(cam.getEntityId(), true))); } } }, "replaymod.gui.ingame.menu.addspeckeyframe"); @@ -180,10 +180,10 @@ public class GuiReplayOverlay extends Gui { @Override public GuiElement delegate() { - boolean selected = ReplayHandler.getSelectedKeyframe() != null && ReplayHandler.getSelectedKeyframe().getValue() instanceof Position; + boolean selected = ReplayHandler.getSelectedKeyframe() != null && ReplayHandler.getSelectedKeyframe().getValue() instanceof AdvancedPosition; boolean camera; if(selected) { - camera = ((Keyframe)ReplayHandler.getSelectedKeyframe()).getValue().getSpectatedEntityID() == null; + camera = ((Keyframe)ReplayHandler.getSelectedKeyframe()).getValue().getSpectatedEntityID() == null; } else { camera = ReplayHandler.isCamera(); } @@ -348,7 +348,7 @@ public class GuiReplayOverlay extends Gui { CameraEntity cam = ReplayHandler.getCameraEntity(); if(cam != null) { - ReplayHandler.setLastPosition(new Position(cam.posX, cam.posY, cam.posZ, cam.rotationPitch, cam.rotationYaw)); + ReplayHandler.setLastPosition(new AdvancedPosition(cam.posX, cam.posY, cam.posZ, cam.rotationPitch, cam.rotationYaw)); } else { ReplayHandler.setLastPosition(null); } diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiReplayEditor.java b/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiReplayEditor.java index 6aca5f1c..eab66dcb 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiReplayEditor.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiReplayEditor.java @@ -3,6 +3,7 @@ package eu.crushedpixel.replaymod.gui.replayeditor; import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.gui.GuiConstants; import eu.crushedpixel.replaymod.gui.elements.GuiDropdown; +import eu.crushedpixel.replaymod.holders.GuiEntryListStringEntry; import eu.crushedpixel.replaymod.utils.ReplayFileIO; import eu.crushedpixel.replaymod.utils.StringUtils; import net.minecraft.client.gui.GuiButton; @@ -22,7 +23,7 @@ public class GuiReplayEditor extends GuiScreen { private static final int tabYPos = 110; public static GuiReplayEditor instance = null; private StudioTab currentTab = StudioTab.TRIM; - private GuiDropdown replayDropdown; + private GuiDropdown replayDropdown; private GuiButton saveModeButton; private boolean overrideSave = false; private boolean initialized = false; @@ -50,7 +51,7 @@ public class GuiReplayEditor extends GuiScreen { } for(File file : replayFiles) { String name = FilenameUtils.getBaseName(file.getAbsolutePath()); - replayDropdown.addElement(name); + replayDropdown.addElement(new GuiEntryListStringEntry(name)); } } @@ -81,7 +82,7 @@ public class GuiReplayEditor extends GuiScreen { int modeWidth = tabButtons.get(0).width; if(!initialized) { - replayDropdown = new GuiDropdown(fontRendererObj, 15 + 2 + 1 + 80, 60, this.width - 30 - 8 - 80 - modeWidth - 4, 5); + replayDropdown = new GuiDropdown(fontRendererObj, 15 + 2 + 1 + 80, 60, this.width - 30 - 8 - 80 - modeWidth - 4, 5); refreshReplayDropdown(); } else { replayDropdown.width = this.width - 30 - 8 - 80 - modeWidth - 4; diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/AdvancedPosition.java b/src/main/java/eu/crushedpixel/replaymod/holders/AdvancedPosition.java new file mode 100755 index 00000000..85b405b8 --- /dev/null +++ b/src/main/java/eu/crushedpixel/replaymod/holders/AdvancedPosition.java @@ -0,0 +1,51 @@ +package eu.crushedpixel.replaymod.holders; + +import eu.crushedpixel.replaymod.interpolation.Interpolate; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper=true) +public class AdvancedPosition extends Position { + + @Interpolate + public double pitch, yaw, roll; + + private Integer spectatedEntityID; + + public AdvancedPosition(double x, double y, double z, double pitch, double yaw, double roll, Integer spectatedEntityID) { + super(x, y, z); + } + + public AdvancedPosition(int entityID, boolean spectate) { + this(Minecraft.getMinecraft().theWorld.getEntityByID(entityID), spectate); + } + + public AdvancedPosition(Entity e, boolean spectate) { + this(e.posX, e.posY, e.posZ, e.rotationPitch, e.rotationYaw, spectate ? e.getEntityId() : null); + } + + public AdvancedPosition(double x, double y, double z, float pitch, float yaw, Integer spectatedEntityID) { + this(x, y, z, pitch, yaw, 0, spectatedEntityID); + } + + public AdvancedPosition(double x, double y, double z, float pitch, float yaw) { + this(x, y, z, pitch, yaw, 0, null); + } + + public double distanceSquared(double x, double y, double z) { + double dx = this.x - x; + double dy = this.y - y; + double dz = this.z - z; + return dx * dx + dy * dy + dz * dz; + } + + @Override + public AdvancedPosition newInstance() { + return new AdvancedPosition(); + } +} diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/GuiEntryListValueEntry.java b/src/main/java/eu/crushedpixel/replaymod/holders/GuiEntryListValueEntry.java new file mode 100644 index 00000000..18dfe3f9 --- /dev/null +++ b/src/main/java/eu/crushedpixel/replaymod/holders/GuiEntryListValueEntry.java @@ -0,0 +1,17 @@ +package eu.crushedpixel.replaymod.holders; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class GuiEntryListValueEntry implements GuiEntryListEntry { + + String displayString; + T value; + + @Override + public String getDisplayString() { + return displayString; + } +} diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeSet.java b/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeSet.java index 43a72dcd..5377c50f 100644 --- a/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeSet.java +++ b/src/main/java/eu/crushedpixel/replaymod/holders/KeyframeSet.java @@ -8,7 +8,7 @@ import java.util.List; public class KeyframeSet implements GuiEntryListEntry { private String name; - private Keyframe[] positionKeyframes; + private Keyframe[] positionKeyframes; private Keyframe[] timeKeyframes; public KeyframeSet(String name, Keyframe[] keyframes) { @@ -21,12 +21,12 @@ public class KeyframeSet implements GuiEntryListEntry { } public void setKeyframes(Keyframe[] keyframes) { - List> posKFList = new ArrayList>(); + List> posKFList = new ArrayList>(); List> timeKFList = new ArrayList>(); for(Keyframe kf : keyframes) { - if(kf.getValue() instanceof Position) - posKFList.add((Keyframe)kf); + if(kf.getValue() instanceof AdvancedPosition) + posKFList.add((Keyframe)kf); else if(kf.getValue() instanceof TimestampValue) timeKFList.add((Keyframe) kf); } diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/MarkerKeyframe.java b/src/main/java/eu/crushedpixel/replaymod/holders/MarkerKeyframe.java index 29dec7df..7b9ef41b 100644 --- a/src/main/java/eu/crushedpixel/replaymod/holders/MarkerKeyframe.java +++ b/src/main/java/eu/crushedpixel/replaymod/holders/MarkerKeyframe.java @@ -8,7 +8,7 @@ import lombok.Data; public class MarkerKeyframe { private int realTimestamp; - private Position position; + private AdvancedPosition position; private String name; } diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/NumberValue.java b/src/main/java/eu/crushedpixel/replaymod/holders/NumberValue.java new file mode 100644 index 00000000..feaa6762 --- /dev/null +++ b/src/main/java/eu/crushedpixel/replaymod/holders/NumberValue.java @@ -0,0 +1,20 @@ +package eu.crushedpixel.replaymod.holders; + +import eu.crushedpixel.replaymod.interpolation.Interpolate; +import eu.crushedpixel.replaymod.interpolation.KeyframeValue; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +public class NumberValue implements KeyframeValue { + + @Interpolate + public double value; + + @Override + public NumberValue newInstance() { + return new NumberValue(); + } + +} diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/Position.java b/src/main/java/eu/crushedpixel/replaymod/holders/Position.java old mode 100755 new mode 100644 index f16494ae..1c00a7ad --- a/src/main/java/eu/crushedpixel/replaymod/holders/Position.java +++ b/src/main/java/eu/crushedpixel/replaymod/holders/Position.java @@ -5,8 +5,6 @@ import eu.crushedpixel.replaymod.interpolation.KeyframeValue; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; @Data @AllArgsConstructor @@ -15,36 +13,10 @@ public class Position implements KeyframeValue { @Interpolate public double x, y, z; - @Interpolate - public double pitch, yaw, roll; - - private Integer spectatedEntityID; - - public Position(int entityID, boolean spectate) { - this(Minecraft.getMinecraft().theWorld.getEntityByID(entityID), spectate); - } - - public Position(Entity e, boolean spectate) { - this(e.posX, e.posY, e.posZ, e.rotationPitch, e.rotationYaw, spectate ? e.getEntityId() : null); - } - - public Position(double x, double y, double z, float pitch, float yaw, Integer spectatedEntityID) { - this(x, y, z, pitch, yaw, 0, spectatedEntityID); - } - - public Position(double x, double y, double z, float pitch, float yaw) { - this(x, y, z, pitch, yaw, 0, null); - } - - public double distanceSquared(double x, double y, double z) { - double dx = this.x - x; - double dy = this.y - y; - double dz = this.z - z; - return dx * dx + dy * dy + dz * dz; - } @Override public Position newInstance() { return new Position(); } + } diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/Transformation.java b/src/main/java/eu/crushedpixel/replaymod/holders/Transformation.java new file mode 100644 index 00000000..b7e052d3 --- /dev/null +++ b/src/main/java/eu/crushedpixel/replaymod/holders/Transformation.java @@ -0,0 +1,18 @@ +package eu.crushedpixel.replaymod.holders; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class Transformation { + + private Position anchor; + private Position position; + private Position orientation; + private Position scale; + private double opacity; + + private float width, height; + +} diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/Transformations.java b/src/main/java/eu/crushedpixel/replaymod/holders/Transformations.java index b4bb509a..d7227d7e 100644 --- a/src/main/java/eu/crushedpixel/replaymod/holders/Transformations.java +++ b/src/main/java/eu/crushedpixel/replaymod/holders/Transformations.java @@ -1,20 +1,19 @@ package eu.crushedpixel.replaymod.holders; +import eu.crushedpixel.replaymod.interpolation.KeyframeList; import lombok.AllArgsConstructor; import lombok.Data; -import java.awt.*; - @Data @AllArgsConstructor public class Transformations { - private Position anchor; - private Position position; - private Position orientation; - private Point scale; - private float opacity; + private KeyframeList anchorKeyframes, positionKeyframes, + orientationKeyframes, scaleKeyframes; + private KeyframeList opacityKeyframes; - private float width, height; + public Transformation getTransformationForTimestamp(int timestamp) { + return null; + } } diff --git a/src/main/java/eu/crushedpixel/replaymod/interpolation/KeyframeList.java b/src/main/java/eu/crushedpixel/replaymod/interpolation/KeyframeList.java index 46bf2d4f..2f99d022 100644 --- a/src/main/java/eu/crushedpixel/replaymod/interpolation/KeyframeList.java +++ b/src/main/java/eu/crushedpixel/replaymod/interpolation/KeyframeList.java @@ -2,7 +2,7 @@ package eu.crushedpixel.replaymod.interpolation; import eu.crushedpixel.replaymod.holders.Keyframe; import eu.crushedpixel.replaymod.holders.KeyframeComparator; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import java.util.ArrayList; import java.util.List; @@ -107,7 +107,7 @@ public class KeyframeList extends ArrayList public Keyframe getClosestKeyframeForTimestamp(int realTime, int tolerance) { List> found = new ArrayList>(); for(Keyframe kf : this) { - if(!(kf.getValue() instanceof Position)) continue; + if(!(kf.getValue() instanceof AdvancedPosition)) continue; if(Math.abs(kf.getRealTimestamp() - realTime) <= tolerance) { found.add(kf); } diff --git a/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java b/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java index 7441d076..5462367c 100755 --- a/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java +++ b/src/main/java/eu/crushedpixel/replaymod/recording/PacketListener.java @@ -8,7 +8,7 @@ import com.google.common.util.concurrent.ListenableFuture; import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.chat.ChatMessageHandler; import eu.crushedpixel.replaymod.holders.MarkerKeyframe; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.utils.ReplayFileIO; import io.netty.channel.ChannelHandlerContext; import net.minecraft.client.Minecraft; @@ -204,7 +204,7 @@ public class PacketListener extends DataListener { } public void addMarker() { - Position pos = new Position(Minecraft.getMinecraft().getRenderViewEntity(), false); + AdvancedPosition pos = new AdvancedPosition(Minecraft.getMinecraft().getRenderViewEntity(), false); int timestamp = (int) (System.currentTimeMillis() - startTime); MarkerKeyframe marker = new MarkerKeyframe(timestamp, pos, null); diff --git a/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java b/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java index cd2c32ef..0d1056e3 100644 --- a/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java @@ -4,7 +4,7 @@ import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.events.KeyframesModifyEvent; import eu.crushedpixel.replaymod.gui.overlay.GuiReplayOverlay; import eu.crushedpixel.replaymod.holders.Keyframe; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.interpolation.KeyframeList; import eu.crushedpixel.replaymod.replay.ReplayHandler; import net.minecraft.client.Minecraft; @@ -28,7 +28,7 @@ public class PathPreviewRenderer { private DistanceComparator distanceComparator = new DistanceComparator(); - private KeyframeList keyframes; + private KeyframeList keyframes; @SubscribeEvent public void renderCameraPath(RenderWorldLastEvent event) { @@ -51,11 +51,11 @@ public class PathPreviewRenderer { if(keyframes.size() > 1) { - Position prev = null; + AdvancedPosition prev = null; if(ReplayMod.replaySettings.isLinearMovement()) { - for(Keyframe point : keyframes) { + for(Keyframe point : keyframes) { if(prev != null) { drawConnection(doubleX, doubleY, doubleZ, prev, point.getValue(), Color.RED.getRGB()); } @@ -67,7 +67,7 @@ public class PathPreviewRenderer { float max = keyframes.size() * 50; for(int i = 0; i < max; i++) { - Position point = keyframes.getInterpolatedValueForPathPosition(i/max, false); + AdvancedPosition point = keyframes.getInterpolatedValueForPathPosition(i/max, false); if(prev != null) { drawConnection(doubleX, doubleY, doubleZ, prev, point, Color.RED.getRGB()); @@ -80,11 +80,11 @@ public class PathPreviewRenderer { distanceComparator.setPlayerPos(doubleX, doubleY + 1.4, doubleZ); - List> distanceSorted = new ArrayList>(keyframes); + List> distanceSorted = new ArrayList>(keyframes); Collections.sort(distanceSorted, distanceComparator); - for(Keyframe kf : distanceSorted) { + for(Keyframe kf : distanceSorted) { drawPoint(doubleX, doubleY, doubleZ, kf); } @@ -101,7 +101,7 @@ public class PathPreviewRenderer { keyframes = event.getPositionKeyframes(); } - private class DistanceComparator implements Comparator> { + private class DistanceComparator implements Comparator> { private double playerX, playerY, playerZ; @@ -112,7 +112,7 @@ public class PathPreviewRenderer { } @Override - public int compare(Keyframe o1, Keyframe o2) { + public int compare(Keyframe o1, Keyframe o2) { return -(new Double(o1.getValue().distanceSquared(playerX, playerY, playerZ)).compareTo(o2.getValue().distanceSquared(playerX, playerY, playerZ))); } @@ -122,7 +122,7 @@ public class PathPreviewRenderer { } } - private void drawConnection(double playerX, double playerY, double playerZ, Position pos1, Position pos2, int color) { + private void drawConnection(double playerX, double playerY, double playerZ, AdvancedPosition pos1, AdvancedPosition pos2, int color) { Tessellator tessellator = Tessellator.getInstance(); WorldRenderer renderer = tessellator.getWorldRenderer(); @@ -145,7 +145,7 @@ public class PathPreviewRenderer { renderer.setTranslation(0, 0, 0); } - private void drawPoint(double playerX, double playerY, double playerZ, Keyframe kf) { + private void drawPoint(double playerX, double playerY, double playerZ, Keyframe kf) { GlStateManager.pushMatrix(); GlStateManager.enableTexture2D(); GlStateManager.enableLighting(); @@ -159,7 +159,7 @@ public class PathPreviewRenderer { mc.renderEngine.bindTexture(GuiReplayOverlay.replay_gui); - Position pos1 = kf.getValue(); + AdvancedPosition pos1 = kf.getValue(); double x = pos1.getX() - playerX; double y = pos1.getY() - playerY; diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java index 0f66c378..7dcda87e 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayHandler.java @@ -51,12 +51,12 @@ public class ReplayHandler { private static boolean inPath = false; private static CameraEntity cameraEntity; - private static KeyframeList positionKeyframes = new KeyframeList(); + private static KeyframeList positionKeyframes = new KeyframeList(); private static KeyframeList timeKeyframes = new KeyframeList(); private static boolean inReplay = false; private static Entity currentEntity = null; - private static Position lastPosition = null; + private static AdvancedPosition lastPosition = null; private static MarkerKeyframe[] initialMarkers = new MarkerKeyframe[0]; private static List markerKeyframes = new ArrayList(); @@ -123,7 +123,7 @@ public class ReplayHandler { positionKeyframes.clear(); timeKeyframes.clear(); for(Keyframe kf : kfs) { - if(kf.getValue() instanceof Position) { + if(kf.getValue() instanceof AdvancedPosition) { positionKeyframes.add(kf); } else if(kf.getValue() instanceof TimestampValue) { timeKeyframes.add(kf); @@ -147,7 +147,7 @@ public class ReplayHandler { public static void spectateCamera() { if(currentEntity != null) { - Position prev = new Position(currentEntity, false); + AdvancedPosition prev = new AdvancedPosition(currentEntity, false); cameraEntity.movePath(prev); } currentEntity = cameraEntity; @@ -229,7 +229,7 @@ public class ReplayHandler { public static void toggleMarker() { if(selectedMarkerKeyframe != null) markerKeyframes.remove(selectedMarkerKeyframe); else { - Position pos = new Position(mc.getRenderViewEntity(), false); + AdvancedPosition pos = new AdvancedPosition(mc.getRenderViewEntity(), false); int timestamp = ReplayMod.replaySender.currentTimeStamp(); markerKeyframes.add(new MarkerKeyframe(timestamp, pos, null)); } @@ -242,7 +242,7 @@ public class ReplayHandler { fireKeyframesModifyEvent(); } - public static void addPositionKeyframe(Keyframe keyframe) { + public static void addPositionKeyframe(Keyframe keyframe) { positionKeyframes.add(keyframe); selectKeyframe(keyframe); @@ -250,9 +250,9 @@ public class ReplayHandler { Float b; for(Keyframe kf : positionKeyframes) { - if(!(kf.getValue() instanceof Position)) continue; - Keyframe pkf = (Keyframe)kf; - Position pos = pkf.getValue(); + if(!(kf.getValue() instanceof AdvancedPosition)) continue; + Keyframe pkf = (Keyframe)kf; + AdvancedPosition pos = pkf.getValue(); b = (float)pos.getYaw() % 360; if(a != null) { float diff = b-a; @@ -269,7 +269,7 @@ public class ReplayHandler { } public static void addKeyframe(Keyframe keyframe) { - if(keyframe.getValue() instanceof Position) { + if(keyframe.getValue() instanceof AdvancedPosition) { addPositionKeyframe(keyframe); } else if(keyframe.getValue() instanceof TimestampValue) { addTimeKeyframe(keyframe); @@ -277,7 +277,7 @@ public class ReplayHandler { } public static void removeKeyframe(Keyframe keyframe) { - if(keyframe.getValue() instanceof Position) { + if(keyframe.getValue() instanceof AdvancedPosition) { positionKeyframes.remove(keyframe); } else if(keyframe.getValue() instanceof TimestampValue) { timeKeyframes.remove(keyframe); @@ -338,7 +338,7 @@ public class ReplayHandler { return backup; } - public static KeyframeList getPositionKeyframes() { + public static KeyframeList getPositionKeyframes() { return positionKeyframes; } @@ -561,11 +561,11 @@ public class ReplayHandler { realTimelinePosition = pos; } - public static Position getLastPosition() { + public static AdvancedPosition getLastPosition() { return lastPosition; } - public static void setLastPosition(Position position) { + public static void setLastPosition(AdvancedPosition position) { lastPosition = position; } diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java index cddd0614..0239c455 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java @@ -3,7 +3,7 @@ package eu.crushedpixel.replaymod.replay; import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.chat.ChatMessageHandler.ChatMessageType; import eu.crushedpixel.replaymod.holders.Keyframe; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.holders.TimestampValue; import eu.crushedpixel.replaymod.interpolation.GenericLinearInterpolation; import eu.crushedpixel.replaymod.interpolation.GenericSplineInterpolation; @@ -26,8 +26,8 @@ public class ReplayProcess { private static boolean linear = false; - private static GenericSplineInterpolation motionSpline = null; - private static GenericLinearInterpolation motionLinear = null; + private static GenericSplineInterpolation motionSpline = null; + private static GenericLinearInterpolation motionLinear = null; private static GenericLinearInterpolation timeLinear = null; private static double previousReplaySpeed = 0; @@ -167,16 +167,16 @@ public class ReplayProcess { if(!linear && motionSpline == null) { //set up spline path - motionSpline = new GenericSplineInterpolation(); - for(Keyframe kf : ReplayHandler.getPositionKeyframes()) { + motionSpline = new GenericSplineInterpolation(); + for(Keyframe kf : ReplayHandler.getPositionKeyframes()) { motionSpline.addPoint(kf.getValue()); } } if(linear && motionLinear == null) { //set up linear path - motionLinear = new GenericLinearInterpolation(); - for(Keyframe kf : ReplayHandler.getPositionKeyframes()) { + motionLinear = new GenericLinearInterpolation(); + for(Keyframe kf : ReplayHandler.getPositionKeyframes()) { motionLinear.addPoint(kf.getValue()); } } @@ -200,8 +200,8 @@ public class ReplayProcess { int curRealReplayTime = (int) (lastRealReplayTime + timeStep); - Keyframe lastPos = ReplayHandler.getPositionKeyframes().getPreviousKeyframe(curRealReplayTime); - Keyframe nextPos = ReplayHandler.getPositionKeyframes().getNextKeyframe(curRealReplayTime); + Keyframe lastPos = ReplayHandler.getPositionKeyframes().getPreviousKeyframe(curRealReplayTime); + Keyframe nextPos = ReplayHandler.getPositionKeyframes().getNextKeyframe(curRealReplayTime); boolean spectating = false; @@ -285,7 +285,7 @@ public class ReplayProcess { if(!spectating) { ReplayHandler.spectateCamera(); - Position pos = new Position(); + AdvancedPosition pos = new AdvancedPosition(); if(posCount > 1) { if(!linear) { motionSpline.applyPoint(Math.max(0, Math.min(1, splinePos)), pos); @@ -294,7 +294,7 @@ public class ReplayProcess { } } else { if(posCount == 1) { - Keyframe keyframe = ReplayHandler.getPositionKeyframes().first(); + Keyframe keyframe = ReplayHandler.getPositionKeyframes().first(); assert keyframe != null; pos = keyframe.getValue(); } diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java index 26fedc28..ac37e3cd 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplaySender.java @@ -7,7 +7,7 @@ import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.entities.CameraEntity; import eu.crushedpixel.replaymod.events.handlers.RecordingHandler; import eu.crushedpixel.replaymod.holders.PacketData; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.utils.ReplayFile; import eu.crushedpixel.replaymod.utils.ReplayFileIO; import io.netty.channel.ChannelHandler.Sharable; @@ -526,7 +526,7 @@ public class ReplaySender extends ChannelInboundHandlerAdapter { if (isHurrying() && lastTimeStamp > desiredTimeStamp && !startFromBeginning) { desiredTimeStamp = -1; - Position pos = ReplayHandler.getLastPosition(); + AdvancedPosition pos = ReplayHandler.getLastPosition(); CameraEntity cam = ReplayHandler.getCameraEntity(); if (cam != null && pos != null) { // Move camera back in case we have been respawned diff --git a/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java b/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java index b0ce9487..6ae61b9d 100644 --- a/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java @@ -4,7 +4,7 @@ import eu.crushedpixel.replaymod.ReplayMod; import eu.crushedpixel.replaymod.entities.CameraEntity; import eu.crushedpixel.replaymod.gui.GuiVideoRenderer; import eu.crushedpixel.replaymod.holders.Keyframe; -import eu.crushedpixel.replaymod.holders.Position; +import eu.crushedpixel.replaymod.holders.AdvancedPosition; import eu.crushedpixel.replaymod.holders.TimestampValue; import eu.crushedpixel.replaymod.interpolation.GenericLinearInterpolation; import eu.crushedpixel.replaymod.interpolation.GenericSplineInterpolation; @@ -42,7 +42,7 @@ public class VideoRenderer { private boolean mouseWasGrabbed; private ChunkLoadingRenderGlobal chunkLoadingRenderGlobal; - private Interpolation movement; + private Interpolation movement; private Interpolation time; private int framesDone; @@ -135,16 +135,16 @@ public class VideoRenderer { fps = options.getFps(); if (options.isLinearMovement()) { - movement = new GenericLinearInterpolation(); + movement = new GenericLinearInterpolation(); } else { - movement = new GenericSplineInterpolation(); + movement = new GenericSplineInterpolation(); } time = new GenericLinearInterpolation(); int duration = 0; int posKeyframes = 0; - for(Keyframe keyframe : ReplayHandler.getPositionKeyframes()) { + for(Keyframe keyframe : ReplayHandler.getPositionKeyframes()) { if (keyframe.getRealTimestamp() > duration) { duration = keyframe.getRealTimestamp(); } @@ -205,7 +205,7 @@ public class VideoRenderer { } private void updateCam() { - KeyframeList positionKeyframes = ReplayHandler.getPositionKeyframes(); + KeyframeList positionKeyframes = ReplayHandler.getPositionKeyframes(); if (ReplayHandler.getCameraEntity() == null) { if (mc.theWorld == null) { @@ -216,12 +216,12 @@ public class VideoRenderer { int videoTime = framesDone * 1000 / fps; int posCount = ReplayHandler.getPositionKeyframes().size(); - Position pos = new Position(); - Keyframe lastPos = positionKeyframes.getPreviousKeyframe(videoTime); - Keyframe nextPos = null; + AdvancedPosition pos = new AdvancedPosition(); + Keyframe lastPos = positionKeyframes.getPreviousKeyframe(videoTime); + Keyframe nextPos = null; if (movement == null || lastPos == null) { // Stay at one position, no movement - Keyframe keyframe = positionKeyframes.getNextKeyframe(-1); + Keyframe keyframe = positionKeyframes.getNextKeyframe(-1); assert keyframe != null; pos = keyframe.getValue(); } else { diff --git a/src/main/resources/assets/replaymod/lang/en_US.lang b/src/main/resources/assets/replaymod/lang/en_US.lang index c0f4d28a..924018db 100644 --- a/src/main/resources/assets/replaymod/lang/en_US.lang +++ b/src/main/resources/assets/replaymod/lang/en_US.lang @@ -373,4 +373,5 @@ replaymod.gui.objects.properties.scale=Scale replaymod.gui.objects.properties.orientation=Orientation replaymod.gui.objects.properties.opacity=Opacity replaymod.gui.objects.properties.name=Object Name -replaymod.gui.objects.empty=No Objects added \ No newline at end of file +replaymod.gui.objects.empty=No Objects added +replaymod.gui.objects.defaultname=New Object \ No newline at end of file