diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/easteregg/EntityEasterEggs.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/easteregg/EntityEasterEggs.kt
new file mode 100644
index 000000000..063621956
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/easteregg/EntityEasterEggs.kt
@@ -0,0 +1,33 @@
+/*
+ * Minosoft
+ * Copyright (C) 2020-2023 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.gui.rendering.entities.easteregg
+
+import de.bixilon.minosoft.data.entities.entities.Entity
+import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity
+import de.bixilon.minosoft.data.entities.entities.player.SkinParts
+
+object EntityEasterEggs {
+ private val FLIPPED = setOf("Dinnerbone", "Grumm")
+
+ fun Entity.isFlipped(): Boolean {
+ var name = this.customName?.message
+ if (name == null && this is PlayerEntity) {
+ name = additional.name
+ }
+ if (name == null) return false
+ if (name !in FLIPPED) return false
+ if (this is PlayerEntity) return SkinParts.CAPE in this.skinParts
+ return true
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt
index 3069b82a0..7a93cfa20 100644
--- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt
@@ -19,10 +19,12 @@ import de.bixilon.minosoft.data.entities.entities.Entity
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
import de.bixilon.minosoft.data.text.formatting.color.ColorUtil
import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer
+import de.bixilon.minosoft.gui.rendering.entities.easteregg.EntityEasterEggs.isFlipped
import de.bixilon.minosoft.gui.rendering.entities.feature.EntityRenderFeature
import de.bixilon.minosoft.gui.rendering.entities.feature.FeatureManager
import de.bixilon.minosoft.gui.rendering.entities.hitbox.HitboxFeature
import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.reset
+import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateDegreesAssign
import de.bixilon.minosoft.util.interpolate.Interpolator
abstract class EntityRenderer(
@@ -48,6 +50,10 @@ abstract class EntityRenderer(
val position = Vec3(entity.renderInfo.position - renderer.context.camera.offset.offset)
matrix.reset()
matrix.translateAssign(position)
+
+ if (entity.isFlipped()) {
+ matrix.rotateDegreesAssign(Vec3(180.0f, 0.0f, 0.0f)) // TODO: verify
+ }
}
open fun update(millis: Long) {