mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-30 08:18:00 +01:00
Fixed disguise orientation and door disguises. Fixes #259
This commit is contained in:
parent
c61f2ce834
commit
98f612cd13
3 changed files with 10 additions and 30 deletions
|
@ -9,7 +9,6 @@ import com.minelittlepony.unicopia.entity.behaviour.Disguise;
|
||||||
import com.minelittlepony.unicopia.entity.behaviour.EntityAppearance;
|
import com.minelittlepony.unicopia.entity.behaviour.EntityAppearance;
|
||||||
import com.minelittlepony.unicopia.mixin.MixinBlockEntity;
|
import com.minelittlepony.unicopia.mixin.MixinBlockEntity;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.OverlayTexture;
|
import net.minecraft.client.render.OverlayTexture;
|
||||||
|
@ -19,10 +18,7 @@ import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||||
import net.minecraft.client.render.entity.model.BipedEntityModel;
|
import net.minecraft.client.render.entity.model.BipedEntityModel;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.state.property.Properties;
|
|
||||||
import net.minecraft.util.math.Direction;
|
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.math.RotationAxis;
|
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
class EntityDisguiseRenderer {
|
class EntityDisguiseRenderer {
|
||||||
|
@ -90,15 +86,7 @@ class EntityDisguiseRenderer {
|
||||||
((MixinBlockEntity)blockEntity).setPos(e.getBlockPos());
|
((MixinBlockEntity)blockEntity).setPos(e.getBlockPos());
|
||||||
blockEntity.setWorld(e.getWorld());
|
blockEntity.setWorld(e.getWorld());
|
||||||
matrices.push();
|
matrices.push();
|
||||||
|
|
||||||
BlockState state = blockEntity.getCachedState();
|
|
||||||
Direction direction = state.contains(Properties.HORIZONTAL_FACING) ? state.get(Properties.HORIZONTAL_FACING) : Direction.UP;
|
|
||||||
|
|
||||||
matrices.translate(x, y, z);
|
matrices.translate(x, y, z);
|
||||||
|
|
||||||
matrices.multiply(direction.getRotationQuaternion());
|
|
||||||
matrices.multiply(RotationAxis.NEGATIVE_X.rotationDegrees(90));
|
|
||||||
|
|
||||||
matrices.translate(-0.5, 0, -0.5);
|
matrices.translate(-0.5, 0, -0.5);
|
||||||
|
|
||||||
r.render(blockEntity, 1, matrices, vertexConsumers, light, OverlayTexture.DEFAULT_UV);
|
r.render(blockEntity, 1, matrices, vertexConsumers, light, OverlayTexture.DEFAULT_UV);
|
||||||
|
|
|
@ -34,7 +34,6 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.projectile.LlamaSpitEntity;
|
import net.minecraft.entity.projectile.LlamaSpitEntity;
|
||||||
import net.minecraft.entity.projectile.thrown.SnowballEntity;
|
import net.minecraft.entity.projectile.thrown.SnowballEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
|
|
||||||
|
@ -138,12 +137,6 @@ public class EntityBehaviour<T extends Entity> {
|
||||||
double y = positionOffset.y + Math.floor(from.getY());
|
double y = positionOffset.y + Math.floor(from.getY());
|
||||||
double z = positionOffset.z + Math.floor(from.getZ()) + 0.5;
|
double z = positionOffset.z + Math.floor(from.getZ()) + 0.5;
|
||||||
|
|
||||||
BlockPos pos = BlockPos.ofFloored(x, y, z);
|
|
||||||
|
|
||||||
if (!from.getWorld().isAir(pos) && !from.getWorld().isWater(pos)) {
|
|
||||||
y++;
|
|
||||||
}
|
|
||||||
|
|
||||||
to.prevX = x;
|
to.prevX = x;
|
||||||
to.prevY = y;
|
to.prevY = y;
|
||||||
to.prevZ = z;
|
to.prevZ = z;
|
||||||
|
|
|
@ -25,7 +25,6 @@ import net.minecraft.entity.EntityDimensions;
|
||||||
import net.minecraft.entity.FallingBlockEntity;
|
import net.minecraft.entity.FallingBlockEntity;
|
||||||
import net.minecraft.entity.damage.DamageSource;
|
import net.minecraft.entity.damage.DamageSource;
|
||||||
import net.minecraft.state.property.Properties;
|
import net.minecraft.state.property.Properties;
|
||||||
import net.minecraft.registry.tag.BlockTags;
|
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
@ -74,7 +73,11 @@ public class FallingBlockBehaviour extends EntityBehaviour<FallingBlockEntity> {
|
||||||
BlockState state = entity.getBlockState();
|
BlockState state = entity.getBlockState();
|
||||||
Block block = state.getBlock();
|
Block block = state.getBlock();
|
||||||
|
|
||||||
if (state.isIn(BlockTags.DOORS) && block instanceof DoorBlock) {
|
if (block instanceof BlockEntityProvider bep) {
|
||||||
|
context.addBlockEntity(bep.createBlockEntity(entity.getBlockPos(), state));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (block instanceof DoorBlock) {
|
||||||
BlockState lowerState = state.with(DoorBlock.HALF, DoubleBlockHalf.LOWER);
|
BlockState lowerState = state.with(DoorBlock.HALF, DoubleBlockHalf.LOWER);
|
||||||
BlockState upperState = state.with(DoorBlock.HALF, DoubleBlockHalf.UPPER);
|
BlockState upperState = state.with(DoorBlock.HALF, DoubleBlockHalf.UPPER);
|
||||||
|
|
||||||
|
@ -83,10 +86,6 @@ public class FallingBlockBehaviour extends EntityBehaviour<FallingBlockEntity> {
|
||||||
return configure(MixinFallingBlockEntity.createInstance(entity.getWorld(), entity.getX(), entity.getY() + 1, entity.getZ(), lowerState), block);
|
return configure(MixinFallingBlockEntity.createInstance(entity.getWorld(), entity.getX(), entity.getY() + 1, entity.getZ(), lowerState), block);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (block instanceof BlockEntityProvider bep) {
|
|
||||||
context.addBlockEntity(bep.createBlockEntity(entity.getBlockPos(), state));
|
|
||||||
}
|
|
||||||
|
|
||||||
return configure(entity, block);
|
return configure(entity, block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,15 +99,10 @@ public class FallingBlockBehaviour extends EntityBehaviour<FallingBlockEntity> {
|
||||||
if (state.get(Properties.WATERLOGGED) != logged) {
|
if (state.get(Properties.WATERLOGGED) != logged) {
|
||||||
entity = MixinFallingBlockEntity.createInstance(entity.getWorld(), entity.getX(), entity.getY(), entity.getZ(), state.with(Properties.WATERLOGGED, logged));
|
entity = MixinFallingBlockEntity.createInstance(entity.getWorld(), entity.getX(), entity.getY(), entity.getZ(), state.with(Properties.WATERLOGGED, logged));
|
||||||
spell.getDisguise().setAppearance(entity);
|
spell.getDisguise().setAppearance(entity);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityAppearance disguise = spell.getDisguise();
|
EntityAppearance disguise = spell.getDisguise();
|
||||||
List<Entity> attachments = disguise.getAttachments();
|
|
||||||
if (attachments.size() > 0) {
|
|
||||||
copyBaseAttributes(source.asEntity(), attachments.get(0), UP);
|
|
||||||
}
|
|
||||||
|
|
||||||
BlockEntity be = disguise.getBlockEntity();
|
BlockEntity be = disguise.getBlockEntity();
|
||||||
|
|
||||||
|
@ -122,5 +116,10 @@ public class FallingBlockBehaviour extends EntityBehaviour<FallingBlockEntity> {
|
||||||
ceb.tick();
|
ceb.tick();
|
||||||
be.setWorld(null);
|
be.setWorld(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<Entity> attachments = disguise.getAttachments();
|
||||||
|
if (attachments.size() > 0) {
|
||||||
|
copyBaseAttributes(source.asEntity(), attachments.get(0), UP);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue