Exosuit model test or something
???
This commit is contained in:
parent
6ac423f256
commit
16bd9cd20a
@ -26,6 +26,7 @@ import ru.dbotthepony.mc.otm.client.AndroidMenuKeyMapping;
|
|||||||
import ru.dbotthepony.mc.otm.client.ClientEventHandlerKt;
|
import ru.dbotthepony.mc.otm.client.ClientEventHandlerKt;
|
||||||
import ru.dbotthepony.mc.otm.client.ClientTickHandlerKt;
|
import ru.dbotthepony.mc.otm.client.ClientTickHandlerKt;
|
||||||
import ru.dbotthepony.mc.otm.client.MatteryGUI;
|
import ru.dbotthepony.mc.otm.client.MatteryGUI;
|
||||||
|
import ru.dbotthepony.mc.otm.client.model.ExosuitModel;
|
||||||
import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel;
|
import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel;
|
||||||
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel;
|
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel;
|
||||||
import ru.dbotthepony.mc.otm.client.render.ShockwaveRenderer;
|
import ru.dbotthepony.mc.otm.client.render.ShockwaveRenderer;
|
||||||
@ -199,6 +200,8 @@ public final class OverdriveThatMatters {
|
|||||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderGuiEvent);
|
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderGuiEvent);
|
||||||
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderLevel);
|
EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderLevel);
|
||||||
|
|
||||||
|
EVENT_BUS.addListener(EventPriority.NORMAL, ExosuitModel::onPlayerRendered);
|
||||||
|
|
||||||
event.enqueueWork(GlobalEventHandlerKt::recordClientThread);
|
event.enqueueWork(GlobalEventHandlerKt::recordClientThread);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,123 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.client.model;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
import net.minecraft.client.model.geom.PartPose;
|
||||||
|
import net.minecraft.client.model.geom.builders.CubeDeformation;
|
||||||
|
import net.minecraft.client.model.geom.builders.CubeListBuilder;
|
||||||
|
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
||||||
|
import net.minecraft.client.model.geom.builders.MeshDefinition;
|
||||||
|
import net.minecraft.client.model.geom.builders.PartDefinition;
|
||||||
|
import net.minecraft.client.player.AbstractClientPlayer;
|
||||||
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||||
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||||
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
|
||||||
|
|
||||||
|
public final class ExosuitModel {
|
||||||
|
private ExosuitModel() {}
|
||||||
|
|
||||||
|
public static final HumanoidModel<AbstractClientPlayer> modelNormal;
|
||||||
|
public static final HumanoidModel<AbstractClientPlayer> modelGlow;
|
||||||
|
|
||||||
|
public static final ResourceLocation texture = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/exosuit.png");
|
||||||
|
|
||||||
|
static {
|
||||||
|
MeshDefinition meshdefinition = new MeshDefinition();
|
||||||
|
PartDefinition partdefinition = meshdefinition.getRoot();
|
||||||
|
|
||||||
|
partdefinition.addOrReplaceChild("head", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F));
|
||||||
|
|
||||||
|
partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(20, 0).addBox(-3.0F, -0.1F, 3.5F, 6.0F, 8.0F, 3.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(0, 14).addBox(-3.0F, 8.6F, 3.5F, 6.0F, 3.0F, 3.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(0, 0).addBox(-3.5F, 0.5F, 1.5F, 7.0F, 11.0F, 3.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(18, 12).addBox(-4.0F, 9.0F, 2.5F, 1.0F, 2.0F, 3.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(18, 12).addBox(3.0F, 9.0F, 2.5F, 1.0F, 2.0F, 3.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(0, 20).addBox(-2.5F, 7.0F, 4.0F, 5.0F, 2.0F, 2.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(38, 0).addBox(2.0F, 1.0F, 3.5F, 2.0F, 6.0F, 2.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(15, 17).addBox(-4.0F, 1.0F, 2.5F, 2.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F));
|
||||||
|
|
||||||
|
partdefinition.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.offset(-5.0F, 2.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.offset(5.0F, 2.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.offset(-1.9F, 12.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.offset(1.9F, 12.0F, 0.0F));
|
||||||
|
|
||||||
|
var def = LayerDefinition.create(meshdefinition, 64, 64);
|
||||||
|
modelNormal = new HumanoidModel<>(def.bakeRoot());
|
||||||
|
|
||||||
|
modelNormal.head.visible = false;
|
||||||
|
modelNormal.hat.visible = false;
|
||||||
|
modelNormal.rightArm.visible = false;
|
||||||
|
modelNormal.leftArm.visible = false;
|
||||||
|
modelNormal.leftLeg.visible = false;
|
||||||
|
modelNormal.rightLeg.visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
MeshDefinition meshdefinition = new MeshDefinition();
|
||||||
|
PartDefinition partdefinition = meshdefinition.getRoot();
|
||||||
|
|
||||||
|
partdefinition.addOrReplaceChild("head", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F));
|
||||||
|
|
||||||
|
partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(20, 0).addBox(-3.0F, -0.1F, 3.5F, 6.0F, 8.0F, 3.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(29, 4).addBox(-2.0F, 0.9F, 6.5F, 4.0F, 1.0F, 0.0F, new CubeDeformation(0.0F))
|
||||||
|
.texOffs(29, 4).addBox(-2.0F, 2.9F, 6.5F, 4.0F, 1.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F));
|
||||||
|
|
||||||
|
partdefinition.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.offset(-5.0F, 2.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.offset(5.0F, 2.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.offset(-1.9F, 12.0F, 0.0F));
|
||||||
|
partdefinition.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.offset(1.9F, 12.0F, 0.0F));
|
||||||
|
|
||||||
|
var def = LayerDefinition.create(meshdefinition, 64, 64);
|
||||||
|
modelGlow = new HumanoidModel<>(def.bakeRoot());
|
||||||
|
|
||||||
|
modelGlow.head.visible = false;
|
||||||
|
modelGlow.hat.visible = false;
|
||||||
|
modelGlow.rightArm.visible = false;
|
||||||
|
modelGlow.leftArm.visible = false;
|
||||||
|
modelGlow.leftLeg.visible = false;
|
||||||
|
modelGlow.rightLeg.visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("OptionalGetWithoutIsPresent")
|
||||||
|
public static void onPlayerRendered(final RenderPlayerEvent.Post event) {
|
||||||
|
var cap = event.getEntity().getCapability(MatteryCapability.MATTERY_PLAYER);
|
||||||
|
|
||||||
|
if (!cap.isPresent()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cap.resolve().get().getHasExoSuit()) {
|
||||||
|
var model = event.getRenderer().getModel();
|
||||||
|
model.copyPropertiesTo(modelNormal);
|
||||||
|
model.copyPropertiesTo(modelGlow);
|
||||||
|
|
||||||
|
int overlayCoords = LivingEntityRenderer.getOverlayCoords(event.getEntity(), 0f);
|
||||||
|
|
||||||
|
var rendertype = RenderType.entityCutoutNoCull(texture);
|
||||||
|
|
||||||
|
modelNormal.renderToBuffer(
|
||||||
|
event.getPoseStack(),
|
||||||
|
event.getMultiBufferSource().getBuffer(rendertype),
|
||||||
|
event.getPackedLight(),
|
||||||
|
overlayCoords,
|
||||||
|
// rgba
|
||||||
|
1f, 1f, 1f, 1f
|
||||||
|
);
|
||||||
|
|
||||||
|
modelGlow.renderToBuffer(
|
||||||
|
event.getPoseStack(),
|
||||||
|
event.getMultiBufferSource().getBuffer(rendertype),
|
||||||
|
event.getPackedLight(),
|
||||||
|
overlayCoords,
|
||||||
|
// rgba
|
||||||
|
1f, 1f, 1f, 1f
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -9,9 +9,11 @@ import net.minecraftforge.client.event.EntityRenderersEvent;
|
|||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||||
import ru.dbotthepony.mc.otm.registry.MNames;
|
import ru.dbotthepony.mc.otm.registry.MNames;
|
||||||
|
|
||||||
public class GravitationStabilizerModel {
|
public final class GravitationStabilizerModel {
|
||||||
public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(OverdriveThatMatters.loc(MNames.PORTABLE_GRAVITATION_STABILIZER), "main");
|
public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(OverdriveThatMatters.loc(MNames.PORTABLE_GRAVITATION_STABILIZER), "main");
|
||||||
|
|
||||||
|
private GravitationStabilizerModel() {}
|
||||||
|
|
||||||
private static HumanoidModel<?> model;
|
private static HumanoidModel<?> model;
|
||||||
private static LayerDefinition def;
|
private static LayerDefinition def;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user