hi03
04/02/2024, 5:57 PMjs
function renderWireDynamic(tileEntity, connection, wireVec, par8, pass) {
︙
var isOldPass = pass === undefined;//1.7.10用
︙
var tsl = NGTTessellator.instance;
var world = tileEntity.func_145831_w();
var x = tileEntity.field_145851_c;
var y = tileEntity.field_145848_d;
var z = tileEntity.field_145849_e;
var lightLevel = NGTUtil.getLightValue(world, x, y, z);//明るさを取得?
︙
if (isOldPass || pass === 1) {
GL11.glPushMatrix();
GLHelper.setBrightness(lightLevel);//明るさを適用?
renderer.rotate(-pit, 'X', 0, 0, 0);
GL11.glScalef(1, 1, fenceRate);
renderTessellator(tsl, fence, height);
GL11.glPopMatrix();
}
︙
}
function renderTessellator(tsl, data, height) {
tsl.startDrawingQuads();
tsl.addVertexWithUV(data[0][0], data[0][1] - height, data[0][2], data[0][3], data[0][4]);
tsl.addVertexWithUV(data[1][0], data[1][1] - height, data[1][2], data[1][3], data[1][4]);
tsl.addVertexWithUV(data[2][0], data[2][1], data[2][2], data[2][3], data[2][4]);
tsl.addVertexWithUV(data[3][0], data[3][1], data[3][2], data[3][3], data[3][4]);
tsl.draw();
}
としたところ真っ暗なときの明るさを返しているようで、周囲をブロックで囲ったりしても変化がありませんでした。
もし正しい実装方法を知っている方がいらっしゃいましたらご教示ください。piposen_0801
04/02/2024, 6:00 PMhi03
04/02/2024, 6:03 PMpiposen_0801
04/02/2024, 6:10 PMentity.field_70170_p.func_72971_b(0)
で太陽の光量を取得することができますが、こちらはどうでしょうか。piposen_0801
04/02/2024, 6:13 PMpiposen_0801
04/02/2024, 6:17 PMpiposen_0801
04/02/2024, 6:28 PMhi03
04/28/2024, 4:56 PMhi03
04/28/2024, 5:26 PMjs
function renderWireDynamic(tileEntity, connection, wireVec, par8, pass) {
︙
var isOldPass = pass === undefined;//1.7.10用
︙
var tsl = NGTTessellator.instance;
var lightLevel = 0;
var world = tileEntity.func_145831_w();
if (!isOldVer) {
var blockPos = tileEntity.func_174877_v();
var skyLightLevel = world.func_175642_b(Packages.net.minecraft.world.EnumSkyBlock.SKY, blockPos) * 16;
var blockLightLevel = world.func_175642_b(Packages.net.minecraft.world.EnumSkyBlock.BLOCK, blockPos) * 16;
lightLevel = (skyLightLevel << 16) + blockLightLevel;
}
else {
var posX = tileEntity.field_145851_c;
var posY = tileEntity.field_145848_d;
var posZ = tileEntity.field_145849_e;
var skyLightLevel = world.func_72972_b(Packages.net.minecraft.world.EnumSkyBlock.Sky, posX, posY, posZ) * 16;
var blockLightLevel = world.func_72972_b(Packages.net.minecraft.world.EnumSkyBlock.Block, posX, posY, posZ) * 16;
lightLevel = (skyLightLevel << 16) + blockLightLevel;
}
︙
if (isOldPass || pass === 1) {
GL11.glPushMatrix();
GLHelper.disableLighting();//---これを追加
GLHelper.setBrightness(lightLevel);
renderer.rotate(-pit, 'X', 0, 0, 0);
GL11.glScalef(1, 1, fenceRate);
renderTessellator(tsl, fence, height);
GLHelper.enableLighting();//---これを追加
GL11.glPopMatrix();
}
︙
}
function renderTessellator(tsl, data, height) {
tsl.startDrawingQuads();
tsl.addVertexWithUV(data[0][0], data[0][1] - height, data[0][2], data[0][3], data[0][4]);
tsl.addVertexWithUV(data[1][0], data[1][1] - height, data[1][2], data[1][3], data[1][4]);
tsl.addVertexWithUV(data[2][0], data[2][1], data[2][2], data[2][3], data[2][4]);
tsl.addVertexWithUV(data[3][0], data[3][1], data[3][2], data[3][3], data[3][4]);
tsl.draw();
}