mirror of
https://github.com/GeyserExtensionists/GeyserUtils.git
synced 2026-01-04 15:41:45 +00:00
well
This commit is contained in:
@@ -71,6 +71,18 @@
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.15.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains</groupId>
|
||||
<artifactId>annotations</artifactId>
|
||||
<version>24.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains</groupId>
|
||||
<artifactId>annotations</artifactId>
|
||||
<version>24.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,83 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.data;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
@Getter
|
||||
public class CameraPreset {
|
||||
private static final Map<String, CameraPreset> PRESETS = new TreeMap<>();
|
||||
|
||||
public static Map<String, CameraPreset> getPresets() {
|
||||
return PRESETS;
|
||||
}
|
||||
|
||||
public static CameraPreset getPreset(String identifier) {
|
||||
return getPresets().get(identifier);
|
||||
}
|
||||
|
||||
public static void registerCameraPresets(CameraPreset... presets) {
|
||||
for (var preset : presets) {
|
||||
if (PRESETS.containsKey(preset.getIdentifier()))
|
||||
throw new IllegalArgumentException("Camera preset " + preset.getIdentifier() + " already exists!");
|
||||
PRESETS.put(preset.getIdentifier(), preset);
|
||||
}
|
||||
int id = 0;
|
||||
//重新分配id
|
||||
for (var preset : presets) {
|
||||
preset.id = id++;
|
||||
}
|
||||
}
|
||||
|
||||
public static CameraPreset FIRST_PERSON;
|
||||
public static CameraPreset FREE;
|
||||
public static CameraPreset THIRD_PERSON;
|
||||
public static CameraPreset THIRD_PERSON_FRONT;
|
||||
|
||||
public static void load() {
|
||||
FIRST_PERSON = CameraPreset.builder()
|
||||
.identifier("minecraft:first_person")
|
||||
.build();
|
||||
FREE = CameraPreset.builder()
|
||||
.identifier("minecraft:free")
|
||||
.pos(new Pos(0, 0, 0))
|
||||
.rot(new Rot(0, 0))
|
||||
.build();
|
||||
THIRD_PERSON = CameraPreset.builder()
|
||||
.identifier("minecraft:third_person")
|
||||
.build();
|
||||
THIRD_PERSON_FRONT = CameraPreset.builder()
|
||||
.identifier("minecraft:third_person_front")
|
||||
.build();
|
||||
|
||||
registerCameraPresets(FIRST_PERSON, FREE, THIRD_PERSON, THIRD_PERSON_FRONT);
|
||||
}
|
||||
|
||||
private String identifier;
|
||||
@Getter
|
||||
private String inheritFrom;
|
||||
@Getter
|
||||
@Nullable
|
||||
private Pos pos;
|
||||
@Getter
|
||||
@Nullable
|
||||
private Rot rot;
|
||||
|
||||
@Getter
|
||||
private int id;
|
||||
|
||||
@Builder
|
||||
public CameraPreset(String identifier, String inheritFrom, @Nullable Pos pos, @Nullable Rot rot) {
|
||||
this.identifier = identifier;
|
||||
this.inheritFrom = inheritFrom != null ? inheritFrom : "";
|
||||
this.pos = pos;
|
||||
this.rot = rot;
|
||||
}
|
||||
|
||||
protected CameraPreset() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.data;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(fluent = true)
|
||||
@Data
|
||||
public class Color {
|
||||
float r;
|
||||
float g;
|
||||
float b;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.data;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Accessors(fluent = true)
|
||||
@Data
|
||||
public class Ease {
|
||||
|
||||
float time;
|
||||
int easeType;
|
||||
|
||||
public Ease(float time, EaseType easeType) {
|
||||
this.time = time;
|
||||
this.easeType = easeType.getIndex();
|
||||
}
|
||||
|
||||
public Ease easeType(EaseType easeType) {
|
||||
this.easeType = easeType.getIndex();
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.data;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum EaseType {
|
||||
LINEAR("linear",0),
|
||||
SPRING("spring",1),
|
||||
EASE_IN_SINE("in_sine",2),
|
||||
EASE_OUT_SINE("out_sine",3),
|
||||
EASE_IN_OUT_SINE("in_out_sine",4),
|
||||
EASE_IN_QUAD("in_quad",5),
|
||||
EASE_OUT_QUAD("out_quad",6),
|
||||
EASE_IN_OUT_QUAD("in_out_quad",7),
|
||||
EASE_IN_CUBIC("in_cubic",8),
|
||||
EASE_OUT_CUBIC("out_cubic",9),
|
||||
EASE_IN_OUT_CUBIC("in_out_cubic",10),
|
||||
EASE_IN_QUART("in_quart",11),
|
||||
EASE_OUT_QUART("out_quart",12),
|
||||
EASE_IN_OUT_QUART("in_out_quart",13),
|
||||
EASE_IN_QUINT("in_quint",14),
|
||||
EASE_OUT_QUINT("out_quint",15),
|
||||
EASE_IN_OUT_QUINT("in_out_quint",16),
|
||||
EASE_IN_EXPO("in_expo",17),
|
||||
EASE_OUT_EXPO("out_expo",18),
|
||||
EASE_IN_OUT_EXPO("in_out_expo",19),
|
||||
EASE_IN_CIRC("in_circ",20),
|
||||
EASE_OUT_CIRC("out_circ",21),
|
||||
EASE_IN_OUT_CIRC("in_out_circ",22),
|
||||
EASE_IN_BACK("in_back",23),
|
||||
EASE_OUT_BACK("out_back",24),
|
||||
EASE_IN_OUT_BACK("in_out_back",25),
|
||||
EASE_IN_ELASTIC("in_elastic",26),
|
||||
EASE_OUT_ELASTIC("out_elastic",27),
|
||||
EASE_IN_OUT_ELASTIC("in_out_elastic",28),
|
||||
EASE_IN_BOUNCE("in_bounce",29),
|
||||
EASE_OUT_BOUNCE("out_bounce",30),
|
||||
EASE_IN_OUT_BOUNCE("in_out_bounce",31);
|
||||
|
||||
|
||||
private final String type;
|
||||
private final int index;
|
||||
EaseType(String type, int index) {
|
||||
this.type = type;
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.data;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(fluent = true)
|
||||
@Data
|
||||
public class Pos {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.data;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(fluent = true)
|
||||
@Data
|
||||
public class Rot {
|
||||
float x;
|
||||
float y;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.data;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(fluent = true)
|
||||
@Data
|
||||
public class Time {
|
||||
float fadeIn;
|
||||
float hold;
|
||||
float fadeOut;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.instruction;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class ClearInstruction implements Instruction {
|
||||
private static final ClearInstruction INSTANCE = new ClearInstruction();
|
||||
private final int clear = 1;
|
||||
|
||||
private ClearInstruction() {}
|
||||
|
||||
public static ClearInstruction instance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.instruction;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import me.zimzaza4.geyserutils.common.camera.data.Color;
|
||||
import me.zimzaza4.geyserutils.common.camera.data.Time;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class FadeInstruction implements Instruction {
|
||||
@Nullable
|
||||
private Color color;
|
||||
@Nullable
|
||||
private Time time;
|
||||
|
||||
protected FadeInstruction() {}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.instruction;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public interface Instruction extends Serializable {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package me.zimzaza4.geyserutils.common.camera.instruction;
|
||||
|
||||
import lombok.*;
|
||||
import me.zimzaza4.geyserutils.common.camera.data.CameraPreset;
|
||||
import me.zimzaza4.geyserutils.common.camera.data.Ease;
|
||||
import me.zimzaza4.geyserutils.common.camera.data.Pos;
|
||||
import me.zimzaza4.geyserutils.common.camera.data.Rot;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@Getter
|
||||
public class SetInstruction implements Instruction {
|
||||
|
||||
@Nullable
|
||||
private Ease ease;
|
||||
@Nullable
|
||||
private Pos pos;
|
||||
@Nullable
|
||||
private Rot rot;
|
||||
@Nullable
|
||||
private Pos facing;
|
||||
private CameraPreset preset;
|
||||
protected SetInstruction() {}
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
package me.zimzaza4.geyserutils.common.manager;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
|
||||
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
|
||||
import me.zimzaza4.geyserutils.common.packet.CustomPayloadPacket;
|
||||
@@ -18,6 +22,7 @@ public class PacketManager {
|
||||
public PacketManager() {
|
||||
objectMapper = new ObjectMapper();
|
||||
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.EVERYTHING, JsonTypeInfo.As.PROPERTY);
|
||||
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package me.zimzaza4.geyserutils.common.packet;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.zimzaza4.geyserutils.common.camera.instruction.Instruction;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
public class CameraInstructionCustomPayloadPacket extends CustomPayloadPacket {
|
||||
private Instruction instruction;
|
||||
}
|
||||
Reference in New Issue
Block a user