Files
CatServer/patches/net/minecraft/entity/passive/EntityParrot.java.patch
2019-02-24 22:29:41 +08:00

145 lines
9.8 KiB
Diff

--- ../src-base/minecraft/net/minecraft/entity/passive/EntityParrot.java
+++ ../src-work/minecraft/net/minecraft/entity/passive/EntityParrot.java
@@ -1,6 +1,7 @@
package net.minecraft.entity.passive;
import com.google.common.base.Predicate;
+import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
@@ -89,12 +90,12 @@
{
public boolean apply(@Nullable EntityLiving p_apply_1_)
{
- return p_apply_1_ != null && EntityParrot.IMITATION_SOUND_EVENTS.containsKey(EntityList.REGISTRY.getIDForObject(p_apply_1_.getClass()));
+ return p_apply_1_ != null && EntityParrot.MIMIC_SOUNDS.containsKey(p_apply_1_.getClass());
}
};
private static final Item DEADLY_ITEM = Items.COOKIE;
private static final Set<Item> TAME_ITEMS = Sets.newHashSet(Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS);
- private static final Int2ObjectMap<SoundEvent> IMITATION_SOUND_EVENTS = new Int2ObjectOpenHashMap<SoundEvent>(32);
+ private static final java.util.Map<Class<? extends Entity>, SoundEvent> MIMIC_SOUNDS = Maps.newHashMapWithExpectedSize(32);
public float flap;
public float flapSpeed;
public float oFlapSpeed;
@@ -214,7 +215,7 @@
if (!entityliving.isSilent())
{
- SoundEvent soundevent = getImitatedSound(EntityList.REGISTRY.getIDForObject(entityliving.getClass()));
+ SoundEvent soundevent = MIMIC_SOUNDS.get(entityliving.getClass());
worldIn.playSound((EntityPlayer)null, p_192006_1_.posX, p_192006_1_.posY, p_192006_1_.posZ, soundevent, p_192006_1_.getSoundCategory(), 0.7F, getPitch(worldIn.rand));
return true;
}
@@ -246,7 +247,7 @@
if (!this.world.isRemote)
{
- if (this.rand.nextInt(10) == 0)
+ if (this.rand.nextInt(10) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())
{
this.setTamedBy(player);
this.playTameEffect(true);
@@ -345,8 +346,9 @@
{
if (random.nextInt(1000) == 0)
{
- List<Integer> list = new ArrayList<Integer>(IMITATION_SOUND_EVENTS.keySet());
- return getImitatedSound(((Integer)list.get(random.nextInt(list.size()))).intValue());
+ List<SoundEvent> list = new ArrayList<SoundEvent>(MIMIC_SOUNDS.values());
+ SoundEvent ret = list.get(random.nextInt(list.size()));
+ return ret == null ? SoundEvents.ENTITY_PARROT_AMBIENT : ret;
}
else
{
@@ -354,11 +356,6 @@
}
}
- public static SoundEvent getImitatedSound(int p_191999_0_)
- {
- return IMITATION_SOUND_EVENTS.containsKey(p_191999_0_) ? (SoundEvent)IMITATION_SOUND_EVENTS.get(p_191999_0_) : SoundEvents.ENTITY_PARROT_AMBIENT;
- }
-
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return SoundEvents.ENTITY_PARROT_HURT;
@@ -423,7 +420,8 @@
{
if (this.aiSit != null)
{
- this.aiSit.setSitting(false);
+ // CraftBukkit - moved into EntityLiving.damageEntity(DamageSource, float)
+ // this.aiSit.setSitting(false);
}
return super.attackEntityFrom(source, amount);
@@ -471,33 +469,38 @@
static
{
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityBlaze.class), SoundEvents.E_PARROT_IM_BLAZE);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityCaveSpider.class), SoundEvents.E_PARROT_IM_SPIDER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityCreeper.class), SoundEvents.E_PARROT_IM_CREEPER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityElderGuardian.class), SoundEvents.E_PARROT_IM_ELDER_GUARDIAN);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityDragon.class), SoundEvents.E_PARROT_IM_ENDERDRAGON);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityEnderman.class), SoundEvents.E_PARROT_IM_ENDERMAN);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityEndermite.class), SoundEvents.E_PARROT_IM_ENDERMITE);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityEvoker.class), SoundEvents.E_PARROT_IM_EVOCATION_ILLAGER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityGhast.class), SoundEvents.E_PARROT_IM_GHAST);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityHusk.class), SoundEvents.E_PARROT_IM_HUSK);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityIllusionIllager.class), SoundEvents.E_PARROT_IM_ILLUSION_ILLAGER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityMagmaCube.class), SoundEvents.E_PARROT_IM_MAGMACUBE);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityPigZombie.class), SoundEvents.E_PARROT_IM_ZOMBIE_PIGMAN);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityPolarBear.class), SoundEvents.E_PARROT_IM_POLAR_BEAR);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityShulker.class), SoundEvents.E_PARROT_IM_SHULKER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntitySilverfish.class), SoundEvents.E_PARROT_IM_SILVERFISH);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntitySkeleton.class), SoundEvents.E_PARROT_IM_SKELETON);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntitySlime.class), SoundEvents.E_PARROT_IM_SLIME);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntitySpider.class), SoundEvents.E_PARROT_IM_SPIDER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityStray.class), SoundEvents.E_PARROT_IM_STRAY);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityVex.class), SoundEvents.E_PARROT_IM_VEX);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityVindicator.class), SoundEvents.E_PARROT_IM_VINDICATION_ILLAGER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityWitch.class), SoundEvents.E_PARROT_IM_WITCH);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityWither.class), SoundEvents.E_PARROT_IM_WITHER);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityWitherSkeleton.class), SoundEvents.E_PARROT_IM_WITHER_SKELETON);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityWolf.class), SoundEvents.E_PARROT_IM_WOLF);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityZombie.class), SoundEvents.E_PARROT_IM_ZOMBIE);
- IMITATION_SOUND_EVENTS.put(EntityList.REGISTRY.getIDForObject(EntityZombieVillager.class), SoundEvents.E_PARROT_IM_ZOMBIE_VILLAGER);
+ registerMimicSound(EntityBlaze.class, SoundEvents.E_PARROT_IM_BLAZE);
+ registerMimicSound(EntityCaveSpider.class, SoundEvents.E_PARROT_IM_SPIDER);
+ registerMimicSound(EntityCreeper.class, SoundEvents.E_PARROT_IM_CREEPER);
+ registerMimicSound(EntityElderGuardian.class, SoundEvents.E_PARROT_IM_ELDER_GUARDIAN);
+ registerMimicSound(EntityDragon.class, SoundEvents.E_PARROT_IM_ENDERDRAGON);
+ registerMimicSound(EntityEnderman.class, SoundEvents.E_PARROT_IM_ENDERMAN);
+ registerMimicSound(EntityEndermite.class, SoundEvents.E_PARROT_IM_ENDERMITE);
+ registerMimicSound(EntityEvoker.class, SoundEvents.E_PARROT_IM_EVOCATION_ILLAGER);
+ registerMimicSound(EntityGhast.class, SoundEvents.E_PARROT_IM_GHAST);
+ registerMimicSound(EntityHusk.class, SoundEvents.E_PARROT_IM_HUSK);
+ registerMimicSound(EntityIllusionIllager.class, SoundEvents.E_PARROT_IM_ILLUSION_ILLAGER);
+ registerMimicSound(EntityMagmaCube.class, SoundEvents.E_PARROT_IM_MAGMACUBE);
+ registerMimicSound(EntityPigZombie.class, SoundEvents.E_PARROT_IM_ZOMBIE_PIGMAN);
+ registerMimicSound(EntityPolarBear.class, SoundEvents.E_PARROT_IM_POLAR_BEAR);
+ registerMimicSound(EntityShulker.class, SoundEvents.E_PARROT_IM_SHULKER);
+ registerMimicSound(EntitySilverfish.class, SoundEvents.E_PARROT_IM_SILVERFISH);
+ registerMimicSound(EntitySkeleton.class, SoundEvents.E_PARROT_IM_SKELETON);
+ registerMimicSound(EntitySlime.class, SoundEvents.E_PARROT_IM_SLIME);
+ registerMimicSound(EntitySpider.class, SoundEvents.E_PARROT_IM_SPIDER);
+ registerMimicSound(EntityStray.class, SoundEvents.E_PARROT_IM_STRAY);
+ registerMimicSound(EntityVex.class, SoundEvents.E_PARROT_IM_VEX);
+ registerMimicSound(EntityVindicator.class, SoundEvents.E_PARROT_IM_VINDICATION_ILLAGER);
+ registerMimicSound(EntityWitch.class, SoundEvents.E_PARROT_IM_WITCH);
+ registerMimicSound(EntityWither.class, SoundEvents.E_PARROT_IM_WITHER);
+ registerMimicSound(EntityWitherSkeleton.class, SoundEvents.E_PARROT_IM_WITHER_SKELETON);
+ registerMimicSound(EntityWolf.class, SoundEvents.E_PARROT_IM_WOLF);
+ registerMimicSound(EntityZombie.class, SoundEvents.E_PARROT_IM_ZOMBIE);
+ registerMimicSound(EntityZombieVillager.class, SoundEvents.E_PARROT_IM_ZOMBIE_VILLAGER);
}
+
+ public static void registerMimicSound(Class<? extends Entity> cls, SoundEvent sound)
+ {
+ MIMIC_SOUNDS.put(cls, sound);
+ }
}