From 62749b8ef83531794f7b7e4ab45afee1a39f7d0e Mon Sep 17 00:00:00 2001 From: Waterpicker Date: Sat, 29 Apr 2017 04:50:20 -0500 Subject: [PATCH] Monoliths first draft --- .../dimdoors/client/DDProxyClient.java | 4 + .../dimdoors/server/sound/DDSounds.java | 43 +++ .../com/zixiken/dimdoors/shared/DDConfig.java | 19 +- .../dimdoors/shared/DDProxyCommon.java | 7 + .../dimdoors/shared/entities/MobMonolith.java | 305 ++++++++++++++++++ .../shared/entities/ModelMobObelisk.java | 34 ++ .../shared/entities/RenderMobObelisk.java | 134 ++++++++ .../shared/world/DimDoorDimensions.java | 4 +- .../resources/assets/dimdoors/sounds.json | 26 +- .../textures/mobs/monolith/Monolith0.png | Bin 0 -> 3383 bytes .../textures/mobs/monolith/Monolith1.png | Bin 0 -> 3566 bytes .../textures/mobs/monolith/Monolith10.png | Bin 0 -> 4239 bytes .../textures/mobs/monolith/Monolith11.png | Bin 0 -> 4258 bytes .../textures/mobs/monolith/Monolith12.png | Bin 0 -> 4320 bytes .../textures/mobs/monolith/Monolith13.png | Bin 0 -> 4379 bytes .../textures/mobs/monolith/Monolith14.png | Bin 0 -> 4421 bytes .../textures/mobs/monolith/Monolith15.png | Bin 0 -> 4480 bytes .../textures/mobs/monolith/Monolith16.png | Bin 0 -> 4622 bytes .../textures/mobs/monolith/Monolith17.png | Bin 0 -> 4674 bytes .../textures/mobs/monolith/Monolith18.png | Bin 0 -> 5007 bytes .../textures/mobs/monolith/Monolith2.png | Bin 0 -> 3598 bytes .../textures/mobs/monolith/Monolith3.png | Bin 0 -> 3678 bytes .../textures/mobs/monolith/Monolith4.png | Bin 0 -> 3929 bytes .../textures/mobs/monolith/Monolith5.png | Bin 0 -> 4007 bytes .../textures/mobs/monolith/Monolith6.png | Bin 0 -> 4001 bytes .../textures/mobs/monolith/Monolith7.png | Bin 0 -> 4118 bytes .../textures/mobs/monolith/Monolith8.png | Bin 0 -> 4118 bytes .../textures/mobs/monolith/Monolith9.png | Bin 0 -> 4141 bytes 28 files changed, 560 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/zixiken/dimdoors/server/sound/DDSounds.java create mode 100644 src/main/java/com/zixiken/dimdoors/shared/entities/MobMonolith.java create mode 100644 src/main/java/com/zixiken/dimdoors/shared/entities/ModelMobObelisk.java create mode 100644 src/main/java/com/zixiken/dimdoors/shared/entities/RenderMobObelisk.java create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith0.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith1.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith10.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith11.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith12.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith13.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith14.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith15.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith16.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith17.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith18.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith2.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith3.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith4.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith5.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith6.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith7.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith8.png create mode 100644 src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith9.png diff --git a/src/main/java/com/zixiken/dimdoors/client/DDProxyClient.java b/src/main/java/com/zixiken/dimdoors/client/DDProxyClient.java index 0fb1eb44..fd41d2b0 100644 --- a/src/main/java/com/zixiken/dimdoors/client/DDProxyClient.java +++ b/src/main/java/com/zixiken/dimdoors/client/DDProxyClient.java @@ -2,6 +2,8 @@ package com.zixiken.dimdoors.client; import com.zixiken.dimdoors.shared.DDProxyCommon; import com.zixiken.dimdoors.shared.ModelManager; +import com.zixiken.dimdoors.shared.entities.MobMonolith; +import com.zixiken.dimdoors.shared.entities.RenderMobObelisk; import com.zixiken.dimdoors.shared.tileentities.TileEntityDimDoor; import com.zixiken.dimdoors.shared.tileentities.TileEntityRift; import com.zixiken.dimdoors.shared.tileentities.TileEntityTransTrapdoor; @@ -10,6 +12,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @@ -36,6 +39,7 @@ public class DDProxyClient extends DDProxyCommon { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDimDoor.class, new RenderDimDoor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderTransTrapdoor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRift.class, new RenderRift()); + RenderingRegistry.registerEntityRenderingHandler(MobMonolith.class, new RenderMobObelisk(.5F)); } @Override diff --git a/src/main/java/com/zixiken/dimdoors/server/sound/DDSounds.java b/src/main/java/com/zixiken/dimdoors/server/sound/DDSounds.java new file mode 100644 index 00000000..efc86a74 --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/server/sound/DDSounds.java @@ -0,0 +1,43 @@ +package com.zixiken.dimdoors.server.sound; + +import com.zixiken.dimdoors.DimDoors; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; + +public class DDSounds { + private DDSounds() {} + + public static final SoundEvent CRACK = create("crack"); + + public static final SoundEvent CREEPY = create("creepy"); + + public static final SoundEvent DOOR_LOCKED = create("doorLocked"); + + public static final SoundEvent DOOR_LOCK_REMOVED = create("doorLockRemoved"); + + public static final SoundEvent KEY_LOCK = create("key"); + + public static final SoundEvent KEY_UNLOCKED = create("keyUnlock"); + + public static final SoundEvent MONK = create("monk"); + + public static final SoundEvent RIFT = create("rift"); + + public static final SoundEvent RIFT_CLOSE = create("riftClose"); + + public static final SoundEvent RIFT_DOOR = create("riftDoor"); + + public static final SoundEvent RIFT_END = create("riftEnd"); + + public static final SoundEvent RIFT_START = create("riftStart"); + + public static final SoundEvent TEARING = create("tearing"); + + private static final SoundEvent create(String name) { + ResourceLocation id = new ResourceLocation(DimDoors.MODID, name); + SoundEvent sound = new SoundEvent(id).setRegistryName(name); + GameRegistry.register(sound); + return sound; + } +} diff --git a/src/main/java/com/zixiken/dimdoors/shared/DDConfig.java b/src/main/java/com/zixiken/dimdoors/shared/DDConfig.java index 1dd4091d..2611ac66 100644 --- a/src/main/java/com/zixiken/dimdoors/shared/DDConfig.java +++ b/src/main/java/com/zixiken/dimdoors/shared/DDConfig.java @@ -38,6 +38,9 @@ public class DDConfig { private static int[] doorRelativeDepths = new int[]{-1, 0, 1}; private static int[] doorRelativeDepthWeights = new int[]{20, 30, 50}; + private static boolean DangerousLimboMonolithsDisabled = true; + private static boolean MonolithTeleportationEnabled = true; + private static int setConfigIntWithMaxAndMin(Configuration config, String category, String key, int defaultValue, String comment, int minValue, int maxValue) { Property prop = config.get(category, key, defaultValue, comment, minValue, maxValue); @@ -104,6 +107,12 @@ public class DDConfig { "List of weights (chances) of the relative depths in doorRelativeDepths. This list needs to have the same size."); doorRelativeDepthWeights = prop.getIntList(); + prop = config.get(Configuration.CATEGORY_GENERAL, "dangerousLimboMonolithsDisabled", DangerousLimboMonolithsDisabled, + "Is Monoliths Dangerous in Limbo disabled?"); + + prop = config.get(Configuration.CATEGORY_GENERAL, "dangerousLimboMonolithsDisabled", MonolithTeleportationEnabled, + "Is Monolith Teleportation disabled?"); + checkAndCorrectDoorRelativeDepths(config); // Save config @@ -144,7 +153,7 @@ public class DDConfig { } public static List getDungeonSchematicNames() { - List dungeonSchematicNamesArrayList = new ArrayList(); + List dungeonSchematicNamesArrayList = new ArrayList<>(); for (String dungeonSchematicName : dungeonSchematicNames) { dungeonSchematicNamesArrayList.add(dungeonSchematicName); } @@ -189,4 +198,12 @@ public class DDConfig { public static int getMaxDungeonDepth() { return maxDungeonDepth; } + + public static boolean isDangerousLimboMonolithsDisabled() { + return DangerousLimboMonolithsDisabled; + } + + public static boolean isMonolithTeleportationEnabled() { + return MonolithTeleportationEnabled; + } } diff --git a/src/main/java/com/zixiken/dimdoors/shared/DDProxyCommon.java b/src/main/java/com/zixiken/dimdoors/shared/DDProxyCommon.java index b659fc69..0df87e0a 100644 --- a/src/main/java/com/zixiken/dimdoors/shared/DDProxyCommon.java +++ b/src/main/java/com/zixiken/dimdoors/shared/DDProxyCommon.java @@ -1,7 +1,9 @@ package com.zixiken.dimdoors.shared; +import com.zixiken.dimdoors.DimDoors; import com.zixiken.dimdoors.shared.blocks.BlockDimDoorBase; import com.zixiken.dimdoors.shared.blocks.ModBlocks; +import com.zixiken.dimdoors.shared.entities.MobMonolith; import com.zixiken.dimdoors.shared.items.ModItems; import com.zixiken.dimdoors.shared.tileentities.TileEntityDimDoor; import com.zixiken.dimdoors.shared.tileentities.TileEntityDimDoorChaos; @@ -13,12 +15,14 @@ import com.zixiken.dimdoors.shared.tileentities.TileEntityTransTrapdoor; import com.zixiken.dimdoors.shared.world.DimDoorDimensions; import net.minecraft.block.BlockDoor; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; public abstract class DDProxyCommon implements IDDProxy { @@ -41,6 +45,9 @@ public abstract class DDProxyCommon implements IDDProxy { @Override public void onInitialization(FMLInitializationEvent event) { + EntityRegistry.registerModEntity(MobMonolith.class, "Monolith", 0, DimDoors.instance, 70, 1, true); + EntityRegistry.registerEgg(MobMonolith.class, 0, 0xffffff); + CraftingManager.registerRecipes(); } diff --git a/src/main/java/com/zixiken/dimdoors/shared/entities/MobMonolith.java b/src/main/java/com/zixiken/dimdoors/shared/entities/MobMonolith.java new file mode 100644 index 00000000..c3a49d10 --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/shared/entities/MobMonolith.java @@ -0,0 +1,305 @@ +package com.zixiken.dimdoors.shared.entities; + +import com.zixiken.dimdoors.DimDoors; +import com.zixiken.dimdoors.server.sound.DDSounds; +import com.zixiken.dimdoors.shared.DDConfig; +import com.zixiken.dimdoors.shared.TeleporterDimDoors; +import com.zixiken.dimdoors.shared.util.Location; +import com.zixiken.dimdoors.shared.world.PocketProvider; +import com.zixiken.dimdoors.shared.world.limbodimension.WorldProviderLimbo; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityFlying; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.IMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.network.datasync.EntityDataManager; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumParticleTypes; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvent; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; + +import java.util.List; + +import static net.minecraft.network.datasync.DataSerializers.*; + +public class MobMonolith extends EntityFlying implements IMob +{ + private static final int MAX_AGGRO = 250; + private static final int MAX_AGGRO_CAP = 100; + private static final int MIN_AGGRO_CAP = 25; + private static final int MAX_TEXTURE_STATE = 18; + private static final int MAX_SOUND_COOLDOWN = 200; + private static final int MAX_AGGRO_RANGE = 35; + private static final DataParameter AGGRO = EntityDataManager.createKey(MobMonolith.class, VARINT); + + private static final float WIDTH = 3f; + private static final float HEIGHT = 3f; + private static final float EYE_HEIGHT = HEIGHT / 2; + + public float pitchLevel; + private int aggro = 0; + private int soundTime = 0; + private final int aggroCap; + + public MobMonolith(World world) + { + super(world); + this.setSize(WIDTH, HEIGHT); + this.noClip = true; + this.aggroCap = MathHelper.getInt(this.rand, MIN_AGGRO_CAP, MAX_AGGRO_CAP); + } + + public boolean isDangerous() { + return DDConfig.isMonolithTeleportationEnabled() && (world.provider instanceof WorldProviderLimbo || !DDConfig.isDangerousLimboMonolithsDisabled()); + } + + @Override + protected void damageEntity(DamageSource par1DamageSource, float par2) {} + + @Override + public boolean attackEntityFrom(DamageSource damageSource, float par2) { + if (damageSource != DamageSource.inWall) { + this.aggro = MAX_AGGRO; + } + return false; + } + + @Override + public boolean canBreatheUnderwater() { + return true; + } + + @Override + public AxisAlignedBB getCollisionBoundingBox() { + return null; + } + + @Override + public AxisAlignedBB getCollisionBox(Entity par1Entity) { + return null; + } + + @Override + public boolean canDespawn() { + return false; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(57005); + } + + @Override + public boolean canBePushed() { + return false; + } + + @Override + public float getEyeHeight() { + return EYE_HEIGHT; + } + + @Override + protected void entityInit() { + super.entityInit(); + // Add a short for the aggro level + this.dataManager.register(AGGRO, 0); + } + + @Override + public boolean isEntityAlive() + { + return false; + } + + @Override + public void onEntityUpdate() { + // Remove this Monolith if it's not in Limbo or in a pocket dimension + if (!(this.world.provider instanceof WorldProviderLimbo)) { + this.setDead(); + super.onEntityUpdate(); + return; + } + + super.onEntityUpdate(); + + // Check for players and update aggro levels even if there are no players in range + EntityPlayer player = this.world.getClosestPlayerToEntity(this, MAX_AGGRO_RANGE); + boolean visibility = (player != null) && player.canEntityBeSeen(this); + this.updateAggroLevel(player, visibility); + + // Change orientation and face a player if one is in range + if (player != null) + { + this.facePlayer(player); + if (!this.world.isRemote && isDangerous()) + { + // Play sounds on the server side, if the player isn't in Limbo. + // Limbo is excluded to avoid drowning out its background music. + // Also, since it's a large open area with many Monoliths, some + // of the sounds that would usually play for a moment would + // keep playing constantly and would get very annoying. + playSounds(player); + } + + if (visibility) + { + // Only spawn particles on the client side and outside Limbo + if (world.isRemote && isDangerous()) { + this.spawnParticles(player); + } + + // Teleport the target player if various conditions are met + if (aggro >= MAX_AGGRO && !world.isRemote && DDConfig.isMonolithTeleportationEnabled() && !player.capabilities.isCreativeMode && isDangerous()) { + this.aggro = 0; + Location destination = WorldProviderLimbo.getLimboSkySpawn(player, world); + TeleporterDimDoors.instance().teleport(player, destination); + player.world.playSound(player, player.getPosition(), DDSounds.CRACK, SoundCategory.HOSTILE, 13, 1); + } + } + } + } + + private void updateAggroLevel(EntityPlayer player, boolean visibility) { + // If we're working on the server side, adjust aggro level + // If we're working on the client side, retrieve aggro level from dataWatcher + if (!this.world.isRemote) { + // Server side... + // Rapidly increase the aggro level if this Monolith can see the player + if (visibility) { + if (world.provider instanceof WorldProviderLimbo) { + if (isDangerous()) + aggro++; + else + aggro += 36; + } else { + // Aggro increases faster outside of Limbo + aggro += 3; + } + } else { + if (isDangerous()) { + if (aggro > aggroCap) { + // Decrease aggro over time + aggro--; + } else if (player != null && (aggro < aggroCap)) { + // Increase aggro if a player is within range and aggro < aggroCap + aggro++; + } + } else + aggro -= 3; + } + // Clamp the aggro level + int maxAggro = isDangerous()?MAX_AGGRO:180; + aggro = (short) MathHelper.clamp(aggro, 0, maxAggro); + this.dataManager.set(AGGRO, aggro); + } else { + // Client side... + aggro = this.dataManager.get(AGGRO); + } + } + + public int getTextureState() + { + // Determine texture state from aggro progress + return MathHelper.clamp(MAX_TEXTURE_STATE * aggro / MAX_AGGRO, 0, MAX_TEXTURE_STATE); + } + + /** + * Plays sounds at different levels of aggro, using soundTime to prevent too many sounds at once. + * @param entityPlayer + */ + private void playSounds(EntityPlayer entityPlayer) + { + float aggroPercent = this.getAggroProgress(); + if (this.soundTime <= 0) + { + playSound(DDSounds.MONK, 1F, 1F); + this.soundTime = 100; + } + if ((aggroPercent > 0.70) && this.soundTime < 100) + { + world.playSound(entityPlayer, entityPlayer.getPosition(), DDSounds.TEARING, SoundCategory.HOSTILE, 1F, (float) (1 + this.rand.nextGaussian())); + this.soundTime = 100 + this.rand.nextInt(75); + } + if ((aggroPercent > 0.80) && this.soundTime < MAX_SOUND_COOLDOWN) { + world.playSound(entityPlayer, entityPlayer.getPosition(), DDSounds.TEARING, SoundCategory.HOSTILE, 7, 1F); + this.soundTime = 250; + } + this.soundTime--; + } + + private void spawnParticles(EntityPlayer player) + { + int count = 10 * aggro / MAX_AGGRO; + for (int i = 1; i < count; ++i) + { + player.world.spawnParticle(EnumParticleTypes.PORTAL, player.posX + (this.rand.nextDouble() - 0.5D) * this.width, + player.posY + this.rand.nextDouble() * player.height - 0.75D, + player.posZ + (this.rand.nextDouble() - 0.5D) * player.width, + (this.rand.nextDouble() - 0.5D) * 2.0D, -this.rand.nextDouble(), + (this.rand.nextDouble() - 0.5D) * 2.0D); + } + } + + public float getAggroProgress() + { + return ((float) aggro) / MAX_AGGRO; + } + + private void facePlayer(EntityPlayer player) + { + double d0 = player.posX - this.posX; + double d1 = player.posZ - this.posZ; + double d2 = (player.posY + player.getEyeHeight()) - (this.posY + this.getEyeHeight()); + double d3 = MathHelper.sqrt(d0 * d0 + d1 * d1); + float f2 = (float)(Math.atan2(d1, d0) * 180.0D / Math.PI) - 90.0F; + this.pitchLevel = (float) -((Math.atan(d2/d3) )* 180.0D / Math.PI); + this.rotationYaw = f2; + this.rotationYawHead = f2; + this.renderYawOffset = this.rotationYaw; + } + + @Override + public void writeEntityToNBT(NBTTagCompound rootTag) + { + super.writeEntityToNBT(rootTag); + rootTag.setInteger("Aggro", this.aggro); + } + + @Override + public void readEntityFromNBT(NBTTagCompound rootTag) + { + super.readEntityFromNBT(rootTag); + + // Load Monoliths with half aggro so they don't teleport players instantly + aggro = rootTag.getInteger("Aggro") / 2; + } + + @Override + public boolean getCanSpawnHere() { + List list = world.getEntitiesWithinAABBExcludingEntity(this, new AxisAlignedBB( this.posX-15, posY-4, this.posZ-15, this.posX+15, this.posY+15, this.posZ+15)); + + if (world.provider instanceof WorldProviderLimbo) { + if(list.size() > 0) { + return false; + } + + } + else if(world.provider instanceof PocketProvider) + { + if (list.size() > 5 || world.canBlockSeeSky(new BlockPos(posX, posY, posZ))) { + return false; + } + } + + return world.checkNoEntityCollision(getCollisionBoundingBox()) && world.getCollisionBoxes(this, getEntityBoundingBox()).isEmpty() && !world.containsAnyLiquid(getCollisionBoundingBox()); + } +} \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/shared/entities/ModelMobObelisk.java b/src/main/java/com/zixiken/dimdoors/shared/entities/ModelMobObelisk.java new file mode 100644 index 00000000..0afdead1 --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/shared/entities/ModelMobObelisk.java @@ -0,0 +1,34 @@ +package com.zixiken.dimdoors.shared.entities; + + +import java.util.Random; + +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +@SideOnly(Side.CLIENT) +public class ModelMobObelisk extends ModelBase { + ModelRenderer wholemonolith; + Random rand = new Random(); + + public ModelMobObelisk() { + textureWidth = 256; + textureHeight = 256; + + wholemonolith = new ModelRenderer(this, 0, 0); + wholemonolith.addBox(-24F,-108F/1.3F, -6F, 48, 108, 12); + } + + @Override + public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { + this.setRotationAngles(0, 0, 0, 0, 0,0, entity); + + GL11.glScalef(((MobMonolith) entity).getRenderSizeModifier(), ((MobMonolith) entity).getRenderSizeModifier(), ((MobMonolith) entity).getRenderSizeModifier()); + wholemonolith.render(scale); + } +} \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/shared/entities/RenderMobObelisk.java b/src/main/java/com/zixiken/dimdoors/shared/entities/RenderMobObelisk.java new file mode 100644 index 00000000..941ec2cd --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/shared/entities/RenderMobObelisk.java @@ -0,0 +1,134 @@ +package com.zixiken.dimdoors.shared.entities; + +import com.zixiken.dimdoors.DimDoors; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderLivingEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import java.util.Arrays; +import java.util.List; + +@SideOnly(Side.CLIENT) +public class RenderMobObelisk extends RenderLiving { + protected ModelMobObelisk obeliskModel; + + protected static final List monolith_textures = Arrays.asList( + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith0.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith1.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith2.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith3.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith4.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith5.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith6.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith7.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith8.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith9.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith10.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith11.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith12.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith13.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith14.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith15.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith16.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith17.png"), + new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith18.png")); + + public RenderMobObelisk(float f) { + super(Minecraft.getMinecraft().getRenderManager(), new ModelMobObelisk(), f); + this.obeliskModel = (ModelMobObelisk)this.mainModel; + } + + @Override + public void doRender(EntityLiving entity, double x, double y, double z, float par8, float par9) { + final float minScaling = 0; + final float maxScaling = 0.1f; + MobMonolith monolith = ((MobMonolith) entity); + + float aggroScaling = 0; + if (monolith.isDangerous()) { + // Use linear interpolation to scale how much jitter we want for our given aggro level + aggroScaling = minScaling + (maxScaling - minScaling) * monolith.getAggroProgress(); + } + + // Calculate jitter - include entity ID to give Monoliths individual jitters + float time = ((Minecraft.getSystemTime() + 0xF1234568 * monolith.getEntityId()) % 200000) / 50.0F; + + // We use random constants here on purpose just to get different wave forms + double xJitter = aggroScaling * Math.sin(1.1f * time) * Math.sin(0.8f * time); + double yJitter = aggroScaling * Math.sin(1.2f * time) * Math.sin(0.9f * time); + double zJitter = aggroScaling * Math.sin(1.3f * time) * Math.sin(0.7f * time); + + // Render with jitter + this.render(entity, x + xJitter, y + yJitter, z + zJitter, par8, par9); + //this.renderLeash(entity, x, y, z, par8, par9); + } + + public void render(EntityLiving par1EntityLivingBase, double x, double y, double z, float par8, float par9) + { + if (MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Pre(par1EntityLivingBase, this, x, y, z))) return; + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + mainModel.swingProgress = getSwingProgress(par1EntityLivingBase, par9); + + try { + float interpolatedYaw = interpolateRotation(par1EntityLivingBase.prevRenderYawOffset, par1EntityLivingBase.renderYawOffset, par9); + float interpolatedYawHead = interpolateRotation(par1EntityLivingBase.prevRotationYawHead, par1EntityLivingBase.rotationYawHead, par9); + float rotation; + float pitch = par1EntityLivingBase.prevRotationPitch + (par1EntityLivingBase.rotationPitch - par1EntityLivingBase.prevRotationPitch) * par9; + renderLivingAt(par1EntityLivingBase, x, y, z); + + rotation = this.handleRotationFloat(par1EntityLivingBase, par9); + this.applyRotations(par1EntityLivingBase, rotation, interpolatedYaw, par9); + + float f6 = 0.0625F; + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + GL11.glScalef(-1.0F, -1.0F, 1.0F); + this.preRenderCallback(par1EntityLivingBase, par9); + GL11.glRotatef(((MobMonolith)par1EntityLivingBase).pitchLevel , 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.0F, 24.0F * f6 - 0.0078125F, 0.0F); + + + renderModel(par1EntityLivingBase, 0, 0, rotation, interpolatedYaw, pitch, f6); + + OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit); + GL11.glDisable(GL11.GL_TEXTURE_2D); + OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + } catch (Exception exception) { + exception.printStackTrace(); + } + + OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit); + GL11.glEnable(GL11.GL_TEXTURE_2D); + OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Post(par1EntityLivingBase, this, x, y, z)); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + MobMonolith monolith = (MobMonolith) entity; + + System.out.println("Monolith isn't null. " + monolith.getTextureState()); + + return monolith_textures.get(monolith.getTextureState()); //return new ResourceLocation(DimDoors.MODID + ":textures/mobs/monolith/Monolith" + monolith.getTextureState() + ".png"); + } +} \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/shared/world/DimDoorDimensions.java b/src/main/java/com/zixiken/dimdoors/shared/world/DimDoorDimensions.java index dd6d5e24..6f9bf471 100644 --- a/src/main/java/com/zixiken/dimdoors/shared/world/DimDoorDimensions.java +++ b/src/main/java/com/zixiken/dimdoors/shared/world/DimDoorDimensions.java @@ -17,7 +17,7 @@ import net.minecraftforge.common.DimensionManager; public class DimDoorDimensions { public static DimensionType LIMBO; - private static Map pocketDimensionTypes = new HashMap(); + private static Map pocketDimensionTypes = new HashMap<>(); public static List CUSTOM; public static void init() { @@ -35,7 +35,7 @@ public class DimDoorDimensions { registerDimension(pocketDimensionTypes.get(pocketType)); } - CUSTOM = new ArrayList(); + CUSTOM = new ArrayList<>(); for (int i = 0; i < 0; i++) { //@todo: For future use? Like, server owners can add their own set of DimDoors DimensionTypes via the configs? Or is this nonsense? dimID++; DimensionType tempType = DimensionType.register("Name", "_name", dimID, WorldProvider.class, false); diff --git a/src/main/resources/assets/dimdoors/sounds.json b/src/main/resources/assets/dimdoors/sounds.json index 0fc825e7..d667e0f7 100644 --- a/src/main/resources/assets/dimdoors/sounds.json +++ b/src/main/resources/assets/dimdoors/sounds.json @@ -1,15 +1,15 @@ { - "crack": {"category":"hostile", "sounds":[{"name":"crack","stream":false}]}, - "creepy": {"category":"ambient", "sounds":[{"name":"creepy","stream":true}]}, - "doorLocked": {"category":"player", "sounds":[{"name":"doorLocked","stream":false}]}, - "doorLockRemoved": {"category":"player", "sounds":[{"name":"doorLockRemoved","stream":false}]}, - "keyLock": {"category":"player", "sounds":[{"name":"keyLock","stream":false}]}, - "keyUnlock": {"category":"player", "sounds":[{"name":"keyUnlock", "stream":false}]}, - "monk": {"category":"hostile", "sounds":[{"name":"monk", "stream":false}]}, - "rift": {"category":"master", "sounds":[{"name":"rift", "stream":false}]}, - "riftClose": {"category":"player", "sounds":[{"name":"riftClose", "stream":false}]}, - "riftDoor": {"category":"player", "sounds":[{"name":"riftDoor", "stream":false}]}, - "riftEnd": {"category":"player", "sounds":[{"name":"riftEnd", "stream":false}]}, - "riftStart": {"category":"player", "sounds":[{"name":"riftStart", "stream":false}]}, - "tearing": {"category":"hostile", "sounds":[{"name":"tearing", "stream":false}]} + "crack" : { "sounds" : [ "dimdoors:crack"] }, + "creepy" : { "sounds" : ["dimdoors:creepy" ] }, + "doorLocked": { "sounds": [ "dimdoors:doorLocked" ] }, + "doorLockRemoved": { "sounds": [ "dimdoors:doorLockRemoved" ] }, + "keyLock" : { "sounds" : [ "dimdoors:keyLock" ] }, + "keyUnlock" : { "sounds": [ "dimdoors:keyUnlock" ] }, + "monk" : { "sounds" : [ "dimdoors:monk" ] }, + "rift" : { "sounds" : [ "dimdoors:rift" ] }, + "riftClose" : { "sounds" : [ "dimdoors:riftClose" ] }, + "riftDoor": { "sounds" : [ "dimdoors:riftDoor" ] }, + "riftEnd": { "sounds" : [ "dimdoors:riftEnd" ] }, + "riftStart": { "sounds" : [ "dimdoors:riftStart" ] }, + "tearing": { "sounds" : [ "dimdoors:tearing"] } } \ No newline at end of file diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith0.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith0.png new file mode 100644 index 0000000000000000000000000000000000000000..afcb31df86b986d823a3805b8f606c75e428bfff GIT binary patch literal 3383 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 Xh{h-#4t%L2o=RY>Z=qKMb&LBija$C6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith10.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith10.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d398aa08f5cfb99218af7bb8cbd4fbc384ed1b GIT binary patch literal 4239 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 DcxY36 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith11.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith11.png new file mode 100644 index 0000000000000000000000000000000000000000..89df625bd1c430388ed29d931eef98f8f8112111 GIT binary patch literal 4258 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 W4bmzqZl1p?0MOSq(L!muJpUi-e|HK1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith13.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith13.png new file mode 100644 index 0000000000000000000000000000000000000000..5724818ed870e39e2d891f9904cc1380ad2f4a7b GIT binary patch literal 4379 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith14.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith14.png new file mode 100644 index 0000000000000000000000000000000000000000..93938fabcb6074b9067f12660d4aa11c354f4fed GIT binary patch literal 4421 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith15.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith15.png new file mode 100644 index 0000000000000000000000000000000000000000..1ccc663491a1f9916458611c429926799dd8d85b GIT binary patch literal 4480 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith16.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith16.png new file mode 100644 index 0000000000000000000000000000000000000000..56be9da08057416518614ebacee6d686bce600af GIT binary patch literal 4622 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith18.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith18.png new file mode 100644 index 0000000000000000000000000000000000000000..00ba1d0a8c6d7927e8653e9c5d52a8a8e8ee46ba GIT binary patch literal 5007 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 Hr|ACxs5sW+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith3.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith3.png new file mode 100644 index 0000000000000000000000000000000000000000..e40fe2aa620d3fd8f81fc47d75ad7bc9300fcd50 GIT binary patch literal 3678 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 KMkUnY$$tPN^uCDz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith7.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith7.png new file mode 100644 index 0000000000000000000000000000000000000000..1505ead9b6481767585d89f3caba09590413de44 GIT binary patch literal 4118 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith8.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith8.png new file mode 100644 index 0000000000000000000000000000000000000000..1505ead9b6481767585d89f3caba09590413de44 GIT binary patch literal 4118 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith9.png b/src/main/resources/assets/dimdoors/textures/mobs/monolith/Monolith9.png new file mode 100644 index 0000000000000000000000000000000000000000..08b63b838332722bbbe32f11354157b8fc4d5a35 GIT binary patch literal 4141 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 literal 0 HcmV?d00001