some tomfoolery with rendering entities
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
|
||||
package studio.halbear.hem.entity;
|
||||
|
||||
import studio.halbear.hem.procedures.TestPlaneRightClickedOnEntityProcedure;
|
||||
import studio.halbear.hem.procedures.TestPlaneOnInitialEntitySpawnProcedure;
|
||||
import studio.halbear.hem.procedures.TestPlaneOnEntityTickUpdateProcedure;
|
||||
import studio.halbear.hem.entity.renderer.TestPlaneRenderer;
|
||||
import studio.halbear.hem.HemModElements;
|
||||
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
import net.minecraftforge.fml.network.FMLPlayMessages;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.IServerWorld;
|
||||
import net.minecraft.world.DifficultyInstance;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.network.IPacket;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.item.SpawnEggItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifierMap;
|
||||
import net.minecraft.entity.SpawnReason;
|
||||
import net.minecraft.entity.MobEntity;
|
||||
import net.minecraft.entity.ILivingEntityData;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.EntityClassification;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.CreatureEntity;
|
||||
import net.minecraft.entity.CreatureAttribute;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.AbstractMap;
|
||||
|
||||
@HemModElements.ModElement.Tag
|
||||
public class TestPlaneEntity extends HemModElements.ModElement {
|
||||
public static EntityType entity = (EntityType.Builder.<CustomEntity>create(CustomEntity::new, EntityClassification.MONSTER)
|
||||
.setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CustomEntity::new).size(1f, 1.8f))
|
||||
.build("test_plane").setRegistryName("test_plane");
|
||||
|
||||
public TestPlaneEntity(HemModElements instance) {
|
||||
super(instance, 311);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().register(new TestPlaneRenderer.ModelRegisterHandler());
|
||||
FMLJavaModLoadingContext.get().getModEventBus().register(new EntityAttributesRegisterHandler());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initElements() {
|
||||
elements.entities.add(() -> entity);
|
||||
elements.items
|
||||
.add(() -> new SpawnEggItem(entity, -1, -1, new Item.Properties().group(ItemGroup.MISC)).setRegistryName("test_plane_spawn_egg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(FMLCommonSetupEvent event) {
|
||||
}
|
||||
|
||||
private static class EntityAttributesRegisterHandler {
|
||||
@SubscribeEvent
|
||||
public void onEntityAttributeCreation(EntityAttributeCreationEvent event) {
|
||||
AttributeModifierMap.MutableAttribute ammma = MobEntity.func_233666_p_();
|
||||
ammma = ammma.createMutableAttribute(Attributes.MOVEMENT_SPEED, 1);
|
||||
ammma = ammma.createMutableAttribute(Attributes.MAX_HEALTH, 10);
|
||||
ammma = ammma.createMutableAttribute(Attributes.ARMOR, 0);
|
||||
ammma = ammma.createMutableAttribute(Attributes.ATTACK_DAMAGE, 3);
|
||||
ammma = ammma.createMutableAttribute(Attributes.FOLLOW_RANGE, 16);
|
||||
event.put(entity, ammma.create());
|
||||
}
|
||||
}
|
||||
|
||||
public static class CustomEntity extends CreatureEntity {
|
||||
public CustomEntity(FMLPlayMessages.SpawnEntity packet, World world) {
|
||||
this(entity, world);
|
||||
}
|
||||
|
||||
public CustomEntity(EntityType<CustomEntity> type, World world) {
|
||||
super(type, world);
|
||||
experienceValue = 0;
|
||||
setNoAI(false);
|
||||
enablePersistence();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPacket<?> createSpawnPacket() {
|
||||
return NetworkHooks.getEntitySpawningPacket(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public CreatureAttribute getCreatureAttribute() {
|
||||
return CreatureAttribute.UNDEFINED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDespawn(double distanceToClosestPlayer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getMountedYOffset() {
|
||||
return super.getMountedYOffset() + -0.6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.minecraft.util.SoundEvent getHurtSound(DamageSource ds) {
|
||||
return (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.hurt"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.minecraft.util.SoundEvent getDeathSound() {
|
||||
return (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.death"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ILivingEntityData onInitialSpawn(IServerWorld world, DifficultyInstance difficulty, SpawnReason reason,
|
||||
@Nullable ILivingEntityData livingdata, @Nullable CompoundNBT tag) {
|
||||
ILivingEntityData retval = super.onInitialSpawn(world, difficulty, reason, livingdata, tag);
|
||||
double x = this.getPosX();
|
||||
double y = this.getPosY();
|
||||
double z = this.getPosZ();
|
||||
Entity entity = this;
|
||||
|
||||
TestPlaneOnInitialEntitySpawnProcedure.executeProcedure(Stream.of(new AbstractMap.SimpleEntry<>("entity", entity)).collect(HashMap::new,
|
||||
(_m, _e) -> _m.put(_e.getKey(), _e.getValue()), Map::putAll));
|
||||
return retval;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType func_230254_b_(PlayerEntity sourceentity, Hand hand) {
|
||||
ItemStack itemstack = sourceentity.getHeldItem(hand);
|
||||
ActionResultType retval = ActionResultType.func_233537_a_(this.world.isRemote());
|
||||
super.func_230254_b_(sourceentity, hand);
|
||||
sourceentity.startRiding(this);
|
||||
double x = this.getPosX();
|
||||
double y = this.getPosY();
|
||||
double z = this.getPosZ();
|
||||
Entity entity = this;
|
||||
|
||||
TestPlaneRightClickedOnEntityProcedure.executeProcedure(Stream.of(new AbstractMap.SimpleEntry<>("sourceentity", sourceentity))
|
||||
.collect(HashMap::new, (_m, _e) -> _m.put(_e.getKey(), _e.getValue()), Map::putAll));
|
||||
return retval;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void baseTick() {
|
||||
super.baseTick();
|
||||
double x = this.getPosX();
|
||||
double y = this.getPosY();
|
||||
double z = this.getPosZ();
|
||||
Entity entity = this;
|
||||
|
||||
TestPlaneOnEntityTickUpdateProcedure.executeProcedure(Stream
|
||||
.of(new AbstractMap.SimpleEntry<>("world", world), new AbstractMap.SimpleEntry<>("x", x), new AbstractMap.SimpleEntry<>("y", y),
|
||||
new AbstractMap.SimpleEntry<>("z", z), new AbstractMap.SimpleEntry<>("entity", entity))
|
||||
.collect(HashMap::new, (_m, _e) -> _m.put(_e.getKey(), _e.getValue()), Map::putAll));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,359 @@
|
||||
|
||||
package studio.halbear.hem.entity.renderer;
|
||||
|
||||
import studio.halbear.hem.entity.TestPlaneEntity;
|
||||
|
||||
import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.client.renderer.model.ModelRenderer;
|
||||
import net.minecraft.client.renderer.entity.model.EntityModel;
|
||||
import net.minecraft.client.renderer.entity.MobRenderer;
|
||||
|
||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class TestPlaneRenderer {
|
||||
public static class ModelRegisterHandler {
|
||||
@SubscribeEvent
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void registerModels(ModelRegistryEvent event) {
|
||||
RenderingRegistry.registerEntityRenderingHandler(TestPlaneEntity.entity, renderManager -> {
|
||||
return new MobRenderer(renderManager, new ModelUpdatedbiplane(), 0.5f) {
|
||||
|
||||
@Override
|
||||
public ResourceLocation getEntityTexture(Entity entity) {
|
||||
return new ResourceLocation("hem:textures/entities/biplaneupdated.png");
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Made with Blockbench 5.1.4
|
||||
// Exported for Minecraft version 1.15 - 1.16 with MCP mappings
|
||||
// Paste this class into your mod and generate all required imports
|
||||
public static class ModelUpdatedbiplane extends EntityModel<Entity> {
|
||||
private final ModelRenderer Body;
|
||||
private final ModelRenderer cube_r1;
|
||||
private final ModelRenderer cube_r2;
|
||||
private final ModelRenderer cube_r3;
|
||||
private final ModelRenderer cube_r4;
|
||||
private final ModelRenderer cube_r5;
|
||||
private final ModelRenderer cube_r6;
|
||||
private final ModelRenderer cube_r7;
|
||||
private final ModelRenderer cube_r8;
|
||||
private final ModelRenderer cube_r9;
|
||||
private final ModelRenderer cube_r10;
|
||||
private final ModelRenderer cube_r11;
|
||||
private final ModelRenderer cube_r12;
|
||||
private final ModelRenderer cube_r13;
|
||||
private final ModelRenderer cube_r14;
|
||||
private final ModelRenderer cube_r15;
|
||||
private final ModelRenderer cube_r16;
|
||||
private final ModelRenderer cube_r17;
|
||||
private final ModelRenderer cube_r18;
|
||||
private final ModelRenderer cube_r19;
|
||||
private final ModelRenderer cube_r20;
|
||||
private final ModelRenderer cube_r21;
|
||||
private final ModelRenderer cube_r22;
|
||||
private final ModelRenderer cube_r23;
|
||||
private final ModelRenderer cube_r24;
|
||||
private final ModelRenderer cube_r25;
|
||||
private final ModelRenderer cube_r26;
|
||||
private final ModelRenderer cube_r27;
|
||||
private final ModelRenderer cube_r28;
|
||||
private final ModelRenderer cube_r29;
|
||||
private final ModelRenderer cube_r30;
|
||||
private final ModelRenderer cube_r31;
|
||||
private final ModelRenderer cube_r32;
|
||||
private final ModelRenderer cube_r33;
|
||||
private final ModelRenderer cube_r34;
|
||||
private final ModelRenderer cube_r35;
|
||||
private final ModelRenderer cube_r36;
|
||||
private final ModelRenderer cube_r37;
|
||||
private final ModelRenderer cube_r38;
|
||||
private final ModelRenderer cube_r39;
|
||||
private final ModelRenderer cube_r40;
|
||||
private final ModelRenderer cube_r41;
|
||||
private final ModelRenderer propeller;
|
||||
private final ModelRenderer cube_r42;
|
||||
|
||||
public ModelUpdatedbiplane() {
|
||||
textureWidth = 512;
|
||||
textureHeight = 512;
|
||||
Body = new ModelRenderer(this);
|
||||
Body.setRotationPoint(0.0F, 3.0F, -9.0F);
|
||||
Body.setTextureOffset(144, 0).addBox(-5.0F, 7.25F, -12.0F, 10.0F, 2.0F, 32.0F, 0.0F, false);
|
||||
Body.setTextureOffset(96, 43).addBox(-2.0F, -6.0F, 34.0F, 4.0F, 2.0F, 10.0F, 0.0F, false);
|
||||
Body.setTextureOffset(0, 92).addBox(-2.0F, -6.0F, 50.0F, 4.0F, 10.0F, 6.0F, 0.0F, false);
|
||||
Body.setTextureOffset(0, 92).addBox(-26.0F, -18.0F, -7.0F, 52.0F, 2.0F, 24.0F, 0.0F, false);
|
||||
Body.setTextureOffset(0, 92).addBox(-26.0F, 5.0F, -2.0F, 52.0F, 2.0F, 24.0F, 0.0F, false);
|
||||
Body.setTextureOffset(292, 89).addBox(11.0F, 13.0F, -4.0F, 2.0F, 8.0F, 8.0F, 0.0F, false);
|
||||
Body.setTextureOffset(9, 207).addBox(9.0F, 16.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, false);
|
||||
Body.setTextureOffset(292, 89).addBox(-13.0F, 13.0F, -4.0F, 2.0F, 8.0F, 8.0F, 0.0F, true);
|
||||
Body.setTextureOffset(9, 207).addBox(-11.0F, 16.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, true);
|
||||
cube_r1 = new ModelRenderer(this);
|
||||
cube_r1.setRotationPoint(-9.0F, 18.0F, 0.0F);
|
||||
Body.addChild(cube_r1);
|
||||
setRotationAngle(cube_r1, 0.0F, 0.0F, 0.4363F);
|
||||
cube_r1.setTextureOffset(10, 205).addBox(-2.0F, -12.0F, -1.0F, 2.0F, 12.0F, 2.0F, 0.0F, true);
|
||||
cube_r2 = new ModelRenderer(this);
|
||||
cube_r2.setRotationPoint(9.0F, 18.0F, 0.0F);
|
||||
Body.addChild(cube_r2);
|
||||
setRotationAngle(cube_r2, 0.0F, 0.0F, -0.4363F);
|
||||
cube_r2.setTextureOffset(10, 205).addBox(0.0F, -12.0F, -1.0F, 2.0F, 12.0F, 2.0F, 0.0F, false);
|
||||
cube_r3 = new ModelRenderer(this);
|
||||
cube_r3.setRotationPoint(-42.0F, 4.0F, 7.0F);
|
||||
Body.addChild(cube_r3);
|
||||
setRotationAngle(cube_r3, 0.1745F, 0.1745F, 0.0F);
|
||||
cube_r3.setTextureOffset(52, 21).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
|
||||
cube_r4 = new ModelRenderer(this);
|
||||
cube_r4.setRotationPoint(-39.0F, 4.0F, 26.0F);
|
||||
Body.addChild(cube_r4);
|
||||
setRotationAngle(cube_r4, 0.1745F, 0.1745F, 0.0F);
|
||||
cube_r4.setTextureOffset(100, 203).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
|
||||
cube_r5 = new ModelRenderer(this);
|
||||
cube_r5.setRotationPoint(39.0F, 4.0F, 26.0F);
|
||||
Body.addChild(cube_r5);
|
||||
setRotationAngle(cube_r5, 0.1745F, -0.1745F, 0.0F);
|
||||
cube_r5.setTextureOffset(186, 177).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
|
||||
cube_r6 = new ModelRenderer(this);
|
||||
cube_r6.setRotationPoint(-11.0F, 4.5F, 21.0F);
|
||||
Body.addChild(cube_r6);
|
||||
setRotationAngle(cube_r6, 0.2659F, 0.008F, -0.0169F);
|
||||
cube_r6.setTextureOffset(162, 177).addBox(-1.0F, -22.5F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
|
||||
cube_r7 = new ModelRenderer(this);
|
||||
cube_r7.setRotationPoint(11.0F, 4.5F, 21.0F);
|
||||
Body.addChild(cube_r7);
|
||||
setRotationAngle(cube_r7, 0.2659F, -0.008F, 0.0169F);
|
||||
cube_r7.setTextureOffset(170, 177).addBox(-1.0F, -22.5F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
|
||||
cube_r8 = new ModelRenderer(this);
|
||||
cube_r8.setRotationPoint(-11.1935F, -5.629F, -1.7596F);
|
||||
Body.addChild(cube_r8);
|
||||
setRotationAngle(cube_r8, 0.2223F, 0.008F, -0.0169F);
|
||||
cube_r8.setTextureOffset(52, 21).addBox(-1.0F, -12.0F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
|
||||
cube_r9 = new ModelRenderer(this);
|
||||
cube_r9.setRotationPoint(11.1935F, -5.629F, -1.7596F);
|
||||
Body.addChild(cube_r9);
|
||||
setRotationAngle(cube_r9, 0.2223F, -0.008F, 0.0169F);
|
||||
cube_r9.setTextureOffset(178, 177).addBox(-1.0F, -12.0F, -2.0F, 2.0F, 24.0F, 2.0F, 0.0F, false);
|
||||
cube_r10 = new ModelRenderer(this);
|
||||
cube_r10.setRotationPoint(42.0F, 4.0F, 7.0F);
|
||||
Body.addChild(cube_r10);
|
||||
setRotationAngle(cube_r10, 0.1745F, -0.1745F, 0.0F);
|
||||
cube_r10.setTextureOffset(206, 177).addBox(-1.0F, -22.0F, -6.0F, 2.0F, 23.0F, 2.0F, 0.0F, false);
|
||||
cube_r11 = new ModelRenderer(this);
|
||||
cube_r11.setRotationPoint(-26.0F, -18.0F, -7.0F);
|
||||
Body.addChild(cube_r11);
|
||||
setRotationAngle(cube_r11, 0.0F, 0.1309F, 0.0F);
|
||||
cube_r11.setTextureOffset(0, 118).addBox(-29.0F, -0.01F, 0.0F, 29.0F, 2.0F, 24.0F, 0.0F, false);
|
||||
cube_r12 = new ModelRenderer(this);
|
||||
cube_r12.setRotationPoint(26.0F, -18.0F, -7.0F);
|
||||
Body.addChild(cube_r12);
|
||||
setRotationAngle(cube_r12, 0.0F, -0.1309F, 0.0F);
|
||||
cube_r12.setTextureOffset(0, 118).addBox(0.0F, -0.01F, 0.0F, 29.0F, 2.0F, 24.0F, 0.0F, true);
|
||||
cube_r13 = new ModelRenderer(this);
|
||||
cube_r13.setRotationPoint(-26.0F, 5.0F, -2.0F);
|
||||
Body.addChild(cube_r13);
|
||||
setRotationAngle(cube_r13, 0.0F, 0.1309F, 0.0F);
|
||||
cube_r13.setTextureOffset(64, 177).addBox(-19.0F, -0.01F, 0.0F, 19.0F, 2.0F, 24.0F, 0.0F, false);
|
||||
cube_r14 = new ModelRenderer(this);
|
||||
cube_r14.setRotationPoint(26.0F, 5.0F, -2.0F);
|
||||
Body.addChild(cube_r14);
|
||||
setRotationAngle(cube_r14, 0.0F, -0.1309F, 0.0F);
|
||||
cube_r14.setTextureOffset(64, 177).addBox(0.0F, -0.01F, 0.0F, 19.0F, 2.0F, 24.0F, 0.0F, true);
|
||||
cube_r15 = new ModelRenderer(this);
|
||||
cube_r15.setRotationPoint(-26.8737F, -5.0F, 6.9632F);
|
||||
Body.addChild(cube_r15);
|
||||
setRotationAngle(cube_r15, 0.1686F, 0.6551F, -0.0096F);
|
||||
cube_r15.setTextureOffset(190, 90).addBox(-19.5F, -12.0F, 1.0F, 39.0F, 24.0F, 0.0F, 0.0F, true);
|
||||
cube_r16 = new ModelRenderer(this);
|
||||
cube_r16.setRotationPoint(-26.5867F, -6.1884F, 8.6681F);
|
||||
Body.addChild(cube_r16);
|
||||
setRotationAngle(cube_r16, 0.2164F, -0.4589F, -0.102F);
|
||||
cube_r16.setTextureOffset(190, 90).addBox(-20.5F, -11.0F, 0.0F, 39.0F, 23.0F, 0.0F, 0.0F, true);
|
||||
cube_r17 = new ModelRenderer(this);
|
||||
cube_r17.setRotationPoint(26.5867F, -6.1884F, 8.6681F);
|
||||
Body.addChild(cube_r17);
|
||||
setRotationAngle(cube_r17, 0.2164F, 0.4589F, 0.102F);
|
||||
cube_r17.setTextureOffset(190, 90).addBox(-18.5F, -11.0F, 0.0F, 39.0F, 23.0F, 0.0F, 0.0F, false);
|
||||
cube_r18 = new ModelRenderer(this);
|
||||
cube_r18.setRotationPoint(26.8737F, -5.0F, 6.9632F);
|
||||
Body.addChild(cube_r18);
|
||||
setRotationAngle(cube_r18, 0.1686F, -0.6551F, 0.0096F);
|
||||
cube_r18.setTextureOffset(190, 90).addBox(-19.5F, -12.0F, 1.0F, 39.0F, 24.0F, 0.0F, 0.0F, false);
|
||||
cube_r19 = new ModelRenderer(this);
|
||||
cube_r19.setRotationPoint(0.0F, -1.5F, 0.0F);
|
||||
Body.addChild(cube_r19);
|
||||
setRotationAngle(cube_r19, -0.3491F, 0.0F, 0.0F);
|
||||
cube_r19.setTextureOffset(0, 0).addBox(-0.5F, -2.5F, 1.0F, 1.0F, 9.0F, 1.0F, 0.0F, false);
|
||||
cube_r20 = new ModelRenderer(this);
|
||||
cube_r20.setRotationPoint(10.0F, -3.0F, 52.0F);
|
||||
Body.addChild(cube_r20);
|
||||
setRotationAngle(cube_r20, -0.3054F, 0.0F, 1.5708F);
|
||||
cube_r20.setTextureOffset(144, 0).addBox(-1.0F, -9.0F, -6.0F, 2.0F, 18.0F, 12.0F, 0.0F, true);
|
||||
cube_r21 = new ModelRenderer(this);
|
||||
cube_r21.setRotationPoint(-10.0F, -3.0F, 52.0F);
|
||||
Body.addChild(cube_r21);
|
||||
setRotationAngle(cube_r21, -0.3054F, 0.0F, -1.5708F);
|
||||
cube_r21.setTextureOffset(144, 0).addBox(-1.0F, -9.0F, -6.0F, 2.0F, 18.0F, 12.0F, 0.0F, false);
|
||||
cube_r22 = new ModelRenderer(this);
|
||||
cube_r22.setRotationPoint(0.0F, -15.0F, 50.0F);
|
||||
Body.addChild(cube_r22);
|
||||
setRotationAngle(cube_r22, -0.3054F, 0.0F, 0.0F);
|
||||
cube_r22.setTextureOffset(54, 144).addBox(-1.0F, -6.0F, -4.0F, 2.0F, 18.0F, 12.0F, 0.0F, false);
|
||||
cube_r23 = new ModelRenderer(this);
|
||||
cube_r23.setRotationPoint(2.0F, 9.25F, 34.0F);
|
||||
Body.addChild(cube_r23);
|
||||
setRotationAngle(cube_r23, 0.2528F, -0.1733F, 0.5888F);
|
||||
cube_r23.setTextureOffset(135, 133).addBox(-0.25F, -6.3007F, -0.9537F, 0.0F, 6.0F, 17.0F, 0.0F, true);
|
||||
cube_r24 = new ModelRenderer(this);
|
||||
cube_r24.setRotationPoint(-2.0F, 9.25F, 34.0F);
|
||||
Body.addChild(cube_r24);
|
||||
setRotationAngle(cube_r24, 0.2528F, 0.1733F, -0.5888F);
|
||||
cube_r24.setTextureOffset(135, 133).addBox(0.25F, -6.3007F, -0.9537F, 0.0F, 6.0F, 17.0F, 0.0F, false);
|
||||
cube_r25 = new ModelRenderer(this);
|
||||
cube_r25.setRotationPoint(0.0F, 9.25F, 33.0F);
|
||||
Body.addChild(cube_r25);
|
||||
setRotationAngle(cube_r25, 0.2618F, 0.0F, 0.0F);
|
||||
cube_r25.setTextureOffset(106, 144).addBox(-2.0F, -6.0F, 0.0F, 4.0F, 6.0F, 21.0F, 0.0F, false);
|
||||
cube_r26 = new ModelRenderer(this);
|
||||
cube_r26.setRotationPoint(-5.0F, 9.0F, 20.0F);
|
||||
Body.addChild(cube_r26);
|
||||
setRotationAngle(cube_r26, 0.0F, 0.1745F, 0.0F);
|
||||
cube_r26.setTextureOffset(38, 201).addBox(0.0F, -1.75F, 0.0F, 5.0F, 2.0F, 14.0F, 0.0F, true);
|
||||
cube_r27 = new ModelRenderer(this);
|
||||
cube_r27.setRotationPoint(5.0F, 9.0F, 20.0F);
|
||||
Body.addChild(cube_r27);
|
||||
setRotationAngle(cube_r27, 0.0F, -0.1745F, 0.0F);
|
||||
cube_r27.setTextureOffset(38, 201).addBox(-5.0F, -1.75F, 0.0F, 5.0F, 2.0F, 14.0F, 0.0F, false);
|
||||
cube_r28 = new ModelRenderer(this);
|
||||
cube_r28.setRotationPoint(-7.0F, -11.0F, 20.0F);
|
||||
Body.addChild(cube_r28);
|
||||
setRotationAngle(cube_r28, 0.3925F, -1.2393F, 1.1581F);
|
||||
cube_r28.setTextureOffset(196, 64).addBox(0.0F, -7.0F, -5.0F, 18.0F, 7.0F, 5.0F, 0.0F, true);
|
||||
cube_r29 = new ModelRenderer(this);
|
||||
cube_r29.setRotationPoint(7.0F, -11.0F, 20.0F);
|
||||
Body.addChild(cube_r29);
|
||||
setRotationAngle(cube_r29, 0.3925F, 1.2393F, -1.1581F);
|
||||
cube_r29.setTextureOffset(196, 64).addBox(-18.0F, -7.0F, -5.0F, 18.0F, 7.0F, 5.0F, 0.0F, false);
|
||||
cube_r30 = new ModelRenderer(this);
|
||||
cube_r30.setRotationPoint(0.0F, -6.0F, 9.0F);
|
||||
Body.addChild(cube_r30);
|
||||
setRotationAngle(cube_r30, 0.0F, 0.0F, -1.5708F);
|
||||
cube_r30.setTextureOffset(42, 182).addBox(-10.0F, -7.0F, 6.0F, 15.0F, 14.0F, 5.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(0, 239).addBox(-15.0F, -7.0F, -28.0F, 15.0F, 14.0F, 0.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(0, 223).addBox(-15.0F, -7.0F, -27.0F, 15.0F, 14.0F, 0.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(96, 55).addBox(-9.0F, -2.0F, -28.0F, 4.0F, 4.0F, 7.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(0, 201).addBox(-14.0F, -7.0F, -26.0F, 14.0F, 14.0F, 5.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(144, 34).addBox(-16.0F, -9.0F, -28.0F, 18.0F, 2.0F, 7.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(42, 0).addBox(0.0F, -7.0F, -28.0F, 2.0F, 14.0F, 7.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(0, 0).addBox(-10.0F, -7.0F, -18.0F, 0.0F, 14.0F, 25.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(0, 0).addBox(1.0F, 0.0F, -26.0F, 15.0F, 0.0F, 66.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(0, 0).addBox(-10.0F, -7.0F, -21.0F, 11.0F, 14.0F, 10.0F, 0.0F, false);
|
||||
cube_r30.setTextureOffset(54, 144).addBox(-10.0F, -8.0F, -21.0F, 10.0F, 1.0F, 32.0F, 0.0F, false);
|
||||
cube_r31 = new ModelRenderer(this);
|
||||
cube_r31.setRotationPoint(0.0F, -6.0F, 9.0F);
|
||||
Body.addChild(cube_r31);
|
||||
setRotationAngle(cube_r31, 0.0F, 0.0F, 1.5708F);
|
||||
cube_r31.setTextureOffset(144, 34).addBox(-2.0F, -9.0F, -28.0F, 18.0F, 2.0F, 7.0F, 0.0F, true);
|
||||
cube_r31.setTextureOffset(54, 144).addBox(0.0F, -8.0F, -21.0F, 10.0F, 1.0F, 32.0F, 0.0F, true);
|
||||
cube_r32 = new ModelRenderer(this);
|
||||
cube_r32.setRotationPoint(0.0F, 36.0F, 9.0F);
|
||||
Body.addChild(cube_r32);
|
||||
setRotationAngle(cube_r32, 0.0F, 0.0F, 1.5708F);
|
||||
cube_r32.setTextureOffset(42, 0).addBox(-28.0F, -7.0F, -28.0F, 2.0F, 14.0F, 7.0F, 0.0F, false);
|
||||
cube_r33 = new ModelRenderer(this);
|
||||
cube_r33.setRotationPoint(0.0F, -7.0F, -5.0F);
|
||||
Body.addChild(cube_r33);
|
||||
setRotationAngle(cube_r33, 0.0F, -0.4363F, -1.5708F);
|
||||
cube_r33.setTextureOffset(0, 118).addBox(0.0F, -7.0F, 0.0F, 7.0F, 14.0F, 1.0F, 0.0F, false);
|
||||
cube_r34 = new ModelRenderer(this);
|
||||
cube_r34.setRotationPoint(51.0F, -18.5F, 20.0F);
|
||||
Body.addChild(cube_r34);
|
||||
setRotationAngle(cube_r34, 0.7342F, -0.1119F, -1.4365F);
|
||||
cube_r34.setTextureOffset(53, 0).addBox(-24.5F, 0.0F, 0.0F, 24.0F, 0.0F, 43.0F, 0.0F, false);
|
||||
cube_r35 = new ModelRenderer(this);
|
||||
cube_r35.setRotationPoint(-51.0F, -18.5F, 20.0F);
|
||||
Body.addChild(cube_r35);
|
||||
setRotationAngle(cube_r35, 0.7342F, 0.1119F, 1.4365F);
|
||||
cube_r35.setTextureOffset(53, 0).addBox(0.5F, 0.0F, 0.0F, 24.0F, 0.0F, 43.0F, 0.0F, true);
|
||||
cube_r36 = new ModelRenderer(this);
|
||||
cube_r36.setRotationPoint(8.0F, 4.0F, 5.5F);
|
||||
Body.addChild(cube_r36);
|
||||
setRotationAngle(cube_r36, 0.0F, 0.0F, 2.0944F);
|
||||
cube_r36.setTextureOffset(162, 178).addBox(0.0F, 0.0F, -17.5F, 6.0F, 1.0F, 32.0F, 0.0F, true);
|
||||
cube_r37 = new ModelRenderer(this);
|
||||
cube_r37.setRotationPoint(-8.0F, 4.0F, 5.5F);
|
||||
Body.addChild(cube_r37);
|
||||
setRotationAngle(cube_r37, 0.0F, 0.0F, -2.0944F);
|
||||
cube_r37.setTextureOffset(162, 178).addBox(-6.0F, 0.0F, -17.5F, 6.0F, 1.0F, 32.0F, 0.0F, false);
|
||||
cube_r38 = new ModelRenderer(this);
|
||||
cube_r38.setRotationPoint(5.0F, 9.0F, 20.0F);
|
||||
Body.addChild(cube_r38);
|
||||
setRotationAngle(cube_r38, 0.1515F, -0.0869F, -1.0538F);
|
||||
cube_r38.setTextureOffset(0, 182).addBox(-0.1927F, -3.9414F, -0.5209F, 6.0F, 4.0F, 15.0F, 0.0F, false);
|
||||
cube_r39 = new ModelRenderer(this);
|
||||
cube_r39.setRotationPoint(-5.0F, 9.0F, 20.0F);
|
||||
Body.addChild(cube_r39);
|
||||
setRotationAngle(cube_r39, 0.1515F, 0.0869F, 1.0538F);
|
||||
cube_r39.setTextureOffset(82, 118).addBox(-5.8073F, -4.9414F, -0.5209F, 6.0F, 5.0F, 15.0F, 0.0F, false);
|
||||
cube_r40 = new ModelRenderer(this);
|
||||
cube_r40.setRotationPoint(-8.0F, 0.5F, 20.0F);
|
||||
Body.addChild(cube_r40);
|
||||
setRotationAngle(cube_r40, 0.1745F, 0.0F, 1.5708F);
|
||||
cube_r40.setTextureOffset(0, 144).addBox(-6.5F, -4.0F, 0.0F, 10.0F, 4.0F, 34.0F, 0.0F, true);
|
||||
cube_r41 = new ModelRenderer(this);
|
||||
cube_r41.setRotationPoint(8.0F, 0.5F, 20.0F);
|
||||
Body.addChild(cube_r41);
|
||||
setRotationAngle(cube_r41, 0.1745F, 0.0F, -1.5708F);
|
||||
cube_r41.setTextureOffset(0, 144).addBox(-3.5F, -4.0F, 0.0F, 10.0F, 4.0F, 34.0F, 0.0F, false);
|
||||
propeller = new ModelRenderer(this);
|
||||
propeller.setRotationPoint(0.0F, 1.0F, -20.5F);
|
||||
Body.addChild(propeller);
|
||||
cube_r42 = new ModelRenderer(this);
|
||||
cube_r42.setRotationPoint(0.0F, -7.0F, 29.5F);
|
||||
propeller.addChild(cube_r42);
|
||||
setRotationAngle(cube_r42, 0.0F, 0.0F, -1.5708F);
|
||||
cube_r42.setTextureOffset(32, 0).addBox(-9.0F, -2.0F, -32.0F, 4.0F, 4.0F, 3.0F, 0.0F, false);
|
||||
cube_r42.setTextureOffset(0, 260).addBox(-22.0F, -15.0F, -29.0F, 30.0F, 30.0F, 0.0F, 0.0F, false);
|
||||
cube_r42.setTextureOffset(4, 0).addBox(-8.0F, -1.0F, -29.0F, 2.0F, 2.0F, 1.0F, 0.0F, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue,
|
||||
float alpha) {
|
||||
Body.render(matrixStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
|
||||
}
|
||||
|
||||
public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
|
||||
modelRenderer.rotateAngleX = x;
|
||||
modelRenderer.rotateAngleY = y;
|
||||
modelRenderer.rotateAngleZ = z;
|
||||
}
|
||||
|
||||
public void setRotationAngles(Entity e, float f, float f1, float f2, float f3, float f4) {
|
||||
float DegToRad = (float)(Math.PI/180.0);
|
||||
float TargetRotX = (float)e.getPersistentData().getDouble("Pitch") * DegToRad;
|
||||
float TargetRotY = (float)e.getPersistentData().getDouble("Yaw") * DegToRad;
|
||||
float TargetRotZ = (float)e.getPersistentData().getDouble("Roll") * DegToRad;
|
||||
|
||||
if(TargetRotX > Body.rotateAngleX) Body.rotateAngleX += 1* DegToRad;
|
||||
if(TargetRotX < Body.rotateAngleX) Body.rotateAngleX -= 1* DegToRad;
|
||||
if(TargetRotY > Body.rotateAngleY) Body.rotateAngleY += 1* DegToRad;
|
||||
if(TargetRotY < Body.rotateAngleY) Body.rotateAngleY -= 1* DegToRad;
|
||||
if(TargetRotZ> Body.rotateAngleZ) Body.rotateAngleZ += 1* DegToRad;
|
||||
if(TargetRotZ < Body.rotateAngleZ) Body.rotateAngleZ -= 1* DegToRad;
|
||||
|
||||
propeller.rotateAngleZ = (float)e.getPersistentData().getDouble("PropSpeed") * (float)(Math.PI/180.0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
package studio.halbear.hem.procedures;
|
||||
|
||||
import studio.halbear.hem.entity.TestPlaneEntity;
|
||||
import studio.halbear.hem.HemModVariables;
|
||||
import studio.halbear.hem.HemMod;
|
||||
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.block.Blocks;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.function.Function;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.util.Comparator;
|
||||
|
||||
public class TestPlaneOnEntityTickUpdateProcedure {
|
||||
|
||||
public static void executeProcedure(Map<String, Object> dependencies) {
|
||||
if (dependencies.get("world") == null) {
|
||||
if (!dependencies.containsKey("world"))
|
||||
HemMod.LOGGER.warn("Failed to load dependency world for procedure TestPlaneOnEntityTickUpdate!");
|
||||
return;
|
||||
}
|
||||
if (dependencies.get("x") == null) {
|
||||
if (!dependencies.containsKey("x"))
|
||||
HemMod.LOGGER.warn("Failed to load dependency x for procedure TestPlaneOnEntityTickUpdate!");
|
||||
return;
|
||||
}
|
||||
if (dependencies.get("y") == null) {
|
||||
if (!dependencies.containsKey("y"))
|
||||
HemMod.LOGGER.warn("Failed to load dependency y for procedure TestPlaneOnEntityTickUpdate!");
|
||||
return;
|
||||
}
|
||||
if (dependencies.get("z") == null) {
|
||||
if (!dependencies.containsKey("z"))
|
||||
HemMod.LOGGER.warn("Failed to load dependency z for procedure TestPlaneOnEntityTickUpdate!");
|
||||
return;
|
||||
}
|
||||
if (dependencies.get("entity") == null) {
|
||||
if (!dependencies.containsKey("entity"))
|
||||
HemMod.LOGGER.warn("Failed to load dependency entity for procedure TestPlaneOnEntityTickUpdate!");
|
||||
return;
|
||||
}
|
||||
IWorld world = (IWorld) dependencies.get("world");
|
||||
double x = dependencies.get("x") instanceof Integer ? (int) dependencies.get("x") : (double) dependencies.get("x");
|
||||
double y = dependencies.get("y") instanceof Integer ? (int) dependencies.get("y") : (double) dependencies.get("y");
|
||||
double z = dependencies.get("z") instanceof Integer ? (int) dependencies.get("z") : (double) dependencies.get("z");
|
||||
Entity entity = (Entity) dependencies.get("entity");
|
||||
entity.rotationYaw = (float) (0);
|
||||
entity.setRenderYawOffset(entity.rotationYaw);
|
||||
entity.prevRotationYaw = entity.rotationYaw;
|
||||
if (entity instanceof LivingEntity) {
|
||||
((LivingEntity) entity).prevRenderYawOffset = entity.rotationYaw;
|
||||
((LivingEntity) entity).rotationYawHead = entity.rotationYaw;
|
||||
((LivingEntity) entity).prevRotationYawHead = entity.rotationYaw;
|
||||
}
|
||||
entity.rotationPitch = (float) (0);
|
||||
entity.getPersistentData().putDouble("PropSpeed", ((entity.getPersistentData().getDouble("PropSpeed")
|
||||
+ Math.min(20 * (Math.abs(entity.getMotion().getZ()) + Math.abs(entity.getMotion().getX())), 20)) % 360));
|
||||
if (!((world.getBlockState(new BlockPos(x, y - 2, z))).getBlock() == Blocks.AIR)) {
|
||||
entity.getPersistentData().putDouble("Pitch",
|
||||
((-20) * (1 - Math.min(2 * (Math.abs(entity.getMotion().getZ()) + Math.abs(entity.getMotion().getX())), 1))));
|
||||
}
|
||||
if (0.3 > Math.abs(entity.getMotion().getZ()) + Math.abs(entity.getMotion().getX())) {
|
||||
entity.setMotion(
|
||||
(Math.sin(Math.toRadians(1 * entity.getPersistentData().getDouble("Yaw")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)),
|
||||
(entity.getMotion().getY()), (Math.cos(Math.toRadians(1 * entity.getPersistentData().getDouble("Yaw")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)));
|
||||
} else {
|
||||
entity.setMotion(
|
||||
(Math.cos(Math.toRadians((-1) * entity.getPersistentData().getDouble("Roll")))
|
||||
* Math.sin(Math.toRadians((-1) * entity.getPersistentData().getDouble("Yaw")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)
|
||||
+ Math.sin(Math.toRadians((-1) * entity.getPersistentData().getDouble("Roll")))
|
||||
* Math.sin(Math.toRadians(1 * entity.getPersistentData().getDouble("Pitch")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)),
|
||||
(Math.cos(Math.toRadians((-1) * entity.getPersistentData().getDouble("Roll")))
|
||||
* Math.sin(Math.toRadians((-1) * entity.getPersistentData().getDouble("Pitch")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)
|
||||
+ Math.sin(Math.toRadians((-1) * entity.getPersistentData().getDouble("Roll")))
|
||||
* Math.sin(Math.toRadians((-1) * entity.getPersistentData().getDouble("Yaw")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)),
|
||||
(Math.cos(Math.toRadians((-1) * entity.getPersistentData().getDouble("Roll")))
|
||||
* Math.cos(Math.toRadians((-1) * entity.getPersistentData().getDouble("Yaw")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)
|
||||
+ Math.sin(Math.toRadians((-1) * entity.getPersistentData().getDouble("Roll")))
|
||||
* Math.sin(Math.toRadians(1 * entity.getPersistentData().getDouble("Pitch")))
|
||||
* (entity.getPersistentData().getDouble("Throttle") / 100)));
|
||||
}
|
||||
if (entity.isBeingRidden()) {
|
||||
{
|
||||
List<Entity> _entfound = world
|
||||
.getEntitiesWithinAABB(Entity.class,
|
||||
new AxisAlignedBB(x - (5 / 2d), y - (5 / 2d), z - (5 / 2d), x + (5 / 2d), y + (5 / 2d), z + (5 / 2d)), null)
|
||||
.stream().sorted(new Object() {
|
||||
Comparator<Entity> compareDistOf(double _x, double _y, double _z) {
|
||||
return Comparator.comparing((Function<Entity, Double>) (_entcnd -> _entcnd.getDistanceSq(_x, _y, _z)));
|
||||
}
|
||||
}.compareDistOf(x, y, z)).collect(Collectors.toList());
|
||||
for (Entity entityiterator : _entfound) {
|
||||
if (entityiterator.isPassenger() && (entityiterator.getRidingEntity()) instanceof TestPlaneEntity.CustomEntity) {
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleIncreasePressure) {
|
||||
entity.getPersistentData().putDouble("Throttle", Math.min(entity.getPersistentData().getDouble("Throttle") + 1, 100));
|
||||
}
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleReleasePressure) {
|
||||
entity.getPersistentData().putDouble("Throttle", Math.max(entity.getPersistentData().getDouble("Throttle") - 1, 0));
|
||||
}
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleAccelerate) {
|
||||
entity.getPersistentData().putDouble("Pitch", ((entity.getPersistentData().getDouble("Pitch") + 1) % 360));
|
||||
}
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleDecelerate) {
|
||||
entity.getPersistentData().putDouble("Pitch", ((entity.getPersistentData().getDouble("Pitch") - 1) % 360));
|
||||
}
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleTurnLeft) {
|
||||
entity.getPersistentData().putDouble("Roll", ((entity.getPersistentData().getDouble("Roll") - 1) % 360));
|
||||
}
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleTurnRight) {
|
||||
entity.getPersistentData().putDouble("Roll", ((entity.getPersistentData().getDouble("Roll") + 1) % 360));
|
||||
}
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleStrafeLeft) {
|
||||
entity.getPersistentData().putDouble("Yaw", ((entity.getPersistentData().getDouble("Yaw") - 1) % 360));
|
||||
}
|
||||
if ((entityiterator.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null)
|
||||
.orElse(new HemModVariables.PlayerVariables())).VehicleStrafeRight) {
|
||||
entity.getPersistentData().putDouble("Yaw", ((entity.getPersistentData().getDouble("Yaw") + 1) % 360));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package studio.halbear.hem.procedures;
|
||||
|
||||
import studio.halbear.hem.HemMod;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class TestPlaneOnInitialEntitySpawnProcedure {
|
||||
|
||||
public static void executeProcedure(Map<String, Object> dependencies) {
|
||||
if (dependencies.get("entity") == null) {
|
||||
if (!dependencies.containsKey("entity"))
|
||||
HemMod.LOGGER.warn("Failed to load dependency entity for procedure TestPlaneOnInitialEntitySpawn!");
|
||||
return;
|
||||
}
|
||||
Entity entity = (Entity) dependencies.get("entity");
|
||||
entity.getPersistentData().putDouble("PropSpeed", 0);
|
||||
entity.getPersistentData().putDouble("Pitch", 0);
|
||||
entity.getPersistentData().putDouble("Yaw", 0);
|
||||
entity.getPersistentData().putDouble("Roll", 0);
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package studio.halbear.hem.procedures;
|
||||
|
||||
import studio.halbear.hem.HemModVariables;
|
||||
import studio.halbear.hem.HemMod;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class TestPlaneRightClickedOnEntityProcedure {
|
||||
|
||||
public static void executeProcedure(Map<String, Object> dependencies) {
|
||||
if (dependencies.get("sourceentity") == null) {
|
||||
if (!dependencies.containsKey("sourceentity"))
|
||||
HemMod.LOGGER.warn("Failed to load dependency sourceentity for procedure TestPlaneRightClickedOnEntity!");
|
||||
return;
|
||||
}
|
||||
Entity sourceentity = (Entity) dependencies.get("sourceentity");
|
||||
{
|
||||
boolean _setval = (true);
|
||||
sourceentity.getCapability(HemModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.PilotingVehicle = _setval;
|
||||
capability.syncPlayerVariables(sourceentity);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "item/template_spawn_egg"
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
Reference in New Issue
Block a user