Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ public class IdentityType<T extends LivingEntity> {
VARIANT_BY_TYPE.put(EntityType.CAT, new CatTypeProvider());
VARIANT_BY_TYPE.put(EntityType.SLIME, new SlimeTypeProvider());
VARIANT_BY_TYPE.put(EntityType.FROG, new FrogTypeProvider());
VARIANT_BY_TYPE.put(EntityType.MOOSHROOM, new MooshroomTypeProvider());
VARIANT_BY_TYPE.put(EntityType.MAGMA_CUBE, new MagmaCubeTypeProvider());
VARIANT_BY_TYPE.put(EntityType.RABBIT, new RabbitTypeProvider());
VARIANT_BY_TYPE.put(EntityType.LLAMA, new LlamaTypeProvider());
VARIANT_BY_TYPE.put(EntityType.HORSE, new HorseTypeProvider());
VARIANT_BY_TYPE.put(EntityType.VILLAGER, new VillagerTypeProvider());
VARIANT_BY_TYPE.put(EntityType.ZOMBIE_VILLAGER, new ZombieVillagerTypeProvider());
VARIANT_BY_TYPE.put(EntityType.GOAT, new GoatTypeProvider());
VARIANT_BY_TYPE.put(EntityType.PANDA, new PandaTypeProvider());
}

public IdentityType(EntityType<T> type) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public IdentityType<T> create(EntityType<T> type, T entity) {
public abstract Text modifyText(T entity, MutableText text);

public final String formatTypePrefix(String prefix) {
return String.valueOf(prefix.charAt(0)).toUpperCase(Locale.ROOT) + prefix.substring(1);
String formattedPrefix = prefix.replace('_', ' ');
return String.valueOf(formattedPrefix.charAt(0)).toUpperCase(Locale.ROOT) + formattedPrefix.substring(1);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package draylar.identity.impl.variant;

import draylar.identity.api.variant.TypeProvider;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.FoxEntity;
import net.minecraft.entity.passive.GoatEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.world.World;

public class GoatTypeProvider extends TypeProvider<GoatEntity> {

@Override
public int getVariantData(GoatEntity entity) {
return entity.isScreaming() ? 1 : 0;
}

@Override
public GoatEntity create(EntityType<GoatEntity> type, World world, int data) {
GoatEntity goat = new GoatEntity(type, world);
goat.setScreaming(data > 0);
return goat;
}

@Override
public int getFallbackData() {
return 0;
}

@Override
public int getRange() {
return 1;
}

@Override
public Text modifyText(GoatEntity entity, MutableText text) {
if(entity.isScreaming()) return Text.literal("Screaming ").append(text);
else return text;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package draylar.identity.impl.variant;

import draylar.identity.api.variant.TypeProvider;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.HorseColor;
import net.minecraft.entity.passive.HorseEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.world.World;

public class HorseTypeProvider extends TypeProvider<HorseEntity> {

@Override
public int getVariantData(HorseEntity entity) {
return entity.getVariant().getId();
}

@Override
public HorseEntity create(EntityType<HorseEntity> type, World world, int data) {
HorseEntity horse = new HorseEntity(type, world);
horse.setVariant(HorseColor.byId(data));
return horse;
}

@Override
public int getFallbackData() {
return HorseColor.WHITE.getId();
}

@Override
public int getRange() {
return HorseColor.values().length - 1;
}

@Override
public Text modifyText(HorseEntity entity, MutableText text) {
return Text.literal(formatTypePrefix(entity.getVariant().asString()) + " ").append(text);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package draylar.identity.impl.variant;

import draylar.identity.api.variant.TypeProvider;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.LlamaEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.world.World;

public class LlamaTypeProvider extends TypeProvider<LlamaEntity> {

@Override
public int getVariantData(LlamaEntity entity) {
return entity.getVariant().getIndex();
}

@Override
public LlamaEntity create(EntityType<LlamaEntity> type, World world, int data) {
LlamaEntity llama = new LlamaEntity(type, world);
llama.setVariant(LlamaEntity.Variant.byId(data));
return llama;
}

@Override
public int getFallbackData() {
return LlamaEntity.Variant.CREAMY.getIndex();
}

@Override
public int getRange() {
return LlamaEntity.Variant.values().length - 1;
}

@Override
public Text modifyText(LlamaEntity entity, MutableText text) {
return Text.literal(formatTypePrefix(entity.getVariant().asString()) + " ").append(text);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package draylar.identity.impl.variant;

import draylar.identity.api.variant.TypeProvider;
import draylar.identity.mixin.accessor.SlimeEntityAccessor;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.mob.MagmaCubeEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.world.World;

public class MagmaCubeTypeProvider extends TypeProvider<MagmaCubeEntity> {

@Override
public int getVariantData(MagmaCubeEntity entity) {
return entity.getSize();
}

@Override
public MagmaCubeEntity create(EntityType<MagmaCubeEntity> type, World world, int data) {
MagmaCubeEntity magmaCube = new MagmaCubeEntity(type, world);
((SlimeEntityAccessor) magmaCube).callSetSize(data + 1, true);
return magmaCube;
}

@Override
public int getFallbackData() {
return 0;
}

@Override
public int getRange() {
return 4;
}

@Override
public Text modifyText(MagmaCubeEntity entity, MutableText text) {
return Text.literal(String.format("Size %d ", entity.getSize())).append(text);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package draylar.identity.impl.variant;

import draylar.identity.api.variant.TypeProvider;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.MooshroomEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.world.World;

public class MooshroomTypeProvider extends TypeProvider<MooshroomEntity> {

@Override
public int getVariantData(MooshroomEntity entity) {
return entity.getVariant().ordinal();
}

@Override
public MooshroomEntity create(EntityType<MooshroomEntity> type, World world, int data) {
MooshroomEntity mooshroom = new MooshroomEntity(type, world);
mooshroom.setVariant(MooshroomEntity.Type.values()[data]);
return mooshroom;
}

@Override
public int getFallbackData() {
return MooshroomEntity.Type.RED.ordinal();
}

@Override
public int getRange() {
return MooshroomEntity.Type.values().length - 1;
}

@Override
public Text modifyText(MooshroomEntity entity, MutableText text) {
return Text.literal(formatTypePrefix(entity.getVariant().asString()) + " ").append(text);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package draylar.identity.impl.variant;

import draylar.identity.api.variant.TypeProvider;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.PandaEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.world.World;

public class PandaTypeProvider extends TypeProvider<PandaEntity> {

@Override
public int getVariantData(PandaEntity entity) {
return entity.getMainGene().getId();
}

@Override
public PandaEntity create(EntityType<PandaEntity> type, World world, int data) {
PandaEntity panda = new PandaEntity(type, world);
panda.setMainGene(PandaEntity.Gene.byId(data));
return panda;
}

@Override
public int getFallbackData() {
return PandaEntity.Gene.NORMAL.getId();
}

@Override
public int getRange() {
return PandaEntity.Gene.values().length - 1;
}

@Override
public Text modifyText(PandaEntity entity, MutableText text) {
PandaEntity.Gene gene = entity.getMainGene();
if(gene.equals(PandaEntity.Gene.NORMAL)) return text;
else return Text.literal(formatTypePrefix(gene.asString()) + " ").append(text);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package draylar.identity.impl.variant;

import java.util.Map;

import com.google.common.collect.ImmutableMap;

import draylar.identity.api.variant.TypeProvider;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.RabbitEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.world.World;

public class RabbitTypeProvider extends TypeProvider<RabbitEntity> {

private static final Map<Integer, String> PREFIX_BY_ID = ImmutableMap
.<Integer, String>builder()
.put(0, "Brown")
.put(1, "White")
.put(2, "Black")
.put(3, "White Splotched")
.put(4, "Gold")
.put(5, "Salt and Pepper")
.build();

@Override
public int getVariantData(RabbitEntity entity) {
int id = entity.getVariant().getId();
if(id == 99) return 6;
else return id;
}

@Override
public RabbitEntity create(EntityType<RabbitEntity> type, World world, int data) {
RabbitEntity rabbit = new RabbitEntity(type, world);
if (data == 6) data = 99;
rabbit.setVariant(RabbitEntity.RabbitType.byId(data));
return rabbit;
}

@Override
public int getFallbackData() {
return RabbitEntity.RabbitType.BROWN.getId();
}

@Override
public int getRange() {
return RabbitEntity.RabbitType.values().length - 1;
}

@Override
public Text modifyText(RabbitEntity entity, MutableText text) {
RabbitEntity.RabbitType type = entity.getVariant();
if(type.equals(RabbitEntity.RabbitType.EVIL)) return Text.translatable("entity.minecraft.killer_bunny");
else return Text.literal(PREFIX_BY_ID.get(type.getId()) + " ").append(text);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package draylar.identity.impl.variant;

import draylar.identity.api.variant.TypeProvider;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.HorseColor;
import net.minecraft.entity.passive.HorseEntity;
import net.minecraft.entity.passive.VillagerEntity;
import net.minecraft.registry.Registries;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.village.VillagerType;
import net.minecraft.world.World;

public class VillagerTypeProvider extends TypeProvider<VillagerEntity> {

@Override
public int getVariantData(VillagerEntity entity) {
return Registries.VILLAGER_TYPE.getRawId(entity.getVariant());
}

@Override
public VillagerEntity create(EntityType<VillagerEntity> type, World world, int data) {
VillagerEntity villager = new VillagerEntity(type, world);
villager.setVariant(Registries.VILLAGER_TYPE.get(data));
return villager;
}

@Override
public int getFallbackData() {
return 0;
}

@Override
public int getRange() {
return Registries.VILLAGER_TYPE.size() - 1;
}

@Override
public Text modifyText(VillagerEntity entity, MutableText text) {
return Text.literal(formatTypePrefix(entity.getVariant().toString()) + " ").append(text);
}
}
Loading