Skip to content

Commit d85ccc6

Browse files
committed
Add missiles source + add fixes
1 parent 2f2ef90 commit d85ccc6

54 files changed

Lines changed: 2310 additions & 7 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.gradle

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ sourceSets {
3131
"$projectDir/src/api",
3232
"$projectDir/src/externalapi",
3333
"$projectDir/src/forcefields",
34-
"$projectDir/src/nuclear"
34+
"$projectDir/src/nuclear",
35+
"$projectDir/src/missiles"
3536
]
3637
include '**/*.java'
3738
}
@@ -118,6 +119,15 @@ task forcefieldJar(type: Jar) {
118119
include 'physica/forcefield/**'
119120
}
120121
}
122+
123+
task missilesJar(type: Jar) {
124+
baseName = 'PhysicaMissiles'
125+
126+
from zipTree(jar.outputs.getFiles().getSingleFile()).matching {
127+
include 'physica/missiles/**'
128+
}
129+
}
130+
121131
task incrementBuildNumber() {
122132
doLast {
123133
config.version_build = (config.version_build.toString().toInteger()) + 1
@@ -129,12 +139,14 @@ task incrementBuildNumber() {
129139
coreJar.dependsOn('reobf')
130140
nuclearJar.dependsOn('reobf')
131141
forcefieldJar.dependsOn('reobf')
142+
missilesJar.dependsOn('reobf')
132143
incrementBuildNumber.dependsOn('reobf')
133144
task releaseJars(type: Copy) {
134145
dependsOn "reobf"
135146
from incrementBuildNumber
136147
from coreJar
137148
from nuclearJar
138149
from forcefieldJar
150+
from missilesJar
139151
destinationDir= new File('/releaseJarsOnly/')
140152
}

build.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#
2-
#Mon Nov 04 20:17:59 CET 2019
3-
version_minor=5
2+
#Wed Dec 11 18:56:12 CET 2019
3+
version_minor=6
4+
version_revision=0
45
minecraft_version=1.7.10
5-
version_revision=4
6-
version_build=7
6+
version_build=1
77
version_major=1

src/api/physica/library/item/ItemDescriptable.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ public ItemDescriptable(String texturePrefix, String name, String... customLines
2020
setCreativeTab(CoreTabRegister.coreTab);
2121
}
2222

23-
@SuppressWarnings("unchecked")
2423
@Override
2524
public void addInformation(ItemStack stack, EntityPlayer player, @SuppressWarnings("rawtypes") List lines, boolean par4)
2625
{
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package physica.missiles;
2+
3+
import physica.CoreReferences;
4+
5+
public class MissileReferences {
6+
7+
public static final String NAME = CoreReferences.NAME + "Missiles";
8+
public static final String DOMAIN = CoreReferences.DOMAIN + "missiles";
9+
public static final String PREFIX = DOMAIN + ":";
10+
}
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package physica.missiles;
2+
3+
import java.io.File;
4+
5+
import cpw.mods.fml.common.Mod;
6+
import cpw.mods.fml.common.Mod.EventHandler;
7+
import cpw.mods.fml.common.Mod.Instance;
8+
import cpw.mods.fml.common.Mod.Metadata;
9+
import cpw.mods.fml.common.ModMetadata;
10+
import cpw.mods.fml.common.SidedProxy;
11+
import cpw.mods.fml.common.event.FMLInitializationEvent;
12+
import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
13+
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
14+
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
15+
import cpw.mods.fml.relauncher.Side;
16+
import net.minecraft.block.BlockDispenser;
17+
import net.minecraft.dispenser.IBehaviorDispenseItem;
18+
import net.minecraft.util.EnumFacing;
19+
import net.minecraft.world.World;
20+
import physica.CoreReferences;
21+
import physica.api.core.abstraction.recipe.IRecipeRegister;
22+
import physica.api.core.load.ContentLoader;
23+
import physica.api.core.load.LoadPhase;
24+
import physica.library.location.VectorLocation;
25+
import physica.missiles.client.MissileClientRegister;
26+
import physica.missiles.common.MissileBlockRegister;
27+
import physica.missiles.common.MissileEntityRegister;
28+
import physica.missiles.common.MissileItemRegister;
29+
import physica.missiles.common.MissileTabRegister;
30+
import physica.missiles.common.entity.EntityGrenade;
31+
import physica.proxy.CommonProxy;
32+
33+
@Mod(modid = MissileReferences.DOMAIN, name = MissileReferences.NAME, version = CoreReferences.VERSION, dependencies = "required-after:" + CoreReferences.DOMAIN)
34+
public class PhysicaMissiles {
35+
36+
@SidedProxy(clientSide = "physica.proxy.ClientProxy", serverSide = "physica.proxy.ServerProxy")
37+
public static CommonProxy sidedProxy;
38+
public static ContentLoader proxyLoader = new ContentLoader();
39+
40+
@Instance(MissileReferences.NAME)
41+
public static PhysicaMissiles INSTANCE;
42+
@Metadata(MissileReferences.DOMAIN)
43+
public static ModMetadata metadata;
44+
45+
public static File configFolder;
46+
47+
@EventHandler
48+
public void preInit(FMLPreInitializationEvent event)
49+
{
50+
INSTANCE = this;
51+
configFolder = new File(event.getModConfigurationDirectory(), "/" + MissileReferences.DOMAIN);
52+
proxyLoader.addContent(sidedProxy);
53+
proxyLoader.addContent(new MissileTabRegister());
54+
55+
// proxyLoader.addContent(new NuclearFluidRegister());
56+
proxyLoader.addContent(new MissileBlockRegister());
57+
proxyLoader.addContent(new MissileItemRegister());
58+
proxyLoader.addContent(new MissileEntityRegister());
59+
60+
if (event.getSide() == Side.CLIENT)
61+
{
62+
proxyLoader.addContent(new MissileClientRegister());
63+
}
64+
65+
// proxyLoader.addContent(new NuclearRecipeRegister());
66+
// proxyLoader.addContent(new NuclearWorldGenRegister());
67+
metadata.authorList = CoreReferences.Metadata.AUTHORS;
68+
metadata.autogenerated = false;
69+
metadata.credits = CoreReferences.Metadata.CREDITS;
70+
metadata.description = CoreReferences.Metadata.DESCRIPTION.replace("Physica", MissileReferences.NAME);
71+
metadata.modId = MissileReferences.DOMAIN;
72+
metadata.name = MissileReferences.NAME;
73+
metadata.parent = CoreReferences.DOMAIN;
74+
metadata.updateUrl = CoreReferences.Metadata.UPDATE_URL;
75+
metadata.url = CoreReferences.Metadata.URL;
76+
metadata.version = CoreReferences.VERSION;
77+
proxyLoader.callRegister(LoadPhase.CreativeTabRegister);
78+
proxyLoader.callRegister(LoadPhase.ConfigRegister);
79+
proxyLoader.callRegister(LoadPhase.RegisterObjects);
80+
proxyLoader.callRegister(LoadPhase.PreInitialize);
81+
proxyLoader.callRegister(LoadPhase.ClientRegister);
82+
BlockDispenser.dispenseBehaviorRegistry.putObject(MissileItemRegister.itemGrenade, (IBehaviorDispenseItem) (blockSource, itemStack) ->
83+
{
84+
World world = blockSource.getWorld();
85+
86+
if (!world.isRemote)
87+
{
88+
int x = blockSource.getXInt();
89+
int y = blockSource.getYInt();
90+
int z = blockSource.getZInt();
91+
EnumFacing enumFacing = EnumFacing.getFront(blockSource.getBlockMetadata());
92+
93+
EntityGrenade entity = new EntityGrenade(world, new VectorLocation(x, y, z), itemStack.getItemDamage());
94+
entity.setThrowableHeading(enumFacing.getFrontOffsetX(), 0.1D, enumFacing.getFrontOffsetZ(), 0.5F, 1.0F);
95+
world.spawnEntityInWorld(entity);
96+
}
97+
98+
itemStack.stackSize--;
99+
100+
return itemStack;
101+
});
102+
}
103+
104+
@EventHandler
105+
public void init(FMLInitializationEvent event)
106+
{
107+
proxyLoader.callRegister(LoadPhase.Initialize);
108+
proxyLoader.callRegister(LoadPhase.EntityRegister);
109+
proxyLoader.callRegister(LoadPhase.FluidRegister);
110+
proxyLoader.callRegister(LoadPhase.WorldRegister);
111+
}
112+
113+
@EventHandler
114+
public void postInit(FMLPostInitializationEvent event)
115+
{
116+
proxyLoader.callRegister(LoadPhase.PostInitialize);
117+
}
118+
119+
@EventHandler
120+
public void loadComplete(FMLLoadCompleteEvent event)
121+
{
122+
proxyLoader.callRegister(LoadPhase.OnStartup);
123+
IRecipeRegister.callRegister("Missiles");
124+
}
125+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package physica.missiles.client;
2+
3+
import cpw.mods.fml.client.registry.RenderingRegistry;
4+
import cpw.mods.fml.relauncher.Side;
5+
import cpw.mods.fml.relauncher.SideOnly;
6+
import physica.api.core.load.IContent;
7+
import physica.api.core.load.LoadPhase;
8+
import physica.missiles.client.render.entity.RenderEntityPrimedExplosive;
9+
import physica.missiles.client.render.entity.RenderGrenade;
10+
import physica.missiles.client.render.entity.RenderShrapnelFragment;
11+
import physica.missiles.common.entity.EntityFragment;
12+
import physica.missiles.common.entity.EntityGrenade;
13+
import physica.missiles.common.entity.EntityPrimedExplosive;
14+
15+
@SideOnly(Side.CLIENT)
16+
public class MissileClientRegister implements IContent {
17+
18+
@Override
19+
public void register(LoadPhase phase)
20+
{
21+
if (phase == LoadPhase.ClientRegister)
22+
{
23+
} else if (phase == LoadPhase.PostInitialize)
24+
{
25+
RenderingRegistry.registerEntityRenderingHandler(EntityPrimedExplosive.class, new RenderEntityPrimedExplosive());
26+
RenderingRegistry.registerEntityRenderingHandler(EntityFragment.class, new RenderShrapnelFragment());
27+
RenderingRegistry.registerEntityRenderingHandler(EntityGrenade.class, new RenderGrenade());
28+
}
29+
}
30+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package physica.missiles.client.render.entity;
2+
3+
import org.lwjgl.opengl.GL11;
4+
5+
import cpw.mods.fml.client.FMLClientHandler;
6+
import cpw.mods.fml.relauncher.Side;
7+
import cpw.mods.fml.relauncher.SideOnly;
8+
import net.minecraft.client.renderer.RenderBlocks;
9+
import net.minecraft.client.renderer.entity.Render;
10+
import net.minecraft.entity.Entity;
11+
import net.minecraft.util.ResourceLocation;
12+
import physica.missiles.common.MissileBlockRegister;
13+
import physica.missiles.common.entity.EntityPrimedExplosive;
14+
15+
@SideOnly(Side.CLIENT)
16+
public class RenderEntityPrimedExplosive extends Render {
17+
18+
private RenderBlocks blockRenderer = new RenderBlocks();
19+
20+
public RenderEntityPrimedExplosive() {
21+
shadowSize = 0.5F;
22+
}
23+
24+
@Override
25+
public void doRender(Entity par1Entity, double x, double y, double z, float par8, float par9)
26+
{
27+
EntityPrimedExplosive entityExplosive = (EntityPrimedExplosive) par1Entity;
28+
if (entityExplosive.fuse > 0)
29+
{
30+
GL11.glPushMatrix();
31+
GL11.glTranslatef((float) x, (float) y, (float) z);
32+
float f2;
33+
34+
if (entityExplosive.fuse - par9 + 1.0F < 10.0F)
35+
{
36+
f2 = 1.0F - (entityExplosive.fuse - par9 + 1.0F) / 10.0F;
37+
38+
if (f2 < 0.0F)
39+
{
40+
f2 = 0.0F;
41+
}
42+
43+
if (f2 > 1.0F)
44+
{
45+
f2 = 1.0F;
46+
}
47+
48+
f2 *= f2;
49+
f2 *= f2;
50+
float f3 = 1.0F + f2 * 0.3F;
51+
GL11.glScalef(f3, f3, f3);
52+
}
53+
54+
f2 = (1.0F - (entityExplosive.fuse - par9 + 1.0F) / 100.0F) * 0.8F;
55+
FMLClientHandler.instance().getClient().renderEngine.bindTexture(FMLClientHandler.instance().getClient().renderEngine.getResourceLocation(0));
56+
blockRenderer.renderBlockAsItem(MissileBlockRegister.primedBlock, entityExplosive.explosiveID, entityExplosive.getBrightness(par9));
57+
if (entityExplosive.fuse / 5 % 2 == 0)
58+
{
59+
GL11.glDisable(GL11.GL_TEXTURE_2D);
60+
GL11.glDisable(GL11.GL_LIGHTING);
61+
GL11.glEnable(GL11.GL_BLEND);
62+
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_DST_ALPHA);
63+
GL11.glColor4f(1.0F, 1.0F, 1.0F, f2);
64+
blockRenderer.renderBlockAsItem(MissileBlockRegister.primedBlock, entityExplosive.explosiveID, 1.0F);
65+
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
66+
GL11.glDisable(GL11.GL_BLEND);
67+
GL11.glEnable(GL11.GL_LIGHTING);
68+
GL11.glEnable(GL11.GL_TEXTURE_2D);
69+
}
70+
71+
GL11.glPopMatrix();
72+
}
73+
}
74+
75+
@Override
76+
protected ResourceLocation getEntityTexture(Entity entity)
77+
{
78+
return null;
79+
}
80+
81+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package physica.missiles.client.render.entity;
2+
3+
import org.lwjgl.opengl.GL11;
4+
import org.lwjgl.opengl.GL12;
5+
6+
import cpw.mods.fml.client.FMLClientHandler;
7+
import cpw.mods.fml.relauncher.Side;
8+
import cpw.mods.fml.relauncher.SideOnly;
9+
import net.minecraft.client.renderer.Tessellator;
10+
import net.minecraft.client.renderer.entity.Render;
11+
import net.minecraft.entity.Entity;
12+
import net.minecraft.util.IIcon;
13+
import net.minecraft.util.ResourceLocation;
14+
import physica.missiles.common.MissileItemRegister;
15+
import physica.missiles.common.entity.EntityGrenade;
16+
17+
@SideOnly(Side.CLIENT)
18+
public class RenderGrenade extends Render {
19+
20+
@Override
21+
public void doRender(Entity entity, double x, double y, double z, float par8, float par9)
22+
{
23+
/** Renders the grenade based on the explosive ID. */
24+
IIcon icon = MissileItemRegister.itemGrenade.getIconFromDamage(((EntityGrenade) entity).explosiveID);
25+
26+
GL11.glPushMatrix();
27+
GL11.glTranslatef((float) x, (float) y + 0.4f, (float) z);
28+
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
29+
GL11.glScalef(0.6F, 0.6F, 0.6F);
30+
FMLClientHandler.instance().getClient().renderEngine.bindTexture(FMLClientHandler.instance().getClient().renderEngine.getResourceLocation(MissileItemRegister.itemGrenade.getSpriteNumber()));
31+
Tessellator tessellator = Tessellator.instance;
32+
renderIcon(tessellator, icon);
33+
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
34+
GL11.glPopMatrix();
35+
}
36+
37+
private void renderIcon(Tessellator par1Tessellator, IIcon icon)
38+
{
39+
float f = icon.getMinU();
40+
float f1 = icon.getMaxU();
41+
float f2 = icon.getMinV();
42+
float f3 = icon.getMaxV();
43+
float f4 = 1.0F;
44+
float f5 = 0.5F;
45+
float f6 = 0.25F;
46+
GL11.glRotatef(180.0F - renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
47+
GL11.glRotatef(-renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
48+
par1Tessellator.startDrawingQuads();
49+
par1Tessellator.setNormal(0.0F, 1.0F, 0.0F);
50+
par1Tessellator.addVertexWithUV(0.0F - f5, 0.0F - f6, 0.0D, f, f3);
51+
par1Tessellator.addVertexWithUV(f4 - f5, 0.0F - f6, 0.0D, f1, f3);
52+
par1Tessellator.addVertexWithUV(f4 - f5, f4 - f6, 0.0D, f1, f2);
53+
par1Tessellator.addVertexWithUV(0.0F - f5, f4 - f6, 0.0D, f, f2);
54+
par1Tessellator.draw();
55+
}
56+
57+
@Override
58+
protected ResourceLocation getEntityTexture(Entity entity)
59+
{
60+
return null;
61+
}
62+
}

0 commit comments

Comments
 (0)