More porting work

This commit is contained in:
tterrag 2020-03-28 22:10:23 -04:00
parent 7e5406eb05
commit 844dc42501
59 changed files with 261 additions and 186 deletions

View File

@ -60,10 +60,11 @@ public enum AllEntities {
}
@SuppressWarnings("unchecked") // TODO 1.15 this generic stuff is incompatible with the enum system - need strong types
@OnlyIn(value = Dist.CLIENT)
public static void registerRenderers() {
// RenderingRegistry.registerEntityRenderingHandler(CardboardBoxEntity.class, CardboardBoxEntityRenderer::new);
RenderingRegistry.registerEntityRenderingHandler(ContraptionEntity.class, ContraptionEntityRenderer::new);
RenderingRegistry.registerEntityRenderingHandler((EntityType<ContraptionEntity>) CONTRAPTION.type, ContraptionEntityRenderer::new);
}
}

View File

@ -169,7 +169,7 @@ public enum AllItems {
}
private static Properties defaultProperties(AllItems item) {
return includeInItemGroup().setTEISR(() -> item::getRenderer);
return includeInItemGroup().setISTER(() -> item::getRenderer);
}
private static int module() {

View File

@ -54,7 +54,7 @@ public enum AllKeys {
}
public static boolean isKeyDown(int key) {
return GLFW.glfwGetKey(Minecraft.getInstance().mainWindow.getHandle(), key) != 0;
return GLFW.glfwGetKey(Minecraft.getInstance().getWindow().getHandle(), key) != 0;
}
public static boolean ctrlDown() {

View File

@ -1,5 +1,6 @@
package com.simibubi.create;
import java.util.function.Function;
import java.util.function.Supplier;
import com.simibubi.create.foundation.behaviour.base.SmartTileEntityRenderer;
@ -88,6 +89,7 @@ import com.simibubi.create.modules.schematics.block.SchematicannonTileEntity;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation;
@ -190,61 +192,62 @@ public enum AllTileEntities {
@OnlyIn(Dist.CLIENT)
public static void registerRenderers() {
bind(SchematicannonTileEntity.class, new SchematicannonRenderer());
bind(SCHEMATICANNON, SchematicannonRenderer::new);
bind(ShaftTileEntity.class, new KineticTileEntityRenderer());
bind(TurntableTileEntity.class, new KineticTileEntityRenderer());
bind(MotorTileEntity.class, new MotorTileEntityRenderer());
bind(EncasedShaftTileEntity.class, new EncasedShaftTileEntityRenderer());
bind(AdjustablePulleyTileEntity.class, new EncasedShaftTileEntityRenderer());
bind(DrillTileEntity.class, new DrillTileEntityRenderer());
bind(SawTileEntity.class, new SawTileEntityRenderer());
bind(EncasedFanTileEntity.class, new EncasedFanTileEntityRenderer());
bind(GearboxTileEntity.class, new GearboxTileEntityRenderer());
bind(GearshiftTileEntity.class, new SplitShaftTileEntityRenderer());
bind(ClutchTileEntity.class, new SplitShaftTileEntityRenderer());
bind(SequencedGearshiftTileEntity.class, new SplitShaftTileEntityRenderer());
bind(BeltTileEntity.class, new BeltTileEntityRenderer());
bind(WaterWheelTileEntity.class, new KineticTileEntityRenderer());
bind(HandCrankTileEntity.class, new HandCrankTileEntityRenderer());
bind(CuckooClockTileEntity.class, new CuckooClockRenderer());
bind(AnalogLeverTileEntity.class, new AnalogLeverTileEntityRenderer());
bind(SHAFT, KineticTileEntityRenderer::new);
bind(TURNTABLE, KineticTileEntityRenderer::new);
bind(MOTOR, MotorTileEntityRenderer::new);
bind(ENCASED_SHAFT, EncasedShaftTileEntityRenderer::new);
bind(ADJUSTABLE_PULLEY, EncasedShaftTileEntityRenderer::new);
bind(DRILL, DrillTileEntityRenderer::new);
bind(SAW, SawTileEntityRenderer::new);
bind(ENCASED_FAN, EncasedFanTileEntityRenderer::new);
bind(GEARBOX, GearboxTileEntityRenderer::new);
bind(GEARSHIFT, SplitShaftTileEntityRenderer::new);
bind(CLUTCH, SplitShaftTileEntityRenderer::new);
bind(SEQUENCED_GEARSHIFT, SplitShaftTileEntityRenderer::new);
bind(BELT, BeltTileEntityRenderer::new);
bind(WATER_WHEEL, KineticTileEntityRenderer::new);
bind(HAND_CRANK, HandCrankTileEntityRenderer::new);
bind(CUCKOO_CLOCK, CuckooClockRenderer::new);
bind(ANALOG_LEVER, AnalogLeverTileEntityRenderer::new);
bind(MechanicalPistonTileEntity.class, new MechanicalPistonTileEntityRenderer());
bind(MechanicalBearingTileEntity.class, new BearingTileEntityRenderer());
bind(ClockworkBearingTileEntity.class, new BearingTileEntityRenderer());
bind(PulleyTileEntity.class, new PulleyRenderer());
bind(HarvesterTileEntity.class, new HarvesterTileEntityRenderer());
bind(MECHANICAL_PISTON, MechanicalPistonTileEntityRenderer::new);
bind(MECHANICAL_BEARING, BearingTileEntityRenderer::new);
bind(CLOCKWORK_BEARING, BearingTileEntityRenderer::new);
bind(ROPE_PULLEY, PulleyRenderer::new);
bind(HARVESTER, HarvesterTileEntityRenderer::new);
bind(CrushingWheelTileEntity.class, new KineticTileEntityRenderer());
bind(MechanicalPressTileEntity.class, new MechanicalPressTileEntityRenderer());
bind(MechanicalMixerTileEntity.class, new MechanicalMixerTileEntityRenderer());
bind(MechanicalCrafterTileEntity.class, new MechanicalCrafterTileEntityRenderer());
bind(SpeedGaugeTileEntity.class, new GaugeTileEntityRenderer(GaugeBlock.Type.SPEED));
bind(StressGaugeTileEntity.class, new GaugeTileEntityRenderer(GaugeBlock.Type.STRESS));
bind(BasinTileEntity.class, new BasinTileEntityRenderer());
bind(DeployerTileEntity.class, new DeployerTileEntityRenderer());
bind(FlywheelTileEntity.class, new FlywheelRenderer());
bind(FurnaceEngineTileEntity.class, new EngineRenderer<>());
bind(SpeedControllerTileEntity.class, new SpeedControllerRenderer());
bind(CRUSHING_WHEEL, KineticTileEntityRenderer::new);
bind(MECHANICAL_PRESS, MechanicalPressTileEntityRenderer::new);
bind(MECHANICAL_MIXER, MechanicalMixerTileEntityRenderer::new);
bind(MECHANICAL_CRAFTER, MechanicalCrafterTileEntityRenderer::new);
bind(SPEED_GAUGE, disp -> new GaugeTileEntityRenderer(disp, GaugeBlock.Type.SPEED));
bind(STRESS_GAUGE, disp -> new GaugeTileEntityRenderer(disp, GaugeBlock.Type.STRESS));
bind(BASIN, BasinTileEntityRenderer::new);
bind(DEPLOYER, DeployerTileEntityRenderer::new);
bind(FLYWHEEL, FlywheelRenderer::new);
bind(FURNACE_ENGINE, EngineRenderer::new);
bind(ROTATION_SPEED_CONTROLLER, SpeedControllerRenderer::new);
bind(RedstoneLinkTileEntity.class, new SmartTileEntityRenderer<>());
bind(ExtractorTileEntity.class, new SmartTileEntityRenderer<>());
bind(LinkedExtractorTileEntity.class, new SmartTileEntityRenderer<>());
bind(TransposerTileEntity.class, new SmartTileEntityRenderer<>());
bind(LinkedTransposerTileEntity.class, new SmartTileEntityRenderer<>());
bind(FunnelTileEntity.class, new SmartTileEntityRenderer<>());
bind(BeltTunnelTileEntity.class, new BeltTunnelTileEntityRenderer());
bind(BeltObserverTileEntity.class, new BeltObserverTileEntityRenderer());
bind(FlexpeaterTileEntity.class, new FlexpeaterTileEntityRenderer());
bind(REDSTONE_BRIDGE, SmartTileEntityRenderer::new);
bind(EXTRACTOR, SmartTileEntityRenderer::new);
bind(LINKED_EXTRACTOR, SmartTileEntityRenderer::new);
bind(TRANSPOSER, SmartTileEntityRenderer::new);
bind(LINKED_TRANSPOSER, SmartTileEntityRenderer::new);
bind(BELT_FUNNEL, SmartTileEntityRenderer::new);
bind(BELT_TUNNEL, BeltTunnelTileEntityRenderer::new);
bind(ENTITY_DETECTOR, BeltObserverTileEntityRenderer::new);
bind(FLEXPEATER, FlexpeaterTileEntityRenderer::new);
// bind(LogisticalControllerTileEntity.class, new LogisticalControllerTileEntityRenderer());
// bind(LogisticiansTableTileEntity.class, new LogisticiansTableTileEntityRenderer());
// bind(LogisticalController, LogisticalControllerTileEntityRenderer::new);
// bind(LogisticiansTable, LogisticiansTableTileEntityRenderer::new);
}
@SuppressWarnings("unchecked") // TODO 1.15 this generic stuff is incompatible with the enum system - need strong types
@OnlyIn(Dist.CLIENT)
private static <T extends TileEntity> void bind(Class<T> clazz, TileEntityRenderer<? super T> renderer) {
ClientRegistry.bindTileEntitySpecialRenderer(clazz, renderer);
private static <T extends TileEntity> void bind(AllTileEntities type, Function<? super TileEntityRendererDispatcher, ? extends TileEntityRenderer<?>> renderer) {
ClientRegistry.bindTileEntityRenderer((TileEntityType<T>) type.type, (Function<TileEntityRendererDispatcher, TileEntityRenderer<T>>) renderer);
}
}

View File

@ -23,6 +23,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BlockModelShapes;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ModelResourceLocation;
import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.resources.IReloadableResourceManager;
import net.minecraft.resources.IResourceManager;
import net.minecraft.util.ResourceLocation;
@ -87,7 +88,7 @@ public class CreateClient {
@OnlyIn(Dist.CLIENT)
public static void onTextureStitch(TextureStitchEvent.Pre event) {
if (!event.getMap().getBasePath().equals("textures"))
if (!event.getMap().getId().equals(AtlasTexture.LOCATION_BLOCKS_TEXTURE))
return;
event.addSprite(new ResourceLocation(Create.ID, "block/belt_animated"));

View File

@ -60,7 +60,7 @@ public final class CreateItemGroup extends ItemGroup {
continue;
if (!item.module.isEnabled())
continue;
IBakedModel model = itemRenderer.getModelWithOverrides(item.asStack());
IBakedModel model = itemRenderer.getItemModelWithOverrides(item.asStack(), Minecraft.getInstance().world, Minecraft.getInstance().player);
if (model.isGui3d() != specialItems)
continue;
if (item.get() instanceof IAddedByOther)

View File

@ -38,7 +38,7 @@ public class DoubleItemIcon implements IDrawable {
secondaryStack = secondarySupplier.get();
}
RenderHelper.enableGUIStandardItemLighting();
RenderHelper.enable();
RenderSystem.color4f(1, 1, 1, 1);
RenderSystem.enableDepthTest();
RenderSystem.pushMatrix();

View File

@ -55,14 +55,14 @@ public class BlastingViaFanCategory extends ProcessingViaFanCategory<AbstractCoo
RenderSystem.pushMatrix();
RenderSystem.translated(0, 200, 0);
RenderSystem.rotated(90, 1, 0, 0);
RenderSystem.rotatef(90, 1, 0, 0);
ScreenElementRenderer.renderBlock(() -> state);
RenderSystem.popMatrix();
RenderSystem.pushMatrix();
RenderSystem.translated(0, 200, 0);
RenderSystem.rotated(90, 1, 0, 0);
RenderSystem.rotated(270, 0, 0, 1);
RenderSystem.rotatef(90, 1, 0, 0);
RenderSystem.rotatef(270, 0, 0, 1);
ScreenElementRenderer.renderBlock(() -> state);
RenderSystem.popMatrix();

View File

@ -64,8 +64,8 @@ public abstract class ProcessingViaFanCategory<T extends IRecipe<?>> implements
RenderSystem.enableDepthTest();
RenderSystem.translated(28, 18, 0);
RenderSystem.rotated(10.5, -1f, 0, 0);
RenderSystem.rotated(15.5, 0, 1, 0);
RenderSystem.rotatef(10.5f, -1f, 0, 0);
RenderSystem.rotatef(15.5f, 0, 1, 0);
RenderSystem.scaled(.6f, .6f, .6f);
ScreenElementRenderer.renderBlock(this::renderFanCasing);
@ -73,18 +73,18 @@ public abstract class ProcessingViaFanCategory<T extends IRecipe<?>> implements
float angle = AnimatedKinetics.getCurrentAngle() * 12;
float t = 25;
RenderSystem.translatef(t, -t, t);
RenderSystem.rotated(angle, 0, 0, 1);
RenderSystem.rotatef(angle, 0, 0, 1);
RenderSystem.translatef(-t, t, -t);
RenderSystem.translatef(t, 0, 175);
RenderSystem.rotated(90, 0, 1, 0);
RenderSystem.rotatef(90, 0, 1, 0);
RenderSystem.translatef(-t, 0, -175);
ScreenElementRenderer.renderModel(this::renderFanInner);
RenderSystem.popMatrix();
RenderSystem.translated(-10, 0, 95);
RenderSystem.rotated(7, 0, 1, 0);
RenderSystem.rotatef(7, 0, 1, 0);
renderAttachedBlock();
RenderSystem.popMatrix();

View File

@ -116,14 +116,14 @@ public class SplashingCategory extends ProcessingViaFanCategory<SplashingRecipe>
RenderSystem.pushMatrix();
RenderSystem.translated(0, 200, 0);
RenderSystem.rotated(90, 1, 0, 0);
RenderSystem.rotatef(90, 1, 0, 0);
ScreenElementRenderer.renderBlock(() -> state);
RenderSystem.popMatrix();
RenderSystem.pushMatrix();
RenderSystem.translated(0, 200, 0);
RenderSystem.rotated(90, 1, 0, 0);
RenderSystem.rotated(270, 0, 0, 1);
RenderSystem.rotatef(90, 1, 0, 0);
RenderSystem.rotatef(270, 0, 0, 1);
ScreenElementRenderer.renderBlock(() -> state);
RenderSystem.popMatrix();

View File

@ -64,8 +64,8 @@ public class AnimatedCrafter extends AnimatedKinetics {
private IBakedModel cogwheel(boolean forward) {
float t = 25;
RenderSystem.translatef(t, -t, -t);
RenderSystem.rotated(getCurrentAngle() * 2 * (forward ? 1 : -1), 0, 0, 1);
RenderSystem.rotated(90, 1, 0, 0);
RenderSystem.rotatef(getCurrentAngle() * 2 * (forward ? 1 : -1), 0, 0, 1);
RenderSystem.rotatef(90, 1, 0, 0);
RenderSystem.translatef(-t, t, t);
return AllBlockPartials.SHAFTLESS_COGWHEEL.get();
}

View File

@ -37,7 +37,7 @@ public class AnimatedCrushingWheels extends AnimatedKinetics {
float t = 25;
RenderSystem.translatef(t, -t, t);
RenderSystem.rotated(angle, 0, 0, 1);
RenderSystem.rotatef(angle, 0, 0, 1);
RenderSystem.translatef(-t, t, -t);
return AllBlocks.CRUSHING_WHEEL.get().getDefaultState().with(BlockStateProperties.AXIS, Axis.X);
@ -49,7 +49,7 @@ public class AnimatedCrushingWheels extends AnimatedKinetics {
float t = 25;
RenderSystem.translatef(t, -t, t);
RenderSystem.rotated(angle, 0, 0, 1);
RenderSystem.rotatef(angle, 0, 0, 1);
RenderSystem.translatef(-t, t, -t);
return AllBlocks.CRUSHING_WHEEL.get().getDefaultState().with(BlockStateProperties.AXIS, Axis.X);

View File

@ -56,7 +56,7 @@ public class AnimatedMixer extends AnimatedKinetics {
private IBakedModel cogwheel() {
float t = 25;
RenderSystem.translatef(t, -t, -t);
RenderSystem.rotated(getCurrentAngle() * 2, 0, 1, 0);
RenderSystem.rotatef(getCurrentAngle() * 2, 0, 1, 0);
RenderSystem.translatef(-t, t, t);
return AllBlockPartials.SHAFTLESS_COGWHEEL.get();
}
@ -74,7 +74,7 @@ public class AnimatedMixer extends AnimatedKinetics {
float t = 25;
RenderSystem.translatef(0, 51, 0);
RenderSystem.translatef(t, -t, -t);
RenderSystem.rotated(getCurrentAngle() * 4, 0, 1, 0);
RenderSystem.rotatef(getCurrentAngle() * 4, 0, 1, 0);
RenderSystem.translatef(-t, t, t);
return AllBlockPartials.MECHANICAL_MIXER_HEAD.get();
}

View File

@ -66,7 +66,7 @@ public class AnimatedPress extends AnimatedKinetics {
private BlockState shaft() {
float t = 25;
RenderSystem.translatef(t, -t, -t);
RenderSystem.rotated(getCurrentAngle() * 2, 1, 0, 0);
RenderSystem.rotatef(getCurrentAngle() * 2, 1, 0, 0);
RenderSystem.translatef(-t, t, t);
return AllBlocks.SHAFT.get().getDefaultState().with(BlockStateProperties.AXIS, Axis.Z);
}

View File

@ -46,7 +46,7 @@ public class AnimatedSaw extends AnimatedKinetics {
private BlockState shaft() {
float t = 25;
RenderSystem.translatef(t, -t, t);
RenderSystem.rotated(-getCurrentAngle() * 2, 0, 0, 1);
RenderSystem.rotatef(-getCurrentAngle() * 2, 0, 0, 1);
RenderSystem.translatef(-t, t, -t);
return AllBlocks.SHAFT.get().getDefaultState().with(BlockStateProperties.AXIS, Axis.X);
}

View File

@ -76,7 +76,7 @@ public class ValueBox {
RenderSystem.translated(-7 - font.getStringWidth(countString), 10, 10 + 1 / 4f);
double scale = 1.5;
RenderSystem.rotated(0, 1, 0, 0);
RenderSystem.rotatef(0, 1, 0, 0);
RenderSystem.scaled(scale, scale, scale);
font.drawString(countString, 0, 0, isFilter ? 0xFFFFFF : 0xEDEDED);
RenderSystem.translated(0, 0, -1 / 16f);

View File

@ -4,8 +4,14 @@ import com.simibubi.create.foundation.behaviour.filtering.FilteringRenderer;
import com.simibubi.create.foundation.behaviour.linked.LinkRenderer;
import com.simibubi.create.foundation.block.SafeTileEntityRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
public class SmartTileEntityRenderer<T extends SmartTileEntity> extends SafeTileEntityRenderer<T> {
public SmartTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(T tileEntityIn, double x, double y, double z, float partialTicks, int destroyStage) {
FilteringRenderer.renderOnTileEntity(tileEntityIn, x, y, z, partialTicks, destroyStage);

View File

@ -88,7 +88,7 @@ public class ScreenElementRenderer {
if (fire) {
blockRenderer.renderBlockBrightness(blockToRender, 1);
} else {
RenderSystem.rotated(90, 0, 1, 0);
RenderSystem.rotatef(90, 0, 1, 0);
if (color == -1) {
blockRenderer.getBlockModelRenderer().renderModelBrightnessColor(modelToRender, 1, 1, 1, 1);
} else {

View File

@ -1,11 +1,13 @@
package com.simibubi.create.modules.contraptions;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.simibubi.create.config.AllConfigs;
import com.simibubi.create.foundation.utility.TessellatorHelper;
import com.simibubi.create.modules.contraptions.base.KineticTileEntity;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.tileentity.TileEntity;
@ -17,7 +19,7 @@ import net.minecraft.world.World;
public class KineticDebugger {
public static void renderSourceOutline() {
public static void renderSourceOutline(MatrixStack ms, IRenderTypeBuffer buffer) {
if (!isActive())
return;
KineticTileEntity te = getSelectedTE();
@ -28,20 +30,16 @@ public class KineticDebugger {
BlockPos toOutline = te.hasSource() ? te.source : te.getPos();
VoxelShape shape = world.getBlockState(toOutline).getShape(world, toOutline);
TessellatorHelper.prepareForDrawing();
RenderSystem.disableTexture();
RenderSystem.lineWidth(3);
RenderSystem.pushMatrix();
RenderSystem.translated(toOutline.getX(), toOutline.getY(), toOutline.getZ());
IVertexBuilder vb = buffer.getBuffer(RenderType.getLines());
ms.push();
ms.translate(toOutline.getX(), toOutline.getY(), toOutline.getZ());
float f = 1 + 1 / 128f;
RenderSystem.scaled(f, f, f);
ms.scale(f, f, f);
WorldRenderer.drawShape(shape, 0, 0, 0, te.hasSource() ? .5f : 1, .75f, .75f, 1);
WorldRenderer.func_228431_a_(ms, vb, shape, 0, 0, 0, te.hasSource() ? .5f : 1, .75f, .75f, 1);
RenderSystem.popMatrix();
RenderSystem.lineWidth(1);
RenderSystem.enableTexture();
TessellatorHelper.cleanUpAfterDrawing();
ms.pop();
}
public static boolean isActive() {

View File

@ -1,9 +1,11 @@
package com.simibubi.create.modules.contraptions;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
import net.minecraft.item.ItemStack;
@ -11,22 +13,22 @@ import net.minecraft.item.ItemStack;
public class WrenchItemRenderer extends ItemStackTileEntityRenderer {
@Override
public void renderByItem(ItemStack stack) {
public void render(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) {
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
WrenchModel mainModel = (WrenchModel) itemRenderer.getModelWithOverrides(stack);
WrenchModel mainModel = (WrenchModel) itemRenderer.getItemModelWithOverrides(stack, Minecraft.getInstance().world, Minecraft.getInstance().player);
float worldTime = AnimationTickHolder.getRenderTick();
RenderSystem.pushMatrix();
RenderSystem.translatef(0.5F, 0.5F, 0.5F);
itemRenderer.renderItem(stack, mainModel.getBakedModel());
itemRenderer.renderItem(stack, mainModel.getBakedModel()); // TODO 1.15 what transform type is this?
float angle = worldTime * -.5f % 360;
float xOffset = -1/32f;
float zOffset = 0;
RenderSystem.translatef(-xOffset, 0, -zOffset);
RenderSystem.rotated(angle, 0, 1, 0);
RenderSystem.rotatef(angle, 0, 1, 0);
RenderSystem.translatef(xOffset, 0, zOffset);
itemRenderer.renderItem(stack, mainModel.getPartial("gear"));

View File

@ -96,9 +96,9 @@ public class ContraptionEntityRenderer extends EntityRenderer<ContraptionEntity>
RenderSystem.pushMatrix();
RenderSystem.translated(x, y, z);
RenderSystem.translated(rotationOffset.x, rotationOffset.y, rotationOffset.z);
RenderSystem.rotated(degPitch, 0, 0, 1);
RenderSystem.rotated(degYaw, 0, 1, 0);
RenderSystem.rotated(degRoll, 1, 0, 0);
RenderSystem.rotatef(degPitch, 0, 0, 1);
RenderSystem.rotatef(degYaw, 0, 1, 0);
RenderSystem.rotatef(degRoll, 1, 0, 0);
RenderSystem.translated(-rotationOffset.x, -rotationOffset.y, -rotationOffset.z);
ContraptionRenderer.renderTEsWithGL(entity.world, entity.getContraption(), entity.getPositionVec(),
new Vec3d(degRoll, degYaw, degPitch), ms, buffers);

View File

@ -93,7 +93,7 @@ public class MechanicalCrafterTileEntityRenderer extends SafeTileEntityRenderer<
float earlyProgress = MathHelper.clamp(progress * 2, 0, 1);
float lateProgress = MathHelper.clamp(progress * 2 - 1, 0, 1);
// RenderSystem.rotated(lateProgress * 360, 0, 0, 1);
// RenderSystem.rotatef(lateProgress * 360, 0, 0, 1);
ms.scale(1 - lateProgress, 1 - lateProgress, 1 - lateProgress);
Vec3d centering = new Vec3d(-items.minX + (-items.width + 1) / 2f,

View File

@ -47,7 +47,7 @@ public class HandCrankBlock extends DirectionalKineticBlock implements IWithTile
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
Direction preferred = getPreferredFacing(context);
if (preferred == null || context.isPlacerSneaking())
if (preferred == null || context.getPlayer().isSneaking())
return getDefaultState().with(FACING, context.getFace());
return getDefaultState().with(FACING, preferred.getOpposite());
}

View File

@ -32,6 +32,7 @@ import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.item.BlockItem;
import net.minecraft.util.Direction;
@ -44,6 +45,10 @@ import net.minecraft.world.World;
@SuppressWarnings("deprecation")
public class DeployerTileEntityRenderer extends SafeTileEntityRenderer<DeployerTileEntity> {
public DeployerTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(DeployerTileEntity te, double x, double y, double z, float partialTicks,
int destroyStage) {

View File

@ -45,7 +45,7 @@ public class EncasedFanBlock extends DirectionalKineticBlock implements IWithTil
if (preferredFacing == null)
preferredFacing = context.getNearestLookingDirection();
return getDefaultState().with(FACING,
context.isPlacerSneaking() ? preferredFacing : preferredFacing.getOpposite());
context.getPlayer().isSneaking() ? preferredFacing : preferredFacing.getOpposite());
}
protected void blockUpdate(BlockState state, World worldIn, BlockPos pos) {

View File

@ -1,15 +1,20 @@
package com.simibubi.create.modules.contraptions.components.flywheel.engine;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.block.SafeTileEntityRendererFast;
import com.simibubi.create.foundation.block.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.AngleHelper;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
public class EngineRenderer<T extends EngineTileEntity> extends SafeTileEntityRendererFast<T> {
public class EngineRenderer<T extends EngineTileEntity> extends SafeTileEntityRenderer<T> {
public EngineRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
protected void renderFast(T te, double x, double y, double z, float partialTicks, int destroyStage,

View File

@ -12,11 +12,16 @@ import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.util.Direction.Axis;
import net.minecraft.util.math.BlockPos;
public class MechanicalMixerTileEntityRenderer extends KineticTileEntityRenderer {
public MechanicalMixerTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
int light, int overlay) {

View File

@ -34,7 +34,7 @@ public class MotorBlock extends HorizontalKineticBlock {
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
Direction preferred = getPreferredHorizontalFacing(context);
if (context.isPlacerSneaking() || preferred == null)
if (context.getPlayer().isSneaking() || preferred == null)
return super.getStateForPlacement(context);
return getDefaultState().with(HORIZONTAL_FACING, preferred);
}

View File

@ -21,6 +21,7 @@ import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemCameraTransforms;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
@ -30,6 +31,10 @@ import net.minecraft.util.math.MathHelper;
@SuppressWarnings("deprecation")
public class SawTileEntityRenderer extends SafeTileEntityRenderer<SawTileEntity> {
public SawTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(SawTileEntity te, double x, double y, double z, float partialTicks, int destroyStage) {
renderItems(te, x, y, z, partialTicks);
@ -71,8 +76,8 @@ public class SawTileEntityRenderer extends SafeTileEntityRenderer<SawTileEntity>
RenderSystem.scaled(.5, .5, .5);
if (alongZ)
RenderSystem.rotated(90, 0, 1, 0);
RenderSystem.rotated(90, 1, 0, 0);
RenderSystem.rotatef(90, 0, 1, 0);
RenderSystem.rotatef(90, 1, 0, 0);
itemRenderer.renderItem(stack, ItemCameraTransforms.TransformType.FIXED);
RenderSystem.popMatrix();
}

View File

@ -129,7 +129,7 @@ public class WaterWheelBlock extends HorizontalKineticBlock {
return getDefaultState().with(HORIZONTAL_FACING, placedOn.get(HORIZONTAL_FACING));
if (facing.getAxis().isHorizontal())
return getDefaultState().with(HORIZONTAL_FACING,
context.isPlacerSneaking() ? facing.getOpposite() : facing);
context.getPlayer().isSneaking() ? facing.getOpposite() : facing);
return super.getStateForPlacement(context);
}

View File

@ -68,7 +68,7 @@ public class GoggleOverlayRenderer {
};
tooltipScreen.init(mc, mc.mainWindow.getScaledWidth(), mc.mainWindow.getScaledHeight());
tooltipScreen.init(mc, mc.getWindow().getScaledWidth(), mc.getWindow().getScaledHeight());
tooltipScreen.renderTooltip(tooltip, tooltipScreen.width / 2, tooltipScreen.height / 2);
ItemStack item = goggles;
ScreenElementRenderer.render3DItem(() -> {

View File

@ -111,11 +111,6 @@ public class BasinBlock extends Block implements IWithTileEntity<BasinTileEntity
}
@Override
public boolean isSolid(BlockState state) {
return false;
}
@Override
public boolean hasComparatorInputOverride(BlockState state) {
return true;

View File

@ -2,12 +2,16 @@ package com.simibubi.create.modules.contraptions.processing;
import java.util.Random;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.foundation.block.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
@ -17,11 +21,16 @@ import net.minecraftforge.items.ItemStackHandler;
@SuppressWarnings("deprecation")
public class BasinTileEntityRenderer extends SafeTileEntityRenderer<BasinTileEntity> {
public BasinTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(BasinTileEntity basin, double x, double y, double z, float partialTicks, int destroyStage) {
RenderSystem.pushMatrix();
protected void renderSafe(BasinTileEntity basin, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
int light, int overlay) {
ms.push();
BlockPos pos = basin.getPos();
RenderSystem.translated(x + .5, y + .2f, z + .5);
ms.translate(.5, .2f, .5);
Random r = new Random(pos.hashCode());
IItemHandlerModifiable inv = basin.inventory.orElse(new ItemStackHandler());
@ -31,13 +40,13 @@ public class BasinTileEntityRenderer extends SafeTileEntityRenderer<BasinTileEnt
continue;
for (int i = 0; i <= stack.getCount() / 8; i++) {
RenderSystem.pushMatrix();
ms.push();
Vec3d vec = VecHelper.offsetRandomly(Vec3d.ZERO, r, .25f);
Vec3d vec2 = VecHelper.offsetRandomly(Vec3d.ZERO, r, .5f);
RenderSystem.translated(vec.x, vec.y, vec.z);
RenderSystem.rotated(vec2.x * 180, vec2.z, vec2.y, 0);
ms.translate(vec.x, vec.y, vec.z);
ms.multiply(new Vector3f((float) vec2.z, (float) vec2.y, 0).getDegreesQuaternion((float) vec2.x * 180));
Minecraft.getInstance().getItemRenderer().renderItem(stack, TransformType.GROUND);
Minecraft.getInstance().getItemRenderer().renderItem(stack, TransformType.GROUND, light, overlay, ms, buffer);
RenderSystem.popMatrix();
}
RenderSystem.translated(0, 1 / 64f, 0);

View File

@ -1,17 +1,22 @@
package com.simibubi.create.modules.contraptions.redstone;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.block.SafeTileEntityRendererFast;
import com.simibubi.create.foundation.block.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.SuperByteBuffer;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.state.properties.AttachFace;
import net.minecraft.util.Direction.Axis;
public class AnalogLeverTileEntityRenderer extends SafeTileEntityRendererFast<AnalogLeverTileEntity> {
public class AnalogLeverTileEntityRenderer extends SafeTileEntityRenderer<AnalogLeverTileEntity> {
public AnalogLeverTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderFast(AnalogLeverTileEntity te, double x, double y, double z, float partialTicks,

View File

@ -41,7 +41,7 @@ public class ContactBlock extends ProperDirectionalBlock implements IPortableBlo
BlockState state = getDefaultState().with(FACING, context.getNearestLookingDirection().getOpposite());
Direction placeDirection = context.getFace().getOpposite();
if (context.isPlacerSneaking() || hasValidContact(context.getWorld(), context.getPos(), placeDirection))
if (context.getPlayer().isSneaking() || hasValidContact(context.getWorld(), context.getPos(), placeDirection))
state = state.with(FACING, placeDirection);
if (hasValidContact(context.getWorld(), context.getPos(), state.get(FACING)))
state = state.with(POWERED, true);

View File

@ -10,10 +10,15 @@ import com.simibubi.create.modules.contraptions.relays.elementary.ShaftBlock;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
public class SpeedControllerRenderer extends SmartTileEntityRenderer<SpeedControllerTileEntity> {
public SpeedControllerRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(SpeedControllerTileEntity tileEntityIn, double x, double y, double z, float partialTicks,
int destroyStage) {

View File

@ -102,7 +102,7 @@ public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
Axis preferredAxis = RotatedPillarKineticBlock.getPreferredAxis(context);
if (preferredAxis != null && !context.isPlacerSneaking())
if (preferredAxis != null && !context.getPlayer().isSneaking())
return withAxis(preferredAxis, context);
return withAxis(context.getNearestLookingDirection().getAxis(), context);
}

View File

@ -391,10 +391,10 @@ public class BeltBlock extends HorizontalKineticBlock
: BlockRenderType.ENTITYBLOCK_ANIMATED;
}
@Override
public boolean canRenderInLayer(BlockState state, BlockRenderLayer layer) {
return state.get(CASING) && state.get(SLOPE) != Slope.VERTICAL && layer == getRenderLayer();
}
// @Override // TODO 1.15 register layer
// public boolean canRenderInLayer(BlockState state, BlockRenderLayer layer) {
// return state.get(CASING) && state.get(SLOPE) != Slope.VERTICAL && layer == getRenderLayer();
// }
public static void initBelt(World world, BlockPos pos) {
if (world.isRemote)

View File

@ -37,7 +37,7 @@ public class BeltConnectorItem extends BlockItem implements IAddedByOther {
@Override
public ActionResultType onItemUse(ItemUseContext context) {
if (context.isPlacerSneaking()) {
if (context.getPlayer().isSneaking()) {
context.getItem().setTag(null);
return ActionResultType.SUCCESS;
}

View File

@ -84,7 +84,7 @@ public class BeltMovementHandler {
return;
// Not on top
if (entityIn.posY - .25f < pos.getY())
if (entityIn.getY() - .25f < pos.getY())
return;
// Lock entities in place
@ -113,15 +113,15 @@ public class BeltMovementHandler {
Direction.getFacingFromAxis(POSITIVE, beltFacing.rotateY().getAxis()).getDirectionVec();
Vec3d movement = new Vec3d(movementDirection.getDirectionVec()).scale(movementSpeed);
double diffCenter = axis == Axis.Z ? (pos.getX() + .5f - entityIn.posX) : (pos.getZ() + .5f - entityIn.posZ);
double diffCenter = axis == Axis.Z ? (pos.getX() + .5f - entityIn.getZ()) : (pos.getZ() + .5f - entityIn.getZ());
if (Math.abs(diffCenter) > 48 / 64f)
return;
Part part = blockState.get(BeltBlock.PART);
float top = 13 / 16f;
boolean onSlope = notHorizontal && (part == Part.MIDDLE || part == Part.PULLEY
|| part == (slope == Slope.UPWARD ? Part.END : Part.START) && entityIn.posY - pos.getY() < top
|| part == (slope == Slope.UPWARD ? Part.START : Part.END) && entityIn.posY - pos.getY() > top);
|| part == (slope == Slope.UPWARD ? Part.END : Part.START) && entityIn.getY() - pos.getY() < top
|| part == (slope == Slope.UPWARD ? Part.START : Part.END) && entityIn.getY() - pos.getY() > top);
boolean movingDown = onSlope && slope == (movementFacing == beltFacing ? Slope.DOWNWARD : Slope.UPWARD);
boolean movingUp = onSlope && slope == (movementFacing == beltFacing ? Slope.UPWARD : Slope.DOWNWARD);
@ -181,7 +181,7 @@ public class BeltMovementHandler {
|| AllBlocks.BELT.typeOf(world.getBlockState(entityIn.getPosition().down())));
if (movedPastEndingSlope && !movingDown && Math.abs(movementSpeed) > 0)
entityIn.setPosition(entityIn.posX, entityIn.posY + movement.y, entityIn.posZ);
entityIn.setPosition(entityIn.getY(), entityIn.getY() + movement.y, entityIn.getZ());
if (movedPastEndingSlope) {
entityIn.setMotion(movement);
entityIn.velocityChanged = true;

View File

@ -26,6 +26,7 @@ import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Direction.AxisDirection;
@ -38,6 +39,10 @@ public class BeltTileEntityRenderer extends SafeTileEntityRenderer<BeltTileEntit
private static SpriteShiftEntry animatedTexture;
public BeltTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(BeltTileEntity te, double x, double y, double z, float partialTicks, int destroyStage) {
TessellatorHelper.prepareFastRender();
@ -148,7 +153,7 @@ public class BeltTileEntityRenderer extends SafeTileEntityRenderer<BeltTileEntit
RenderHelper.enableStandardItemLighting();
int count = (int) (MathHelper.log2((int) (transported.stack.getCount()))) / 2;
RenderSystem.rotated(slopeAngle, slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0);
RenderSystem.rotatef(slopeAngle, slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0);
if (onSlope)
RenderSystem.translated(0, 1 / 8f, 0);
Random r = new Random(transported.angle);
@ -156,10 +161,10 @@ public class BeltTileEntityRenderer extends SafeTileEntityRenderer<BeltTileEntit
for (int i = 0; i <= count; i++) {
RenderSystem.pushMatrix();
RenderSystem.rotated(transported.angle, 0, 1, 0);
RenderSystem.rotatef(transported.angle, 0, 1, 0);
if (!blockItem) {
RenderSystem.translated(0, -.09375, 0);
RenderSystem.rotated(90, 1, 0, 0);
RenderSystem.rotatef(90, 1, 0, 0);
}
if (blockItem) {
@ -171,7 +176,7 @@ public class BeltTileEntityRenderer extends SafeTileEntityRenderer<BeltTileEntit
RenderSystem.popMatrix();
if (!blockItem)
RenderSystem.rotated(10, 0, 1, 0);
RenderSystem.rotatef(10, 0, 1, 0);
RenderSystem.translated(0, blockItem ? 1 / 64d : 1 / 16d, 0);
}

View File

@ -21,7 +21,6 @@ import net.minecraft.state.StateContainer.Builder;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
import net.minecraft.util.Direction.AxisDirection;
@ -58,11 +57,6 @@ public class BeltTunnelBlock extends Block implements IWithTileEntity<BeltTunnel
return true;
}
@Override
public boolean isSolid(BlockState state) {
return false;
}
@Override
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
return BeltTunnelShapes.getShape(state);
@ -85,12 +79,12 @@ public class BeltTunnelBlock extends Block implements IWithTileEntity<BeltTunnel
return true;
}
@Override
public boolean canRenderInLayer(BlockState state, BlockRenderLayer layer) {
if (hasWindow(state))
return layer == BlockRenderLayer.CUTOUT_MIPPED;
return super.canRenderInLayer(state, layer);
}
// @Override // TODO 1.15 register layer
// public boolean canRenderInLayer(BlockState state, BlockRenderLayer layer) {
// if (hasWindow(state))
// return layer == BlockRenderLayer.CUTOUT_MIPPED;
// return super.canRenderInLayer(state, layer);
// }
public static boolean hasWindow(BlockState state) {
Shape shape = state.get(SHAPE);

View File

@ -1,26 +1,35 @@
package com.simibubi.create.modules.contraptions.relays.belt;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.block.SafeTileEntityRendererFast;
import com.simibubi.create.foundation.block.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.SuperByteBuffer;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World;
public class BeltTunnelTileEntityRenderer extends SafeTileEntityRendererFast<BeltTunnelTileEntity> {
public class BeltTunnelTileEntityRenderer extends SafeTileEntityRenderer<BeltTunnelTileEntity> {
public BeltTunnelTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderFast(BeltTunnelTileEntity te, double x, double y, double z, float partialTicks,
int destroyStage, BufferBuilder buffer) {
protected void renderSafe(BeltTunnelTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
int light, int overlay) {
SuperByteBuffer flapBuffer = AllBlockPartials.BELT_TUNNEL_FLAP.renderOn(te.getBlockState());
SuperByteBuffer indicatorBuffer = AllBlockPartials.BELT_TUNNEL_INDICATOR.renderOn(te.getBlockState());
BlockPos pos = te.getPos();
World world = getWorld();
World world = te.getWorld();
for (Direction direction : Direction.values()) {
if (!te.flaps.containsKey(direction))
@ -43,20 +52,22 @@ public class BeltTunnelTileEntityRenderer extends SafeTileEntityRendererFast<Bel
float abs = Math.abs(f);
float flapAngle = MathHelper.sin((float) ((1 - abs) * Math.PI * intensity)) * 30 * -f;
flapAngle = (float) (flapAngle / 180 * Math.PI);
IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid());
if (te.syncedFlaps.containsKey(direction)) {
float lightIntensity = abs * abs * abs;
int color = ColorHelper.mixColors(0x808080, 0xFFFFFF, lightIntensity);
indicatorBuffer.rotateCentered(Axis.Y, (float) ((horizontalAngle + 90) / 180f * Math.PI))
.translate(x, y, z).color(color)
.light(world.getCombinedLight(pos, (int) (12 * lightIntensity))).renderInto(buffer);
.color(color)
.light(world.getCombinedLight(pos, (int) (12 * lightIntensity))).renderInto(ms, vb);
}
flapBuffer.translate(0, 0, -segment * 3 / 16f);
flapBuffer.translate(flapPivotX, flapPivotY, flapPivotZ).rotate(Axis.Z, flapAngle)
.translate(-flapPivotX, -flapPivotY, -flapPivotZ);
flapBuffer.rotateCentered(Axis.Y, (float) (horizontalAngle / 180f * Math.PI)).translate(x, y, z);
flapBuffer.light(te.getBlockState().getPackedLightmapCoords(world, pos)).renderInto(buffer);
flapBuffer.rotateCentered(Axis.Y, (float) (horizontalAngle / 180f * Math.PI));
flapBuffer.light(te.getBlockState().getPackedLightmapCoords(world, pos)).renderInto(ms, vb);
}
}

View File

@ -54,7 +54,7 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock {
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
Axis placedAxis = context.getNearestLookingDirection().getAxis();
Axis axis = context.isPlacerSneaking() ? placedAxis : getPreferredAxis(context);
Axis axis = context.getPlayer().isSneaking() ? placedAxis : getPreferredAxis(context);
if (axis == null)
axis = placedAxis;

View File

@ -41,7 +41,7 @@ public class EncasedShaftBlock extends RotatedPillarKineticBlock {
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
if (context.isPlacerSneaking())
if (context.getPlayer().isSneaking())
return super.getStateForPlacement(context);
Axis preferredAxis = getPreferredAxis(context);
return this.getDefaultState().with(AXIS,

View File

@ -14,6 +14,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis;
@ -23,7 +24,8 @@ public class GaugeTileEntityRenderer extends KineticTileEntityRenderer {
protected GaugeBlock.Type type;
public GaugeTileEntityRenderer(GaugeBlock.Type type) {
public GaugeTileEntityRenderer(TileEntityRendererDispatcher dispatcher, GaugeBlock.Type type) {
super(dispatcher);
this.type = type;
}

View File

@ -35,7 +35,7 @@ public class DeforesterItemRenderer extends ItemStackTileEntityRenderer {
float xOffset = 0;
float zOffset = 0;
RenderSystem.translatef(-xOffset, 0, -zOffset);
RenderSystem.rotated(angle, 0, 1, 0);
RenderSystem.rotatef(angle, 0, 1, 0);
RenderSystem.translatef(xOffset, 0, zOffset);
itemRenderer.renderItem(stack, mainModel.getPartial("gear"));

View File

@ -36,7 +36,7 @@ public class SymmetryWandItemRenderer extends ItemStackTileEntityRenderer {
float floating = MathHelper.sin(worldTime) * .05f;
RenderSystem.translated(0, floating, 0);
float angle = worldTime * -10 % 360;
RenderSystem.rotated(angle, 0, 1, 0);
RenderSystem.rotatef(angle, 0, 1, 0);
itemRenderer.renderItem(stack, mainModel.getPartial("bits"));
GLX.glMultiTexCoord2f(GLX.GL_TEXTURE1, lastCoordx, lastCoordy);

View File

@ -78,7 +78,7 @@ public abstract class ZapperItem extends Item {
@Override
public ActionResultType onItemUse(ItemUseContext context) {
// Shift -> open GUI
if (context.isPlacerSneaking()) {
if (context.getPlayer().isSneaking()) {
if (context.getWorld().isRemote) {
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
openHandgunGUI(context.getItem(), context.getHand() == Hand.OFF_HAND);

View File

@ -4,10 +4,15 @@ import com.mojang.blaze3d.platform.GLX;
import com.simibubi.create.foundation.behaviour.filtering.FilteringRenderer;
import com.simibubi.create.foundation.block.SafeTileEntityRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.state.properties.BlockStateProperties;
public class BeltObserverTileEntityRenderer extends SafeTileEntityRenderer<BeltObserverTileEntity> {
public BeltObserverTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(BeltObserverTileEntity tileEntityIn, double x, double y, double z, float partialTicks,
int destroyStage) {

View File

@ -5,8 +5,14 @@ import com.simibubi.create.foundation.block.render.ColoredOverlayTileEntityRende
import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.SuperByteBuffer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
public class FlexpeaterTileEntityRenderer extends ColoredOverlayTileEntityRenderer<FlexpeaterTileEntity> {
public FlexpeaterTileEntityRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
protected int getColor(FlexpeaterTileEntity te, float partialTicks) {
return ColorHelper.mixColors(0x2C0300, 0xCD0000, te.state / (float) te.maxState.getValue());

View File

@ -56,7 +56,7 @@ public class FlexcrateBlock extends ProperDirectionalBlock {
BlockPos pos = context.getPos();
World world = context.getWorld();
if (!context.isPlacerSneaking()) {
if (!context.getPlayer().isSneaking()) {
for (Direction d : Direction.values()) {
BlockState state = world.getBlockState(pos.offset(d));
if (AllBlocks.FLEXCRATE.typeOf(state) && !state.get(DOUBLE))

View File

@ -61,7 +61,7 @@ public class MaterialChecklist {
string.append("\n" + TextFormatting.RED + "* Disclaimer *\n\n");
string.append("Material List may be inaccurate due to relevant chunks not being loaded.");
string.append("\"}");
pages.add(new StringNBT(string.toString()));
pages.add(StringNBT.of(string.toString()));
string = new StringBuilder("{\"text\":\"");
}
@ -89,7 +89,7 @@ public class MaterialChecklist {
if (itemsWritten == 6) {
itemsWritten = 0;
string.append("\"}");
pages.add(new StringNBT(string.toString()));
pages.add(StringNBT.of(string.toString()));
string = new StringBuilder("{\"text\":\"");
}
@ -101,7 +101,7 @@ public class MaterialChecklist {
if (itemsWritten == 6) {
itemsWritten = 0;
string.append("\"}");
pages.add(new StringNBT(string.toString()));
pages.add(StringNBT.of(string.toString()));
string = new StringBuilder("{\"text\":\"");
}
@ -110,7 +110,7 @@ public class MaterialChecklist {
}
string.append("\"}");
pages.add(new StringNBT(string.toString()));
pages.add(StringNBT.of(string.toString()));
tag.put("pages", pages);
tag.putString("author", "Schematicannon");

View File

@ -78,7 +78,7 @@ public class SchematicWorld extends WrappedWorld {
}
@Override
public int getLightFor(LightType type, BlockPos pos) {
public int getLightLevel(LightType p_226658_1_, BlockPos p_226658_2_) {
return 10;
}
@ -98,11 +98,6 @@ public class SchematicWorld extends WrappedWorld {
return Collections.emptyList();
}
@Override
public int getLightSubtracted(BlockPos pos, int amount) {
return 0;
}
@Override
public int getSkylightSubtracted() {
return 0;

View File

@ -6,6 +6,8 @@ import static com.simibubi.create.ScreenResources.SCHEMATIC_TABLE_PROGRESS;
import java.nio.file.Paths;
import java.util.List;
import com.mojang.blaze3d.platform.GlStateManager.DestFactor;
import com.mojang.blaze3d.platform.GlStateManager.SourceFactor;
import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.CreateClient;
@ -125,7 +127,7 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
RenderSystem.enableAlphaTest();
RenderHelper.enableGUIStandardItemLighting();
RenderSystem.alphaFunc(516, 0.1F);
RenderSystem.blendFunc(RenderSystem.SourceFactor.SRC_ALPHA, RenderSystem.DestFactor.ONE_MINUS_SRC_ALPHA);
RenderSystem.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.translated(mainLeft + 270, mainTop + 100, 200);

View File

@ -2,6 +2,7 @@ package com.simibubi.create.modules.schematics.block;
import java.util.Random;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.block.SafeTileEntityRenderer;
@ -11,8 +12,10 @@ import com.simibubi.create.foundation.utility.TessellatorHelper;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.Direction.Axis;
@ -22,9 +25,13 @@ import net.minecraft.util.math.Vec3d;
public class SchematicannonRenderer extends SafeTileEntityRenderer<SchematicannonTileEntity> {
public SchematicannonRenderer(TileEntityRendererDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void renderWithGL(SchematicannonTileEntity tileEntityIn, double x, double y, double z, float partialTicks,
int destroyStage) {
protected void renderSafe(SchematicannonTileEntity tileEntityIn, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
int light, int overlay) {
Minecraft.getInstance().getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
@ -81,13 +88,14 @@ public class SchematicannonRenderer extends SafeTileEntityRenderer<Schematicanno
double yOffset = 2 * (1 - t) * t * throwHeight + t * t * targetY;
Vec3d blockLocation = blockLocationXZ.add(0, yOffset + 1, 0).add(cannonOffset);
// TODO 1.15 remove RenderSystem use
// Offset to position
RenderSystem.pushMatrix();
RenderSystem.translated(blockLocation.x, blockLocation.y, blockLocation.z);
// Rotation and Scaling effects
double scale = .3f;
RenderSystem.rotated(360 * t * 2, 1, 1, 0);
RenderSystem.rotatef(360 * t * 2, 1, 1, 0);
RenderSystem.scaled(scale, scale, scale);
// Render the Block

View File

@ -10,7 +10,7 @@ import net.minecraft.client.gui.AbstractGui;
public class BlueprintHotbarOverlay extends AbstractGui {
public void renderOn(int slot) {
MainWindow mainWindow = Minecraft.getInstance().mainWindow;
MainWindow mainWindow = Minecraft.getInstance().getWindow();
int x = mainWindow.getScaledWidth() / 2 - 92;
int y = mainWindow.getScaledHeight() - 23;
RenderSystem.enableAlphaTest();

View File

@ -8,7 +8,9 @@ import java.nio.file.StandardOpenOption;
import org.apache.commons.io.IOUtils;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllKeys;
import com.simibubi.create.AllSpecialTextures;
@ -160,7 +162,7 @@ public class SchematicAndQuillHandler {
Lang.sendStatus(Minecraft.getInstance().player, "schematicAndQuill.saved", filepath);
}
public void render() {
public void render(MatrixStack ms, IVertexBuilder buffer) {
if (!isActive())
return;
@ -175,28 +177,28 @@ public class SchematicAndQuillHandler {
MutableBoundingBox bb = new MutableBoundingBox(firstPos, firstPos.add(1, 1, 1));
BlockPos min = new BlockPos(bb.minX, bb.minY, bb.minZ);
BlockPos max = new BlockPos(bb.maxX, bb.maxY, bb.maxZ);
drawBox(min, max, true);
drawBox(ms, buffer, min, max, true);
}
if (firstPos != null && selectedPos != null) {
MutableBoundingBox bb = new MutableBoundingBox(firstPos, selectedPos);
BlockPos min = new BlockPos(bb.minX, bb.minY, bb.minZ);
BlockPos max = new BlockPos(bb.maxX + 1, bb.maxY + 1, bb.maxZ + 1);
drawBox(min, max, true);
drawBox(ms, buffer, min, max, true);
}
if (firstPos == null && selectedPos != null) {
MutableBoundingBox bb = new MutableBoundingBox(selectedPos, selectedPos.add(1, 1, 1));
BlockPos min = new BlockPos(bb.minX, bb.minY, bb.minZ);
BlockPos max = new BlockPos(bb.maxX, bb.maxY, bb.maxZ);
drawBox(min, max, true);
drawBox(ms, buffer, min, max, true);
}
} else {
// 2nd Step
MutableBoundingBox bb = new MutableBoundingBox(firstPos, secondPos);
BlockPos min = new BlockPos(bb.minX, bb.minY, bb.minZ);
BlockPos max = new BlockPos(bb.maxX + 1, bb.maxY + 1, bb.maxZ + 1);
drawBox(min, max, false);
drawBox(ms, buffer, min, max, false);
if (selectedFace != null) {
Vec3d vec = new Vec3d(selectedFace.getDirectionVec());
@ -226,10 +228,10 @@ public class SchematicAndQuillHandler {
TessellatorHelper.cleanUpAfterDrawing();
}
protected static void drawBox(BlockPos min, BlockPos max, boolean blue) {
protected static void drawBox(MatrixStack ms, IVertexBuilder buffer, BlockPos min, BlockPos max, boolean blue) {
float red = blue ? .8f : 1;
float green = blue ? .9f : 1;
WorldRenderer.drawBoundingBox(min.getX() - 1 / 16d, min.getY() + 1 / 16d, min.getZ() - 1 / 16d,
WorldRenderer.drawBox(ms, buffer, min.getX() - 1 / 16d, min.getY() + 1 / 16d, min.getZ() - 1 / 16d,
max.getX() + 1 / 16d, max.getY() + 1 / 16d, max.getZ() + 1 / 16d, red, green, 1, 1);
}

View File

@ -120,7 +120,7 @@ public class SchematicItem extends Item {
@Override
public ActionResultType onItemUse(ItemUseContext context) {
if (context.isPlacerSneaking() && context.getHand() == Hand.MAIN_HAND) {
if (context.getPlayer().isSneaking() && context.getHand() == Hand.MAIN_HAND) {
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
displayBlueprintScreen();
});