Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ mcmod_Contributors=Pabilo8,Carver,Sch
modForge=1.12.2-14.23.5.2847
modMappings=snapshot_20171003
#Project Data
modVersion=0.3.1-dev4
modVersion=0.3.1-dev5
modGroup=pl.pabilo8
modName=immersiveintelligence
# Private Team II Maven
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,10 @@ protected IIRecipeLayout initRecipeLayout()
.withMultiblockModel(32+8, -8)
.build();
}

@Override
public boolean matchesSubCategory(String subCategory)
{
return isWashing^(!subCategory.equals("ii.washing"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,16 @@ public String getName()
return name;
}

/**
* @param subCategory a name of the subcategory
* @return true if the recipe matches the given subcategory, false otherwise
* @implNote when the recipe does not implement a split into categories, the category name is passed as subCategory instead
*/
public boolean matchesSubCategory(String subCategory)
{
return true;
}

private static class MultiblockRecipeRegistry<T extends IIMultiblockRecipe>
{
private final HashMap<String, T> recipesMap = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import pl.pabilo8.immersiveintelligence.api.data.operations.DataOperation;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeExpression;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeInteger;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeNull;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeString;
import pl.pabilo8.immersiveintelligence.api.data.types.generic.DataType;

Expand All @@ -22,7 +23,12 @@ public DataType execute(DataPacket packet, DataTypeExpression data)
{
DataType t1 = packet.getVarInType(DataTypeString.class, data.getArgument(0));
DataTypeInteger t2 = packet.getVarInType(DataTypeInteger.class, data.getArgument(1));

return new DataTypeString(String.valueOf(t1.toString().charAt(t2.value)));
try
{
return new DataTypeString(String.valueOf(t1.toString().charAt(t2.value)));
} catch(IndexOutOfBoundsException e)
{
return new DataTypeNull();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ public class DataOperationIsNull extends DataOperation
@Override
public DataType execute(DataPacket packet, DataTypeExpression data)
{
return new DataTypeBoolean(packet.getVarInType(DataType.class, data.getArgument(0)) instanceof DataTypeNull);
return new DataTypeBoolean(packet.evaluateVariable(data.getArgument(0), false) instanceof DataTypeNull);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ public class DataOperationIsSameType extends DataOperation
@Override
public DataType execute(DataPacket packet, DataTypeExpression data)
{
return new DataTypeBoolean(data.getArgument(0).getClass()==data.getArgument(1).getClass());
DataType t1 = packet.evaluateVariable(data.getArgument(0), false);
DataType t2 = packet.evaluateVariable(data.getArgument(1), false);
return new DataTypeBoolean(t1.getClass()==t2.getClass());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import pl.pabilo8.immersiveintelligence.api.data.operations.DataOperation;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeBoolean;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeExpression;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeInteger;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeString;
import pl.pabilo8.immersiveintelligence.api.data.types.generic.DataType;
import pl.pabilo8.immersiveintelligence.api.data.types.generic.NumericDataType;

import javax.annotation.Nonnull;

Expand All @@ -26,8 +26,8 @@ public DataType execute(DataPacket packet, DataTypeExpression data)
return type;
else if(type instanceof DataTypeString)
return new DataTypeBoolean(((DataTypeString)type).value.equalsIgnoreCase("TRUE"));
else if(type instanceof DataTypeInteger)
return new DataTypeBoolean(((DataTypeInteger)type).value > 0);
else if(type instanceof NumericDataType)
return new DataTypeBoolean(((NumericDataType)type).floatValue() > 0);

return new DataTypeBoolean(false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

import pl.pabilo8.immersiveintelligence.api.data.DataPacket;
import pl.pabilo8.immersiveintelligence.api.data.operations.DataOperation;
import pl.pabilo8.immersiveintelligence.api.data.operations.DataOperation.DataOperationMeta;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeBoolean;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeExpression;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeFloat;
import pl.pabilo8.immersiveintelligence.api.data.types.generic.DataType;
import pl.pabilo8.immersiveintelligence.api.data.types.generic.NumericDataType;
import pl.pabilo8.immersiveintelligence.common.util.IIStringUtil;

import javax.annotation.Nonnull;
Expand All @@ -13,14 +16,18 @@
* @author Pabilo8 (pabilo@iiteam.net)
* @since 05.07.2019
*/
@DataOperation.DataOperationMeta(name = "to_float", allowedTypes = {DataType.class}, expression = "<float>", params = {"casted"}, expectedResult = DataTypeFloat.class)
@DataOperationMeta(name = "to_float", allowedTypes = {DataType.class}, expression = "<float>", params = {"casted"}, expectedResult = DataTypeFloat.class)
public class DataOperationToFloat extends DataOperation
{
@Nonnull
@Override
public DataType execute(DataPacket packet, DataTypeExpression data)
{
DataType f = packet.evaluateVariable(data.getArgument(0), false);
return new DataTypeFloat(IIStringUtil.parseFloat(packet.getVarInType(DataType.class, f).toString()));
if(f instanceof NumericDataType)
return new DataTypeFloat(((NumericDataType)f).floatValue());
if(f instanceof DataTypeBoolean)
return new DataTypeFloat(((DataTypeBoolean)f).value?1f: 0f);
return new DataTypeFloat(IIStringUtil.parseFloat(f.toString()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import pl.pabilo8.immersiveintelligence.api.data.DataPacket;
import pl.pabilo8.immersiveintelligence.api.data.operations.DataOperation;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeBoolean;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeExpression;
import pl.pabilo8.immersiveintelligence.api.data.types.DataTypeInteger;
import pl.pabilo8.immersiveintelligence.api.data.types.generic.DataType;
import pl.pabilo8.immersiveintelligence.api.data.types.generic.NumericDataType;
import pl.pabilo8.immersiveintelligence.common.util.IIStringUtil;

import javax.annotation.Nonnull;
Expand All @@ -21,6 +23,10 @@ public class DataOperationToInteger extends DataOperation
public DataType execute(DataPacket packet, DataTypeExpression data)
{
DataType f = packet.evaluateVariable(data.getArgument(0), false);
return new DataTypeInteger(IIStringUtil.parseInt(packet.getVarInType(DataType.class, f).toString()));
if(f instanceof NumericDataType)
return new DataTypeInteger(((NumericDataType)f).intValue());
if(f instanceof DataTypeBoolean)
return new DataTypeInteger(((DataTypeBoolean)f).value?1: 0);
return new DataTypeInteger(IIStringUtil.parseInt(f.toString()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainerCreative;
Expand Down Expand Up @@ -245,6 +246,7 @@ else if(item==IIContent.itemMortar)
model.bipedRightArm.rotateAngleX = model.bipedLeftArm.rotateAngleX;
}
else if((item instanceof ItemIIGunBase||item instanceof ItemIIRailgunOverride)&&hand!=EnumHand.OFF_HAND)
{
if(right)
{
living.setRenderYawOffset(living.rotationYawHead);
Expand All @@ -268,49 +270,50 @@ else if((item instanceof ItemIIGunBase||item instanceof ItemIIRailgunOverride)&&

model.bipedRightArm.rotationPointZ += IIMath.clampedLerp3Par(0, 2f, 0, v);
}
else if(living.isSneaking()&&item==IIContent.itemBinoculars)
{
model.bipedRightArm.rotateAngleY = model.bipedHead.rotateAngleY-0.25f;
model.bipedLeftArm.rotateAngleY = model.bipedHead.rotateAngleY+0.25f;
}
else if(living.isSneaking()&&item==IIContent.itemBinoculars)
{
model.bipedRightArm.rotateAngleY = model.bipedHead.rotateAngleY-0.25f;
model.bipedLeftArm.rotateAngleY = model.bipedHead.rotateAngleY+0.25f;

model.bipedRightArm.rotateAngleX = model.bipedHead.rotateAngleX-2f;
model.bipedLeftArm.rotateAngleX = model.bipedRightArm.rotateAngleX;
model.bipedRightArm.rotateAngleX = model.bipedHead.rotateAngleX-2f;
model.bipedLeftArm.rotateAngleX = model.bipedRightArm.rotateAngleX;

int id = heldItem.getMetadata();
BinocularsRenderer.INSTANCE.render(id==1?ItemNBTHelper.getBoolean(heldItem, "wasUsed")?2: 1: id, model.bipedHead, true);
}
else if(item==IIContent.itemMineDetector)
{
float v = MineDetectorRenderer.instance.renderBase(living, 2.125f, true);
int id = heldItem.getMetadata();
BinocularsRenderer.INSTANCE.render(id==1?ItemNBTHelper.getBoolean(heldItem, "wasUsed")?2: 1: id, model.bipedHead, true);
}
else if(item==IIContent.itemMineDetector)
{
float v = MineDetectorRenderer.instance.renderBase(living, 2.125f, true);

model.bipedRightArm.rotateAngleY = model.bipedBody.rotateAngleY-0.45f;
model.bipedLeftArm.rotateAngleY = model.bipedBody.rotateAngleY+0.45f;
model.bipedRightArm.rotateAngleY = model.bipedBody.rotateAngleY-0.45f;
model.bipedLeftArm.rotateAngleY = model.bipedBody.rotateAngleY+0.45f;

model.bipedRightArm.rotateAngleX = -1.25f-(1f-v)*0.5f;
model.bipedRightArm.rotateAngleX = -1.25f-(1f-v)*0.5f;
model.bipedLeftArm.rotateAngleX = model.bipedRightArm.rotateAngleX;
}
else if(item==IIContent.itemNavalMine)
if(right)
{
model.bipedRightArm.rotateAngleX -= 0.5f;
model.bipedLeftArm.rotateAngleX = model.bipedRightArm.rotateAngleX;
}
else if(item==IIContent.itemNavalMine)
if(right)
{
model.bipedRightArm.rotateAngleX -= 0.5f;
model.bipedLeftArm.rotateAngleX = model.bipedRightArm.rotateAngleX;
}
else
{
model.bipedLeftArm.rotateAngleX -= 0.5f;
model.bipedRightArm.rotateAngleX = model.bipedLeftArm.rotateAngleX;
}
else if(item==IIContent.itemGrenade)
else
{
float use = 1f-MathHelper.clamp(((EntityLivingBase)entity).getItemInUseCount()/(float)heldItem.getMaxItemUseDuration(), 0, 1);
if(right)
{
model.rightArmPose = ArmPose.EMPTY;
//model.leftArmPose=ArmPose.EMPTY;
float hh = -(4.5f-model.bipedHead.rotateAngleX);
model.bipedRightArm.rotateAngleX = use!=1?use > 0f?use < 0.35f?use/0.35f*hh: hh: 0f: 0f;
}
model.bipedLeftArm.rotateAngleX -= 0.5f;
model.bipedRightArm.rotateAngleX = model.bipedLeftArm.rotateAngleX;
}
else if(item==IIContent.itemGrenade)
{
float use = 1f-MathHelper.clamp(((EntityLivingBase)entity).getItemInUseCount()/(float)heldItem.getMaxItemUseDuration(), 0, 1);
if(right)
{
model.rightArmPose = ArmPose.EMPTY;
//model.leftArmPose=ArmPose.EMPTY;
float hh = -(4.5f-model.bipedHead.rotateAngleX);
model.bipedRightArm.rotateAngleX = use!=1?use > 0f?use < 0.35f?use/0.35f*hh: hh: 0f: 0f;
}
}

}
}
Expand Down Expand Up @@ -564,6 +567,8 @@ private void onRenderTextOverlay(Pre event, EntityPlayer player, RayTraceResult
{
TileEntity te = mouseOver.typeOfHit==Type.BLOCK?player.world.getTileEntity(mouseOver.getBlockPos()): null;
Entity entityHit = mouseOver.entityHit;
GlStateManager.color(1f, 1f, 1f, 1f);
GlStateManager.enableBlend();

for(TextOverlayBase hud : TEXT_OVERLAYS)
if(hud.shouldDraw(player, mouseOver, te, entityHit))
Expand Down Expand Up @@ -597,6 +602,8 @@ private void onRenderTextOverlay(Pre event, EntityPlayer player, RayTraceResult
int height = event.getResolution().getScaledHeight();
if(ClientUtils.mc().gameSettings.showSubtitles)
height -= 40;
GlStateManager.color(1f, 1f, 1f, 1f);
GlStateManager.enableBlend();
for(GuiOverlayLayer key : HUDs.keys())
for(GuiOverlayBase hud : HUDs.get(key))
if(hud.shouldDraw(player, mouseOver))
Expand Down Expand Up @@ -903,7 +910,11 @@ public void onRenderHand(RenderSpecificHandEvent event)

if(stack.getItem()==IIContent.itemMineDetector&&event.getHand()==EnumHand.MAIN_HAND)
{
MineDetectorRenderer.instance.renderBase(ClientUtils.mc().player, 2.125f, false);
GlStateManager.pushMatrix();
EntityPlayerSP player = ClientUtils.mc().player;
MineDetectorRenderer.instance.renderBase(player, 2.125f, false);
GlStateManager.popMatrix();

event.setCanceled(true);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,14 @@
import pl.pabilo8.immersiveintelligence.client.util.IICustomStateMapper;
import pl.pabilo8.immersiveintelligence.client.util.IIKeybind;
import pl.pabilo8.immersiveintelligence.client.util.ShaderUtil;
import pl.pabilo8.immersiveintelligence.client.util.amt.renderer.IIItemRendererAMT;
import pl.pabilo8.immersiveintelligence.client.util.amt.renderer.IIItemRendererAMT.RegisteredItemRenderer;
import pl.pabilo8.immersiveintelligence.client.util.amt.renderer.IITileRenderer.RegisteredTileRenderer;
import pl.pabilo8.immersiveintelligence.client.util.font.IIFontRenderer;
import pl.pabilo8.immersiveintelligence.client.util.font.IIFontRendererCustomGlyphs;
import pl.pabilo8.immersiveintelligence.common.*;
import pl.pabilo8.immersiveintelligence.common.CommonProxy;
import pl.pabilo8.immersiveintelligence.common.IIConfigHandler.IIConfig.Factions;
import pl.pabilo8.immersiveintelligence.common.IIContent;
import pl.pabilo8.immersiveintelligence.common.IIGUI;
import pl.pabilo8.immersiveintelligence.common.IILogger;
import pl.pabilo8.immersiveintelligence.common.ammo.components.factory.AmmoComponentFluid;
import pl.pabilo8.immersiveintelligence.common.block.data_device.tileentity.TileEntityDataMerger;
import pl.pabilo8.immersiveintelligence.common.block.data_device.tileentity.TileEntityRedstoneBuffer;
Expand Down Expand Up @@ -417,17 +418,19 @@ public void preInit(FMLPreInitializationEvent event)
registerEntityRenderer(EntityAMTTactile.class, EntityRenderNone::new);

//Hand Weapons
registerItemRenderer(IIContent.itemAssaultRifle, new AssaultRifleRenderer());
registerItemRenderer(IIContent.itemAssaultRifle, new AssaultRifleRenderer());
registerItemRenderer(IIContent.itemRifle, new RifleRenderer());
registerItemRenderer(IIContent.itemSubmachinegun, new SubmachinegunRenderer());
new AssaultRifleRenderer();
new AssaultRifleRenderer();
new RifleRenderer();
new SubmachinegunRenderer();

//Tools
//TODO: 22.09.2024 binoculars
registerItemRenderer(IIContent.itemRadioTuner, new RadioTunerRenderer());
registerItemRenderer(IIContent.itemTachometer, new TachometerRenderer());
new RadioTunerRenderer();
new TachometerRenderer();
new ElectricHammerRenderer();
new ElectricWrenchRenderer();
new ElectricWirecutterRenderer();
//TODO: 22.09.2024 mine detector renderer
//TODO: 22.09.2024 power tool 3D models

for(IAmmoTypeItem<?, ?> bullet : AmmoRegistry.getAllAmmoItems())
{
Expand Down Expand Up @@ -556,12 +559,18 @@ else if(bullet instanceof ItemIIAmmoRevolver)


//Gate renderers
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWoodenFenceGate.class, new FenceGateRenderer<>("multiblock/wooden_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWoodenChainFenceGate.class, new FenceGateRenderer<>("multiblock/wooden_chain_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteelFenceGate.class, new FenceGateRenderer<>("multiblock/steel_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteelChainFenceGate.class, new FenceGateRenderer<>("multiblock/steel_chain_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAluminiumFenceGate.class, new FenceGateRenderer<>("multiblock/aluminium_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAluminiumChainFenceGate.class, new FenceGateRenderer<>("multiblock/aluminium_chain_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWoodenFenceGate.class, new FenceGateRenderer<>(
TileEntityWoodenFenceGate.class, "multiblock/wooden_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWoodenChainFenceGate.class, new FenceGateRenderer<>(
TileEntityWoodenChainFenceGate.class, "multiblock/wooden_chain_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteelFenceGate.class, new FenceGateRenderer<>(
TileEntitySteelFenceGate.class, "multiblock/steel_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteelChainFenceGate.class, new FenceGateRenderer<>(
TileEntitySteelChainFenceGate.class, "multiblock/steel_chain_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAluminiumFenceGate.class, new FenceGateRenderer<>(
TileEntityAluminiumFenceGate.class, "multiblock/aluminium_gate"));
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAluminiumChainFenceGate.class, new FenceGateRenderer<>(
TileEntityAluminiumChainFenceGate.class, "multiblock/aluminium_chain_gate"));

//GUIs (auto texture registering)
IIGUI.initClientGUIs();
Expand All @@ -570,14 +579,6 @@ else if(bullet instanceof ItemIIAmmoRevolver)
IICompatModule.doModulesClientPreInit();
}

private <I extends Item> void registerItemRenderer(I item, IIItemRendererAMT<I> renderer)
{
item.setTileEntityItemStackRenderer(renderer);
RegisteredItemRenderer annotation = IIUtils.getAnnotation(RegisteredItemRenderer.class, renderer);
if(annotation!=null)
renderer.subscribeToList(annotation.name());
}

private <T extends Entity> void registerEntityRenderer(Class<T> entityClass, IRenderFactory<? super T> renderFactory)
{
RenderingRegistry.registerEntityRenderingHandler(entityClass, renderFactory);
Expand Down
Loading
Loading