mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-03-26 11:49:46 +01:00
minor refactoring of ProjectileUtils and MetadataConstants
This commit is contained in:
parent
2efe1efc50
commit
1005b29e96
@ -1,18 +1,40 @@
|
|||||||
package com.gmail.nossr50.util;
|
package com.gmail.nossr50.util;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores our constants related to metadata
|
* Stores our constants related to metadata
|
||||||
*/
|
*/
|
||||||
public class MetadataConstants {
|
public class MetadataConstants {
|
||||||
/* Metadata Values
|
public static final @NotNull Set<String> MOB_METADATA_KEYS = Set.of(
|
||||||
* Take great care if you ever modify the value of these keys
|
MetadataConstants.METADATA_KEY_MOB_SPAWNER_MOB,
|
||||||
*/
|
MetadataConstants.METADATA_KEY_EGG_MOB,
|
||||||
|
MetadataConstants.METADATA_KEY_NETHER_PORTAL_MOB,
|
||||||
|
MetadataConstants.METADATA_KEY_COTW_SUMMONED_MOB,
|
||||||
|
MetadataConstants.METADATA_KEY_PLAYER_BRED_MOB,
|
||||||
|
MetadataConstants.METADATA_KEY_PLAYER_TAMED_MOB,
|
||||||
|
MetadataConstants.METADATA_KEY_EXPLOITED_ENDERMEN,
|
||||||
|
MetadataConstants.METADATA_KEY_CUSTOM_NAME,
|
||||||
|
MetadataConstants.METADATA_KEY_RUPTURE,
|
||||||
|
MetadataConstants.METADATA_KEY_EXPLOSION_FROM_RUPTURE,
|
||||||
|
MetadataConstants.METADATA_KEY_OLD_NAME_KEY,
|
||||||
|
MetadataConstants.METADATA_KEY_DODGE_TRACKER
|
||||||
|
);
|
||||||
|
|
||||||
|
public static final @NotNull List<String> ARROW_METADATA_KEYS = List.of(
|
||||||
|
MetadataConstants.METADATA_KEY_INF_ARROW,
|
||||||
|
MetadataConstants.METADATA_KEY_BOW_FORCE,
|
||||||
|
MetadataConstants.METADATA_KEY_ARROW_DISTANCE,
|
||||||
|
MetadataConstants.METADATA_KEY_SPAWNED_ARROW,
|
||||||
|
MetadataConstants.METADATA_KEY_MULTI_SHOT_ARROW,
|
||||||
|
MetadataConstants.METADATA_KEY_BOUNCE_COUNT,
|
||||||
|
MetadataConstants.METADATA_KEY_CROSSBOW_PROJECTILE
|
||||||
|
);
|
||||||
|
|
||||||
public static final @NotNull String METADATA_KEY_REPLANT = "mcMMO: Recently Replanted";
|
public static final @NotNull String METADATA_KEY_REPLANT = "mcMMO: Recently Replanted";
|
||||||
public static final @NotNull String METADATA_KEY_CROSSBOW_PROJECTILE = "mcMMO: Crossbow Projectile";
|
public static final @NotNull String METADATA_KEY_CROSSBOW_PROJECTILE = "mcMMO: Crossbow Projectile";
|
||||||
public static final @NotNull String METADATA_KEY_SPAWNED_ARROW = "mcMMO: Spawned Arrow";
|
public static final @NotNull String METADATA_KEY_SPAWNED_ARROW = "mcMMO: Spawned Arrow";
|
||||||
@ -23,10 +45,8 @@ public class MetadataConstants {
|
|||||||
public static final @NotNull String METADATA_KEY_DODGE_TRACKER = "mcMMO: Dodge Tracker";
|
public static final @NotNull String METADATA_KEY_DODGE_TRACKER = "mcMMO: Dodge Tracker";
|
||||||
public static final @NotNull String METADATA_KEY_CUSTOM_DAMAGE = "mcMMO: Custom Damage";
|
public static final @NotNull String METADATA_KEY_CUSTOM_DAMAGE = "mcMMO: Custom Damage";
|
||||||
public static final @NotNull String METADATA_KEY_TRAVELING_BLOCK = "mcMMO: Traveling Block";
|
public static final @NotNull String METADATA_KEY_TRAVELING_BLOCK = "mcMMO: Traveling Block";
|
||||||
public static final @NotNull String METADATA_KEY_PISTON_TRACKING = "mcMMO: Piston Tracking";
|
|
||||||
public static final @NotNull String METADATA_KEY_TRACKED_TNT = "mcMMO: Tracked TNT";
|
public static final @NotNull String METADATA_KEY_TRACKED_TNT = "mcMMO: Tracked TNT";
|
||||||
public static final @NotNull String METADATA_KEY_NAME_VISIBILITY = "mcMMO: Name Visibility";
|
public static final @NotNull String METADATA_KEY_NAME_VISIBILITY = "mcMMO: Name Visibility";
|
||||||
public static final @NotNull String METADATA_KEY_TRACKED_ITEM = "mcMMO: Tracked Item";
|
|
||||||
public static final @NotNull String METADATA_KEY_INF_ARROW = "mcMMO: Infinite Arrow";
|
public static final @NotNull String METADATA_KEY_INF_ARROW = "mcMMO: Infinite Arrow";
|
||||||
public static final @NotNull String METADATA_KEY_TRACKED_ARROW = "mcMMO: Tracked Arrow";
|
public static final @NotNull String METADATA_KEY_TRACKED_ARROW = "mcMMO: Tracked Arrow";
|
||||||
public static final @NotNull String METADATA_KEY_BOW_FORCE = "mcMMO: Bow Force";
|
public static final @NotNull String METADATA_KEY_BOW_FORCE = "mcMMO: Bow Force";
|
||||||
@ -50,28 +70,6 @@ public class MetadataConstants {
|
|||||||
public static final @NotNull String METADATA_KEY_CUSTOM_NAME = "mcmmo_custom_name";
|
public static final @NotNull String METADATA_KEY_CUSTOM_NAME = "mcmmo_custom_name";
|
||||||
public static final @NotNull String METADATA_KEY_OLD_NAME_KEY = "mcmmo_old_name";
|
public static final @NotNull String METADATA_KEY_OLD_NAME_KEY = "mcmmo_old_name";
|
||||||
public static final @NotNull String METADATA_KEY_RUPTURE = "mcmmo_rupture";
|
public static final @NotNull String METADATA_KEY_RUPTURE = "mcmmo_rupture";
|
||||||
|
|
||||||
public static final byte SIMPLE_FLAG_VALUE = (byte) 0x1;
|
public static final byte SIMPLE_FLAG_VALUE = (byte) 0x1;
|
||||||
|
|
||||||
public static final @NotNull ImmutableSet<String> MOB_METADATA_KEYS;
|
|
||||||
|
|
||||||
public static FixedMetadataValue MCMMO_METADATA_VALUE;
|
public static FixedMetadataValue MCMMO_METADATA_VALUE;
|
||||||
|
|
||||||
static {
|
|
||||||
HashSet<String> temp = new HashSet<>();
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_MOB_SPAWNER_MOB);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_EGG_MOB);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_NETHER_PORTAL_MOB);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_COTW_SUMMONED_MOB);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_PLAYER_BRED_MOB);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_PLAYER_TAMED_MOB);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_EXPLOITED_ENDERMEN);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_CUSTOM_NAME);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_RUPTURE);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_EXPLOSION_FROM_RUPTURE);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_OLD_NAME_KEY);
|
|
||||||
temp.add(MetadataConstants.METADATA_KEY_DODGE_TRACKER);
|
|
||||||
|
|
||||||
MOB_METADATA_KEYS = ImmutableSet.copyOf(temp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,16 @@ import com.gmail.nossr50.util.MetadataConstants;
|
|||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.Arrow;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
import org.bukkit.metadata.MetadataValue;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import static com.gmail.nossr50.util.MetadataConstants.ARROW_METADATA_KEYS;
|
||||||
import static com.gmail.nossr50.util.MetadataConstants.MCMMO_METADATA_VALUE;
|
import static com.gmail.nossr50.util.MetadataConstants.MCMMO_METADATA_VALUE;
|
||||||
|
|
||||||
public class ProjectileUtils {
|
public class ProjectileUtils {
|
||||||
|
|
||||||
public static Vector getNormal(BlockFace blockFace) {
|
public static Vector getNormal(BlockFace blockFace) {
|
||||||
return switch (blockFace) {
|
return switch (blockFace) {
|
||||||
case UP -> new Vector(0, 1, 0);
|
case UP -> new Vector(0, 1, 0);
|
||||||
@ -30,65 +33,32 @@ public class ProjectileUtils {
|
|||||||
* @param arrow projectile
|
* @param arrow projectile
|
||||||
*/
|
*/
|
||||||
public static void cleanupProjectileMetadata(@NotNull Arrow arrow) {
|
public static void cleanupProjectileMetadata(@NotNull Arrow arrow) {
|
||||||
if (arrow.hasMetadata(MetadataConstants.METADATA_KEY_INF_ARROW)) {
|
ARROW_METADATA_KEYS.stream()
|
||||||
arrow.removeMetadata(MetadataConstants.METADATA_KEY_INF_ARROW, mcMMO.p);
|
.filter(arrow::hasMetadata)
|
||||||
}
|
.forEach(key -> arrow.removeMetadata(key, mcMMO.p));
|
||||||
|
|
||||||
if (arrow.hasMetadata(MetadataConstants.METADATA_KEY_BOW_FORCE)) {
|
|
||||||
arrow.removeMetadata(MetadataConstants.METADATA_KEY_BOW_FORCE, mcMMO.p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arrow.hasMetadata(MetadataConstants.METADATA_KEY_ARROW_DISTANCE)) {
|
|
||||||
arrow.removeMetadata(MetadataConstants.METADATA_KEY_ARROW_DISTANCE, mcMMO.p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arrow.hasMetadata(MetadataConstants.METADATA_KEY_SPAWNED_ARROW)) {
|
|
||||||
arrow.removeMetadata(MetadataConstants.METADATA_KEY_SPAWNED_ARROW, mcMMO.p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arrow.hasMetadata(MetadataConstants.METADATA_KEY_MULTI_SHOT_ARROW)) {
|
|
||||||
arrow.removeMetadata(MetadataConstants.METADATA_KEY_MULTI_SHOT_ARROW, mcMMO.p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arrow.hasMetadata(MetadataConstants.METADATA_KEY_BOUNCE_COUNT)) {
|
|
||||||
arrow.removeMetadata(MetadataConstants.METADATA_KEY_BOUNCE_COUNT, mcMMO.p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arrow.hasMetadata(MetadataConstants.METADATA_KEY_CROSSBOW_PROJECTILE)) {
|
|
||||||
arrow.removeMetadata(MetadataConstants.METADATA_KEY_CROSSBOW_PROJECTILE, mcMMO.p);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void copyArrowMetadata(@NotNull Plugin pluginRef, @NotNull Arrow arrowToCopy, @NotNull Arrow newArrow) {
|
/**
|
||||||
if (arrowToCopy.hasMetadata(MetadataConstants.METADATA_KEY_INF_ARROW)) {
|
* Copies metadata from one arrow to another.
|
||||||
newArrow.setMetadata(MetadataConstants.METADATA_KEY_INF_ARROW,
|
*
|
||||||
arrowToCopy.getMetadata(MetadataConstants.METADATA_KEY_INF_ARROW).get(0));
|
* @param pluginRef mcMMO plugin reference.
|
||||||
}
|
* @param sourceArrow The arrow from which metadata is copied.
|
||||||
|
* @param targetArrow The arrow to which metadata is copied.
|
||||||
if (arrowToCopy.hasMetadata(MetadataConstants.METADATA_KEY_BOW_FORCE)) {
|
*/
|
||||||
newArrow.setMetadata(MetadataConstants.METADATA_KEY_BOW_FORCE,
|
public static void copyArrowMetadata(@NotNull Plugin pluginRef, @NotNull Arrow sourceArrow,
|
||||||
new FixedMetadataValue(pluginRef,
|
@NotNull Arrow targetArrow) {
|
||||||
arrowToCopy.getMetadata(MetadataConstants.METADATA_KEY_BOW_FORCE).get(0).asDouble()));
|
ARROW_METADATA_KEYS.stream()
|
||||||
}
|
.filter(sourceArrow::hasMetadata)
|
||||||
|
.forEach(key -> {
|
||||||
if (arrowToCopy.hasMetadata(MetadataConstants.METADATA_KEY_ARROW_DISTANCE)) {
|
final MetadataValue metadataValue = sourceArrow.getMetadata(key).get(0);
|
||||||
newArrow.setMetadata(MetadataConstants.METADATA_KEY_ARROW_DISTANCE,
|
if (key.equals(MetadataConstants.METADATA_KEY_BOW_FORCE)) {
|
||||||
arrowToCopy.getMetadata(MetadataConstants.METADATA_KEY_ARROW_DISTANCE).get(0));
|
targetArrow.setMetadata(key, new FixedMetadataValue(pluginRef, metadataValue.asDouble()));
|
||||||
}
|
} else if (key.equals(MetadataConstants.METADATA_KEY_CROSSBOW_PROJECTILE)) {
|
||||||
|
targetArrow.setMetadata(key, MCMMO_METADATA_VALUE);
|
||||||
if (arrowToCopy.hasMetadata(MetadataConstants.METADATA_KEY_SPAWNED_ARROW)) {
|
} else {
|
||||||
newArrow.setMetadata(MetadataConstants.METADATA_KEY_SPAWNED_ARROW,
|
targetArrow.setMetadata(key, metadataValue);
|
||||||
arrowToCopy.getMetadata(MetadataConstants.METADATA_KEY_SPAWNED_ARROW).get(0));
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
if (arrowToCopy.hasMetadata(MetadataConstants.METADATA_KEY_MULTI_SHOT_ARROW)) {
|
|
||||||
newArrow.setMetadata(MetadataConstants.METADATA_KEY_MULTI_SHOT_ARROW,
|
|
||||||
arrowToCopy.getMetadata(MetadataConstants.METADATA_KEY_MULTI_SHOT_ARROW).get(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arrowToCopy.hasMetadata(MetadataConstants.METADATA_KEY_CROSSBOW_PROJECTILE)) {
|
|
||||||
newArrow.setMetadata(MetadataConstants.METADATA_KEY_CROSSBOW_PROJECTILE, MCMMO_METADATA_VALUE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isCrossbowProjectile(@NotNull Arrow arrow) {
|
public static boolean isCrossbowProjectile(@NotNull Arrow arrow) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user