diff --git a/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelLever.java b/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelLever.java
index b5aef22a4..1f38d5885 100644
--- a/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelLever.java
+++ b/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelLever.java
@@ -96,22 +96,22 @@ public class BlockModelLever<T extends BlockLogic> extends BlockModelStandard<T>
         for (int i2 = 0; i2 < 8; i2++) {
             if (powered) {
                 renderVecs[i2].z -= 0.0625D;
-                renderVecs[i2].rotateX(0.6981317F);
+                renderVecs[i2].rotateX(-0.6981317F);
             } else {
                 renderVecs[i2].z += 0.0625D;
-                renderVecs[i2].rotateX(-0.6981317F);
+                renderVecs[i2].rotateX(0.6981317F);
             }
             if (rotation == 6 || rotation == 8) {
-                renderVecs[i2].rotateY(MathHelper.PI / 2f);
+                renderVecs[i2].rotateY(-MathHelper.PI / 2f);
             }
             if (rotation < 5) {
                 renderVecs[i2].y -= 0.375D;
-                renderVecs[i2].rotateX(MathHelper.PI / 2f);
+                renderVecs[i2].rotateX(-MathHelper.PI / 2f);
                 if (rotation == 4) {
                     renderVecs[i2].rotateY(0.0F);
                 }
                 if (rotation == 3) {
-                    renderVecs[i2].rotateY(MathHelper.PI);
+                    renderVecs[i2].rotateY(-MathHelper.PI);
                 }
                 if (rotation == 2) {
                     renderVecs[i2].rotateY(MathHelper.PI / 2f);
diff --git a/game/client/src/main/java/net/minecraft/client/render/particle/ParticleRedstoneDust.java b/game/client/src/main/java/net/minecraft/client/render/particle/ParticleRedstoneDust.java
index f2f5977c3..0760ffecd 100644
--- a/game/client/src/main/java/net/minecraft/client/render/particle/ParticleRedstoneDust.java
+++ b/game/client/src/main/java/net/minecraft/client/render/particle/ParticleRedstoneDust.java
@@ -77,8 +77,8 @@ public class ParticleRedstoneDust extends Particle {
             MathHelper.lerp(this.yo, this.y, partialTick),
             MathHelper.lerp(this.zo, this.z, partialTick),
             this.size * 0.1f,
-            this.tex.getIconUMin() + this.tex.getIconUSize(), this.tex.getIconVMin(),
-            this.tex.getIconUSize() , this.tex.getIconVSize());
+            this.tex.getIconUMin(), this.tex.getIconVMin(),
+            this.tex.getIconUSize(), this.tex.getIconVSize());
     }
 
     @Override
diff --git a/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java b/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java
index 579cc22b0..d42de7173 100644
--- a/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java
+++ b/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java
@@ -2,36 +2,42 @@ package net.minecraft.core.entity.animal;
 
 import com.mojang.nbt.tags.CompoundTag;
 import net.minecraft.core.WeightedRandomLootObject;
+import net.minecraft.core.block.Blocks;
 import net.minecraft.core.entity.AgedMob;
+import net.minecraft.core.entity.EntityItem;
 import net.minecraft.core.entity.MobAge;
+import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.item.tag.ItemTags;
+import net.minecraft.core.item.tool.ItemToolShears;
+import net.minecraft.core.util.helper.DamageType;
 import net.minecraft.core.world.World;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 public class MobChicken
     extends MobAnimal
-    implements AgedMob
-{
+    implements AgedMob {
     public float flap;
     public float flapSpeed;
     public float oFlapSpeed;
     public float oFlap;
     public float flapping;
     public int eggTimer;
+    public int featherTimer;
     private final @NotNull MobAge age;
 
-    public MobChicken(World world)
-    {
+    public MobChicken(final World world) {
         super(world);
-        flap = 0.0F;
-        flapSpeed = 0.0F;
-        flapping = 1.0F;
-        setTextureIdentifier("minecraft", "chicken");
-        setSize(0.4F, 0.8F);
-        eggTimer = random.nextInt(6000) + 6000;
-        mobDrops.add(new WeightedRandomLootObject(Items.FEATHER_CHICKEN.getDefaultStack(), 0, 2));
+        this.flap = 0.0F;
+        this.flapSpeed = 0.0F;
+        this.flapping = 1.0F;
+        this.setTextureIdentifier("minecraft", "chicken");
+        this.setSize(0.4F, 0.8F);
+        this.eggTimer = this.random.nextInt(6000) + 6000;
+        this.featherTimer = this.random.nextInt(3000) + 3000;
+        this.mobDrops.add(new WeightedRandomLootObject(Items.FEATHER_CHICKEN.getDefaultStack(), 0, 2));
         this.age = MobAge.newRandom(this, MobAge.YEAR_LENGTH_DAYS * 3, 14, (int) (MobAge.YEAR_LENGTH_DAYS * 2.5f));
     }
 
@@ -41,43 +47,69 @@ public class MobChicken
     }
 
     @Override
-    public int getMaxHealth(){
+    public int getMaxHealth() {
         return 4;
     }
 
     @Override
-	public void onLivingUpdate()
-    {
+    public void onLivingUpdate() {
         super.onLivingUpdate();
-        oFlap = flap;
-        oFlapSpeed = flapSpeed;
-        flapSpeed += (onGround ? -1 : 4) * 0.3D;
-        if(flapSpeed < 0.0F)
-        {
-            flapSpeed = 0.0F;
+        this.oFlap = this.flap;
+        this.oFlapSpeed = this.flapSpeed;
+        this.flapSpeed += (this.onGround ? -1 : 4) * 0.3D;
+        if (this.flapSpeed < 0.0F) {
+            this.flapSpeed = 0.0F;
         }
-        if(flapSpeed > 1.0F)
-        {
-            flapSpeed = 1.0F;
+        if (this.flapSpeed > 1.0F) {
+            this.flapSpeed = 1.0F;
         }
-        if(!onGround && flapping < 1.0F)
-        {
-            flapping = 1.0F;
+        if (!this.onGround && this.flapping < 1.0F) {
+            this.flapping = 1.0F;
         }
-        flapping *= 0.9D;
-        if(!onGround && yd < 0.0D)
-        {
-            yd *= 0.6D;
+        this.flapping *= 0.9D;
+        if (!this.onGround && this.yd < 0.0D) {
+            this.yd *= 0.6D;
         }
-        flap += flapping * 2.0F;
-        if(!world.isClientSide && --eggTimer <= 0)
-        {
-            world.playSoundAtEntity(null, this, "mob.chickenplop", 1.0F, (random.nextFloat() - random.nextFloat()) * 0.2F + 1.0F);
-            dropItem(Items.EGG_CHICKEN.id, 1);
-            eggTimer = random.nextInt(6000) + 6000;
+        this.flap += this.flapping * 2.0F;
+        if (!this.world.isClientSide && --this.eggTimer <= 0) {
+            this.world.playSoundAtEntity(null, this, "mob.chickenplop", 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
+            this.dropItem(Items.EGG_CHICKEN.id, 1);
+            this.eggTimer = this.random.nextInt(6000) + 6000;
+        }
+        if (!this.world.isClientSide && --this.featherTimer <= 0) {
+            this.dropItem(Items.FEATHER_CHICKEN.id, 1);
+            this.featherTimer = this.random.nextInt(3000) + 3000;
+        }
+
+        this.getMobAge().tick(this.world);
+    }
+
+    @Override
+    public boolean interact(@NotNull final Player player) {
+        if (super.interact(player)) {
+            return true;
+        }
+
+        final @Nullable ItemStack heldItem = player.getHeldItem();
+        if (heldItem != null && heldItem.getItem() instanceof ItemToolShears && this.getHealth() > 0) {
+            if (!this.world.isClientSide) {
+                final int count = 1 + this.random.nextInt(2);
+                for (int j = 0; j < count; j++) {
+                    final @NotNull EntityItem feather = this.dropItem(new ItemStack(Items.FEATHER_CHICKEN, 1), 1.0F);
+                    feather.yd += this.random.nextFloat() * 0.05F;
+                    feather.xd += (this.random.nextFloat() - this.random.nextFloat()) * 0.1F;
+                    feather.zd += (this.random.nextFloat() - this.random.nextFloat()) * 0.1F;
+                }
+                heldItem.damageItem(1, player);
+                if (heldItem.stackSize <= 0) {
+                    player.destroyCurrentEquippedItem();
+                }
+                this.hurt(player, 1, DamageType.COMBAT);
+                return true;
+            }
         }
 
-        this.getMobAge().tick(world);
+        return false;
     }
 
     @Override
@@ -95,31 +127,26 @@ public class MobChicken
     }
 
     @Override
-	protected void causeFallDamage(float distance)
-    {
+    protected void causeFallDamage(final float distance) {
     }
 
     @Override
-    public String getLivingSound()
-    {
+    public String getLivingSound() {
         return "mob.chicken";
     }
 
     @Override
-	protected String getHurtSound()
-    {
+    protected String getHurtSound() {
         return "mob.chickenhurt";
     }
 
     @Override
-	protected String getDeathSound()
-    {
+    protected String getDeathSound() {
         return "mob.chickenhurt";
     }
 
     @Override
-    public boolean isFavouriteItem(ItemStack itemStack)
-    {
+    public boolean isFavouriteItem(final ItemStack itemStack) {
         return itemStack != null && itemStack.getItem().hasTag(ItemTags.CHICKENS_FAVOURITE_ITEM);
     }
 }
