mirror of https://github.com/PaperMC/Paper.git
Add sound generator (WIP)
This commit is contained in:
parent
fa8a407072
commit
8fbb6a44f7
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,7 @@
|
|||
package io.papermc.generator;
|
||||
|
||||
import io.papermc.generator.types.GeneratedKeyType;
|
||||
import io.papermc.generator.types.SoundGenerator;
|
||||
import io.papermc.generator.types.SourceGenerator;
|
||||
import io.papermc.generator.types.goal.MobGoalGenerator;
|
||||
import io.papermc.paper.registry.RegistryKey;
|
||||
|
@ -33,7 +34,8 @@ public interface Generators {
|
|||
simpleKey("MobEffectKeys", PotionEffectType.class, Registries.MOB_EFFECT, RegistryKey.MOB_EFFECT, false),
|
||||
simpleKey("DamageTypeKeys", DamageType.class, Registries.DAMAGE_TYPE, RegistryKey.DAMAGE_TYPE, true),
|
||||
simpleKey("WolfVariantKeys", Wolf.Variant.class, Registries.WOLF_VARIANT, RegistryKey.WOLF_VARIANT, true),
|
||||
new MobGoalGenerator("VanillaGoal", "com.destroystokyo.paper.entity.ai")
|
||||
new MobGoalGenerator("VanillaGoal", "com.destroystokyo.paper.entity.ai"),
|
||||
new SoundGenerator("Sound", "org.bukkit")
|
||||
};
|
||||
|
||||
private static <T, A> SourceGenerator simpleKey(final String className, final Class<A> apiType, final ResourceKey<? extends Registry<T>> registryKey, final RegistryKey<A> apiRegistryKey, final boolean publicCreateKeyMethod) {
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
package io.papermc.generator.types;
|
||||
|
||||
import com.destroystokyo.paper.entity.RangedEntity;
|
||||
import com.destroystokyo.paper.entity.ai.GoalKey;
|
||||
import com.squareup.javapoet.ClassName;
|
||||
import com.squareup.javapoet.FieldSpec;
|
||||
import com.squareup.javapoet.JavaFile;
|
||||
import com.squareup.javapoet.MethodSpec;
|
||||
import com.squareup.javapoet.ParameterSpec;
|
||||
import com.squareup.javapoet.ParameterizedTypeName;
|
||||
import com.squareup.javapoet.TypeName;
|
||||
import com.squareup.javapoet.TypeSpec;
|
||||
import com.squareup.javapoet.TypeVariableName;
|
||||
import io.github.classgraph.ClassGraph;
|
||||
import io.github.classgraph.ScanResult;
|
||||
import io.papermc.generator.Main;
|
||||
import io.papermc.generator.types.goal.MobGoalNames;
|
||||
import io.papermc.generator.utils.Annotations;
|
||||
import io.papermc.generator.utils.Formatting;
|
||||
import io.papermc.generator.utils.Javadocs;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import javax.lang.model.element.Modifier;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import net.kyori.adventure.sound.Sound;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.world.entity.ai.goal.Goal;
|
||||
import net.minecraft.world.entity.ai.goal.WrappedGoal;
|
||||
import org.bukkit.Keyed;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.entity.AbstractHorse;
|
||||
import org.bukkit.entity.Blaze;
|
||||
import org.bukkit.entity.Cat;
|
||||
import org.bukkit.entity.Creature;
|
||||
import org.bukkit.entity.Dolphin;
|
||||
import org.bukkit.entity.Drowned;
|
||||
import org.bukkit.entity.Enderman;
|
||||
import org.bukkit.entity.Evoker;
|
||||
import org.bukkit.entity.Fish;
|
||||
import org.bukkit.entity.Fox;
|
||||
import org.bukkit.entity.Ghast;
|
||||
import org.bukkit.entity.Llama;
|
||||
import org.bukkit.entity.Mob;
|
||||
import org.bukkit.entity.Monster;
|
||||
import org.bukkit.entity.Panda;
|
||||
import org.bukkit.entity.Parrot;
|
||||
import org.bukkit.entity.PigZombie;
|
||||
import org.bukkit.entity.PolarBear;
|
||||
import org.bukkit.entity.Rabbit;
|
||||
import org.bukkit.entity.Raider;
|
||||
import org.bukkit.entity.Ravager;
|
||||
import org.bukkit.entity.Shulker;
|
||||
import org.bukkit.entity.Silverfish;
|
||||
import org.bukkit.entity.SkeletonHorse;
|
||||
import org.bukkit.entity.Slime;
|
||||
import org.bukkit.entity.Spellcaster;
|
||||
import org.bukkit.entity.Spider;
|
||||
import org.bukkit.entity.Squid;
|
||||
import org.bukkit.entity.Tameable;
|
||||
import org.bukkit.entity.TraderLlama;
|
||||
import org.bukkit.entity.Turtle;
|
||||
import org.bukkit.entity.Vex;
|
||||
import org.bukkit.entity.Vindicator;
|
||||
import org.bukkit.entity.WanderingTrader;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.framework.qual.DefaultQualifier;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@DefaultQualifier(NonNull.class)
|
||||
public class SoundGenerator extends SimpleGenerator {
|
||||
|
||||
private static final String CLASS_HEADER = Javadocs.getVersionDependentClassHeader("Sounds");
|
||||
|
||||
public SoundGenerator(final String keysClassName, final String pkg) {
|
||||
super(keysClassName, pkg);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TypeSpec getTypeSpec() {
|
||||
TypeSpec.Builder typeBuilder = TypeSpec.enumBuilder(this.className)
|
||||
.addSuperinterface(Keyed.class)
|
||||
.addSuperinterface(Sound.Type.class)
|
||||
.addModifiers(Modifier.PUBLIC)
|
||||
.addAnnotations(Annotations.CLASS_HEADER)
|
||||
.addJavadoc(CLASS_HEADER);
|
||||
|
||||
|
||||
Registry<SoundEvent> event = Main.REGISTRY_ACCESS.registryOrThrow(Registries.SOUND_EVENT);
|
||||
List<String> paths = new ArrayList<>();
|
||||
event.entrySet().forEach(key -> paths.add(key.getKey().location().getPath()));
|
||||
paths.sort(Comparator.naturalOrder());
|
||||
|
||||
paths.forEach(new Consumer<String>() {
|
||||
@Override
|
||||
public void accept(final String string) {
|
||||
String fieldName = Formatting.formatKeyAsField(Key.key(string));
|
||||
typeBuilder.addEnumConstant(fieldName, TypeSpec.anonymousClassBuilder("$S", string).build());
|
||||
}
|
||||
});
|
||||
|
||||
typeBuilder.addField(FieldSpec.builder(NamespacedKey.class, "key", Modifier.PRIVATE).build());
|
||||
typeBuilder.addMethod(MethodSpec.constructorBuilder()
|
||||
.addParameter(String.class, "key").addCode("this.key = NamespacedKey.minecraft(key);").build());
|
||||
|
||||
typeBuilder.addMethod(MethodSpec.methodBuilder("key")
|
||||
.returns(Key.class)
|
||||
.addModifiers(Modifier.PUBLIC)
|
||||
.addAnnotation(Annotations.NOT_NULL)
|
||||
.addAnnotation(Annotations.OVERRIDE)
|
||||
.addCode("return this.key;").build());
|
||||
|
||||
typeBuilder.addMethod(MethodSpec.methodBuilder("getKey")
|
||||
.returns(NamespacedKey.class)
|
||||
.addModifiers(Modifier.PUBLIC)
|
||||
.addAnnotation(Annotations.NOT_NULL)
|
||||
.addAnnotation(Annotations.OVERRIDE)
|
||||
.addCode("return this.key;").build());
|
||||
|
||||
return typeBuilder.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaFile.Builder file(JavaFile.Builder builder) {
|
||||
return builder
|
||||
.skipJavaLangImports(true);
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@ package io.papermc.generator.utils;
|
|||
import com.squareup.javapoet.AnnotationSpec;
|
||||
import java.util.List;
|
||||
|
||||
import com.squareup.javapoet.ClassName;
|
||||
import io.papermc.paper.generated.GeneratedFrom;
|
||||
import net.minecraft.SharedConstants;
|
||||
import org.bukkit.MinecraftExperimental;
|
||||
|
@ -42,6 +43,7 @@ public final class Annotations {
|
|||
@ApiStatus.Experimental
|
||||
public static final AnnotationSpec EXPERIMENTAL_API_ANNOTATION = AnnotationSpec.builder(ApiStatus.Experimental.class).build();
|
||||
public static final AnnotationSpec NOT_NULL = AnnotationSpec.builder(NotNull.class).build();
|
||||
public static final AnnotationSpec OVERRIDE = AnnotationSpec.builder(Override.class).build();
|
||||
private static final AnnotationSpec SUPPRESS_WARNINGS = AnnotationSpec.builder(SuppressWarnings.class)
|
||||
.addMember("value", "$S", "unused")
|
||||
.addMember("value", "$S", "SpellCheckingInspection")
|
||||
|
|
Loading…
Reference in New Issue