Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.TheRPGAdventurer.server.entity.breeds;
- import java.util.HashSet;
- import java.util.Random;
- import java.util.Set;
- import javax.annotation.Nullable;
- import com.TheRPGAdventurer.RealmOfTheDragonsSoundEvents;
- import com.TheRPGAdventurer.server.entity.EntityTameableDragon;
- import net.minecraft.block.Block;
- import net.minecraft.entity.EnumCreatureAttribute;
- import net.minecraft.init.Items;
- import net.minecraft.init.SoundEvents;
- import net.minecraft.item.Item;
- import net.minecraft.util.DamageSource;
- import net.minecraft.util.SoundEvent;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.World;
- import net.minecraft.world.biome.Biome;
- /**
- * Base class for dragon breeds.
- *
- */
- public abstract class DragonBreed {
- private final String skin;
- private final int color;
- private final Set<String> immunities = new HashSet<>();
- private final Set<Block> breedBlocks = new HashSet<>();
- private final Set<Biome> biomes = new HashSet<>();
- protected final Random rand = new Random();
- private final Set<Item> dropitems = new HashSet<>();
- DragonBreed(String skin, int color) {
- this.skin = skin;
- this.color = color;
- // ignore suffocation damage
- addImmunity(DamageSource.drown);
- addImmunity(DamageSource.inWall);
- // assume that cactus needles don't do much damage to animals with horned scales
- addImmunity(DamageSource.cactus);
- // ignore damage from vanilla ender dragon
- addImmunity(DamageSource.dragonBreath);
- }
- public String getSkin() {
- return skin;
- }
- public EnumCreatureAttribute getCreatureAttribute() {
- return EnumCreatureAttribute.UNDEFINED;
- }
- public int getColor() {
- return color;
- }
- public float getColorR() {
- return ((color >> 16) & 0xFF) / 255f;
- }
- public float getColorG() {
- return ((color >> 8) & 0xFF) / 255f;
- }
- public float getColorB() {
- return (color & 0xFF) / 255f;
- }
- protected final void addImmunity(DamageSource dmg) {
- immunities.add(dmg.damageType);
- }
- public boolean isImmuneToDamage(DamageSource dmg) {
- if (immunities.isEmpty()) {
- return false;
- }
- return immunities.contains(dmg.damageType);
- }
- //disabled
- protected final void addHabitatBlock(Block block) {
- breedBlocks.add(block);
- }
- //disabled
- public boolean isHabitatBlock(Block block) {
- return breedBlocks.contains(block);
- }
- //disabled
- protected final void addHabitatBiome(Biome biome) {
- biomes.add(biome);
- }
- //disabled
- public boolean isHabitatBiome(Biome biome) {
- return biomes.contains(biome);
- }
- //disabled the original mod used this to change the egg's breed on whatever environment it is on but It doesn't fit on me.
- public boolean isHabitatEnvironment(EntityTameableDragon dragon) {
- return false;
- }
- public Item[] getFoodItems() {
- return new Item[] { Items.PORKCHOP, Items.BEEF, Items.CHICKEN, Items.ROTTEN_FLESH,
- Items.WHEAT, Items.BEETROOT, Items.RABBIT, Items.CARROT, Items.COOKED_FISH,
- Items.COOKED_BEEF, Items.COOKED_CHICKEN, Items.COOKED_MUTTON, Items.COOKED_PORKCHOP,
- Items.COOKED_RABBIT};
- }
- public Item getBreedingItem() {
- return Items.FISH;
- }
- public void onUpdate(EntityTameableDragon dragon) {
- placeFootprintBlocks(dragon);
- }
- protected void placeFootprintBlocks(EntityTameableDragon dragon) {
- // only apply on server
- if (!dragon.isServer()) {
- return;
- }
- // only apply on adult dragons that don't fly
- if (!dragon.isAdult() || dragon.isFlying()) {
- return;
- }
- // only apply if footprints are enabled
- float footprintChance = getFootprintChance();
- if (footprintChance == 0) {
- return;
- }
- // footprint loop, from EntitySnowman.onLivingUpdate with slight tweaks
- World world = dragon.worldObj;
- for (int i = 0; i < 4; i++) {
- // place only if randomly selected
- if (world.rand.nextFloat() > footprintChance) {
- continue;
- }
- // get footprint position
- double bx = dragon.posX + (i % 2 * 2 - 1) * 0.25;
- double by = dragon.posY + 0.5;
- double bz = dragon.posZ + (i / 2 % 2 * 2 - 1) * 0.25;
- BlockPos pos = new BlockPos(bx, by, bz);
- // footprints can only be placed on empty space
- if (world.isAirBlock(pos)) {
- continue;
- }
- placeFootprintBlock(dragon, pos);
- }
- }
- protected void placeFootprintBlock(EntityTameableDragon dragon, BlockPos blockPos) {
- }
- protected float getFootprintChance() {
- return 0;
- }
- public abstract void onEnable(EntityTameableDragon dragon);
- public abstract void onDisable(EntityTameableDragon dragon);
- public abstract void onDeath(EntityTameableDragon dragon);
- public SoundEvent getLivingSound() {
- if (rand.nextInt(3) == 0) {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_GROWL;
- } else {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_BREATHE;
- }
- }
- public SoundEvent getHurtSound() {
- return SoundEvents.ENTITY_ENDERDRAGON_HURT;
- }
- public SoundEvent getDeathSound() {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_DEATH;
- }
- public SoundEvent getWingsSound() {
- return SoundEvents.ENTITY_ENDERDRAGON_FLAP;
- }
- public SoundEvent getStepSound() {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_STEP;
- }
- public SoundEvent getEatSound() {
- return SoundEvents.ENTITY_GENERIC_EAT;
- }
- public SoundEvent getAttackSound() {
- return SoundEvents.ENTITY_GENERIC_EAT;
- }
- public float getSoundPitch(SoundEvent sound) {
- return 1;
- }
- public float getSoundVolume(SoundEvent sound) {
- return 1;
- }
- }
- package com.TheRPGAdventurer.server.entity.breeds;
- import java.util.HashSet;
- import java.util.Random;
- import java.util.Set;
- import javax.annotation.Nullable;
- import com.TheRPGAdventurer.RealmOfTheDragonsSoundEvents;
- import com.TheRPGAdventurer.server.entity.EntityTameableDragon;
- import net.minecraft.block.Block;
- import net.minecraft.entity.EnumCreatureAttribute;
- import net.minecraft.init.Items;
- import net.minecraft.init.SoundEvents;
- import net.minecraft.item.Item;
- import net.minecraft.util.DamageSource;
- import net.minecraft.util.SoundEvent;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.World;
- import net.minecraft.world.biome.Biome;
- /**
- * Base class for dragon breeds.
- *
- */
- public abstract class DragonBreed {
- private final String skin;
- private final int color;
- private final Set<String> immunities = new HashSet<>();
- private final Set<Block> breedBlocks = new HashSet<>();
- private final Set<Biome> biomes = new HashSet<>();
- protected final Random rand = new Random();
- private final Set<Item> dropitems = new HashSet<>();
- DragonBreed(String skin, int color) {
- this.skin = skin;
- this.color = color;
- // ignore suffocation damage
- addImmunity(DamageSource.drown);
- addImmunity(DamageSource.inWall);
- // assume that cactus needles don't do much damage to animals with horned scales
- addImmunity(DamageSource.cactus);
- // ignore damage from vanilla ender dragon
- addImmunity(DamageSource.dragonBreath);
- }
- public String getSkin() {
- return skin;
- }
- public EnumCreatureAttribute getCreatureAttribute() {
- return EnumCreatureAttribute.UNDEFINED;
- }
- public int getColor() {
- return color;
- }
- public float getColorR() {
- return ((color >> 16) & 0xFF) / 255f;
- }
- public float getColorG() {
- return ((color >> 8) & 0xFF) / 255f;
- }
- public float getColorB() {
- return (color & 0xFF) / 255f;
- }
- protected final void addImmunity(DamageSource dmg) {
- immunities.add(dmg.damageType);
- }
- public boolean isImmuneToDamage(DamageSource dmg) {
- if (immunities.isEmpty()) {
- return false;
- }
- return immunities.contains(dmg.damageType);
- }
- //disabled
- protected final void addHabitatBlock(Block block) {
- breedBlocks.add(block);
- }
- //disabled
- public boolean isHabitatBlock(Block block) {
- return breedBlocks.contains(block);
- }
- //disabled
- protected final void addHabitatBiome(Biome biome) {
- biomes.add(biome);
- }
- //disabled
- public boolean isHabitatBiome(Biome biome) {
- return biomes.contains(biome);
- }
- //disabled the original mod used this to change the egg's breed on whatever environment it is on but It doesn't fit on me.
- public boolean isHabitatEnvironment(EntityTameableDragon dragon) {
- return false;
- }
- public Item[] getFoodItems() {
- return new Item[] { Items.PORKCHOP, Items.BEEF, Items.CHICKEN, Items.ROTTEN_FLESH,
- Items.WHEAT, Items.BEETROOT, Items.RABBIT, Items.CARROT, Items.COOKED_FISH,
- Items.COOKED_BEEF, Items.COOKED_CHICKEN, Items.COOKED_MUTTON, Items.COOKED_PORKCHOP,
- Items.COOKED_RABBIT};
- }
- public Item getBreedingItem() {
- return Items.FISH;
- }
- public void onUpdate(EntityTameableDragon dragon) {
- placeFootprintBlocks(dragon);
- }
- protected void placeFootprintBlocks(EntityTameableDragon dragon) {
- // only apply on server
- if (!dragon.isServer()) {
- return;
- }
- // only apply on adult dragons that don't fly
- if (!dragon.isAdult() || dragon.isFlying()) {
- return;
- }
- // only apply if footprints are enabled
- float footprintChance = getFootprintChance();
- if (footprintChance == 0) {
- return;
- }
- // footprint loop, from EntitySnowman.onLivingUpdate with slight tweaks
- World world = dragon.worldObj;
- for (int i = 0; i < 4; i++) {
- // place only if randomly selected
- if (world.rand.nextFloat() > footprintChance) {
- continue;
- }
- // get footprint position
- double bx = dragon.posX + (i % 2 * 2 - 1) * 0.25;
- double by = dragon.posY + 0.5;
- double bz = dragon.posZ + (i / 2 % 2 * 2 - 1) * 0.25;
- BlockPos pos = new BlockPos(bx, by, bz);
- // footprints can only be placed on empty space
- if (world.isAirBlock(pos)) {
- continue;
- }
- placeFootprintBlock(dragon, pos);
- }
- }
- protected void placeFootprintBlock(EntityTameableDragon dragon, BlockPos blockPos) {
- }
- protected float getFootprintChance() {
- return 0;
- }
- public abstract void onEnable(EntityTameableDragon dragon);
- public abstract void onDisable(EntityTameableDragon dragon);
- public abstract void onDeath(EntityTameableDragon dragon);
- public SoundEvent getLivingSound() {
- if (rand.nextInt(3) == 0) {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_GROWL;
- } else {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_BREATHE;
- }
- }
- public SoundEvent getHurtSound() {
- return SoundEvents.ENTITY_ENDERDRAGON_HURT;
- }
- public SoundEvent getDeathSound() {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_DEATH;
- }
- public SoundEvent getWingsSound() {
- return SoundEvents.ENTITY_ENDERDRAGON_FLAP;
- }
- public SoundEvent getStepSound() {
- return RealmOfTheDragonsSoundEvents.ENTITY_DRAGON_STEP;
- }
- public SoundEvent getEatSound() {
- return SoundEvents.ENTITY_GENERIC_EAT;
- }
- public SoundEvent getAttackSound() {
- return SoundEvents.ENTITY_GENERIC_EAT;
- }
- public float getSoundPitch(SoundEvent sound) {
- return 1;
- }
- public float getSoundVolume(SoundEvent sound) {
- return 1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement