Skip to content

Commit

Permalink
add cat api
Browse files Browse the repository at this point in the history
  • Loading branch information
aabssmc committed Sep 19, 2024
1 parent 8c2d526 commit 7abd114
Show file tree
Hide file tree
Showing 8 changed files with 206 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/main/java/lol/aabss/skuishy/elements/entities/Types.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package lol.aabss.skuishy.elements.entities;

import ch.njol.skript.registrations.Classes;
import lol.aabss.skuishy.other.CatVariant;
import lol.aabss.skuishy.other.EnumWrapper;
import org.bukkit.entity.*;

Expand Down Expand Up @@ -61,5 +62,12 @@ public class Types {
.description("Represents the phase of a dragon.")
.since("2.8"));
}
if (Classes.getClassInfoNoError("catvariant") == null) {
Classes.registerClass(new EnumWrapper<>(CatVariant.class).getClassInfo("catvariant")
.user("cat ?variants?")
.name("Cat Variant")
.description("Represents a variant of a cat.")
.since("2.8"));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package lol.aabss.skuishy.elements.entities.conditions;

import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import lol.aabss.skuishy.other.skript.EntityCondition;
import org.bukkit.entity.Cat;

@Name("Cat - Is Head Up")
@Description("True if the cat is head up:")
@Examples({
"if {_cat} is head up:",
"\tset head up of {_cat} to false"
})
@Since("2.8")
public class CondIsCatHeadUp extends EntityCondition<Cat> {

static {
register(CondIsCatHeadUp.class, "[cat] head up", "entities");
}

@Override
protected boolean run(Cat cat) {
return cat.isHeadUp();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package lol.aabss.skuishy.elements.entities.conditions;

import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import lol.aabss.skuishy.other.skript.EntityCondition;
import org.bukkit.entity.Cat;

@Name("Cat - Is Lying Down")
@Description("True if the cat is lying down:")
@Examples({
"if {_cat} is lying down:",
"\tset lying down of {_cat} to false"
})
@Since("2.8")
public class CondIsCatLyingDown extends EntityCondition<Cat> {

static {
register(CondIsCatLyingDown.class, "[cat] lying down", "entities");
}

@Override
protected boolean run(Cat cat) {
return cat.isLyingDown();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package lol.aabss.skuishy.elements.entities.expressions;

import ch.njol.skript.classes.Changer;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import lol.aabss.skuishy.other.skript.EntityExpression;
import org.bukkit.entity.Cat;
import org.jetbrains.annotations.Nullable;

@Name("Cat - Head Up")
@Description("Gets/sets the head up state of a cat.")
@Examples({
"set head up of {_cat} to true"
})
@Since("2.8")
public class ExprCatHeadUp extends EntityExpression<Cat, Boolean> {

static {
register(ExprCatHeadUp.class, Boolean.class, "[cat] head up [state|mode]", "entities");
}

@Override
public Boolean get(Cat cat) {
return cat.isHeadUp();
}

@Override
public void change(Cat cat, @Nullable Boolean aBoolean, Changer.ChangeMode mode) {
if (aBoolean != null && mode == Changer.ChangeMode.SET) {
cat.setHeadUp(aBoolean);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package lol.aabss.skuishy.elements.entities.expressions;

import ch.njol.skript.classes.Changer;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import lol.aabss.skuishy.other.skript.EntityExpression;
import org.bukkit.entity.Cat;
import org.jetbrains.annotations.Nullable;

@Name("Cat - Lying Down")
@Description("Gets/sets the lying down state of a cat.")
@Examples({
"set lying down of {_cat} to true"
})
@Since("2.8")
public class ExprCatLyingDown extends EntityExpression<Cat, Boolean> {

static {
register(ExprCatLyingDown.class, Boolean.class, "[cat] lying down [state|mode]", "entities");
}

@Override
public Boolean get(Cat cat) {
return cat.isLyingDown();
}

@Override
public void change(Cat cat, @Nullable Boolean aBoolean, Changer.ChangeMode mode) {
if (aBoolean != null && mode == Changer.ChangeMode.SET) {
cat.setLyingDown(aBoolean);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package lol.aabss.skuishy.elements.entities.expressions;

import ch.njol.skript.classes.Changer;
import ch.njol.skript.doc.Description;
import ch.njol.skript.doc.Examples;
import ch.njol.skript.doc.Name;
import ch.njol.skript.doc.Since;
import lol.aabss.skuishy.other.CatVariant;
import lol.aabss.skuishy.other.skript.EntityExpression;
import org.bukkit.entity.Cat;
import org.jetbrains.annotations.Nullable;

@Name("Cat - Variant")
@Description("Gets/sets the variant of an cat.")
@Examples({
"set cat variant of {_cat} to tabby"
})
@Since("2.8")
public class ExprCatVariant extends EntityExpression<Cat, CatVariant> {

static {
register(ExprCatVariant.class, CatVariant.class, "cat (variant|type)", "entities");
}

@Override
public CatVariant get(Cat cat) {
return CatVariant.fromBukkit(cat.getCatType());
}

@Override
public void change(Cat cat, @Nullable CatVariant type, Changer.ChangeMode mode) {
if (type != null && mode == Changer.ChangeMode.SET) {
cat.setCatType(type.toBukkit());
}
}
}
37 changes: 37 additions & 0 deletions src/main/java/lol/aabss/skuishy/other/CatVariant.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package lol.aabss.skuishy.other;

import com.google.common.base.Preconditions;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.entity.Cat;

public enum CatVariant {
TABBY("tabby"),
BLACK("black"),
RED("red"),
SIAMESE("siamese"),
BRITISH_SHORTHAIR("british_shorthair"),
CALICO("calico"),
PERSIAN("persian"),
RAGDOLL("ragdoll"),
WHITE("white"),
JELLIE("jellie"),
ALL_BLACK("all_black");

private final String key;

CatVariant(String key) {
this.key = key;
}

public Cat.Type toBukkit(){
NamespacedKey namespacedKey = NamespacedKey.minecraft(key);
Cat.Type type = Registry.CAT_VARIANT.get(namespacedKey);
Preconditions.checkNotNull(type, "No cat type found for %s. This is a bug.", namespacedKey);
return type;
}

public static CatVariant fromBukkit(Cat.Type bukkit) {
return CatVariant.valueOf(bukkit.key().value().toUpperCase());
}
}
1 change: 1 addition & 0 deletions src/main/resources/lang/default.lang
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ types:
boatvariant: boat ?variant¦s @a
boatstatus: boat ?status¦es @a
dragonphase: [ender ?]dragon phase¦s @an
catvariant: cat ?variant¦s @a

hologramclicktype: hologram ?click ?type¦s @a
hologram: hologram¦s @a
Expand Down

0 comments on commit 7abd114

Please sign in to comment.