1.19.3 port (#3074)

* Start on 1.19.3 port

* Client runs, kinda

* Fix crash when opening item group

* Fix dynamic models

* Add atlas config for slot sprites

* Ore :)

* Rubber tree's, lakes and ore cleanup

* Add blocks to item group

* Fix rubber tree sapling

* added vanilla creative and missing peridot pickaxe (#3076)

* added vanilla creative and missing peridot pickaxe

* some small tweaks

Co-authored-by: ayutac <fly.high.android@gmail.com>

* added bamboo saw mill datagen recipes (#3077)

* added bamboo saw mill datagen recipes

* fixed datagen error

Co-authored-by: ayutac <fly.high.android@gmail.com>

* 1.19.3-rc1

* 1.19.3 port villager housing (#3082)

* added NBTs for the houses

* added the houses, theoretically

* added the houses, practically

* made house gen configurable

Co-authored-by: ayutac <fly.high.android@gmail.com>

* Fixes #3083

* reordered TR creative tab and small tweaks to the rest (#3081)

* reordered TR creative tab and small tweaks to the rest

* small bugfix

Co-authored-by: ayutac <fly.high.android@gmail.com>

* 1.19.3

* Bump version

Co-authored-by: Ayutac <skoch02@students.uni-mainz.de>
Co-authored-by: ayutac <fly.high.android@gmail.com>
This commit is contained in:
modmuss50 2022-12-07 16:28:29 +00:00 committed by GitHub
parent 7b7fba96c5
commit 573ba92920
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
162 changed files with 2049 additions and 1265 deletions

View file

@ -30,10 +30,11 @@ import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry;
import net.fabricmc.fabric.api.renderer.v1.RendererAccess;
import net.minecraft.client.item.ClampedModelPredicateProvider;
import net.minecraft.client.item.ModelPredicateProviderRegistry;
import net.minecraft.client.item.UnclampedModelPredicateProvider;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.render.model.Baker;
import net.minecraft.client.render.model.ModelBakeSettings;
import net.minecraft.client.render.model.ModelLoader;
import net.minecraft.client.render.model.UnbakedModel;
@ -47,8 +48,9 @@ import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import org.jetbrains.annotations.Nullable;
import reborncore.client.ClientJumpEvent;
import reborncore.client.gui.builder.GuiBase;
@ -60,6 +62,7 @@ import techreborn.client.ClientGuiType;
import techreborn.client.ClientboundPacketHandlers;
import techreborn.client.events.ClientJumpHandler;
import techreborn.client.events.StackToolTipHandler;
import techreborn.client.render.BaseDynamicFluidBakedModel;
import techreborn.client.render.DynamicBucketBakedModel;
import techreborn.client.render.DynamicCellBakedModel;
import techreborn.client.render.entitys.CableCoverRenderer;
@ -80,6 +83,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Supplier;
public class TechRebornClient implements ClientModInitializer {
@ -103,47 +107,15 @@ public class TechRebornClient implements ClientModInitializer {
return JsonUnbakedModel.deserialize("{\"parent\":\"minecraft:item/generated\",\"textures\":{\"layer0\":\"techreborn:item/cell_background\"}}");
}
return new UnbakedModel() {
@Override
public Collection<Identifier> getModelDependencies() {
return Collections.emptyList();
}
@Override
public Collection<SpriteIdentifier> getTextureDependencies(Function<Identifier, UnbakedModel> unbakedModelGetter, Set<Pair<String, String>> unresolvedTextureReferences) {
return Collections.emptyList();
}
@Override
public BakedModel bake(ModelLoader loader, Function<SpriteIdentifier, Sprite> textureGetter, ModelBakeSettings rotationContainer, Identifier modelId) {
return new DynamicCellBakedModel();
}
};
return new UnbakedDynamicModel(DynamicCellBakedModel::new);
}
Fluid fluid = Registry.FLUID.get(new Identifier(TechReborn.MOD_ID, modelIdentifier.getPath().split("_bucket")[0]));
Fluid fluid = Registries.FLUID.get(new Identifier(TechReborn.MOD_ID, modelIdentifier.getPath().split("_bucket")[0]));
if (modelIdentifier.getPath().endsWith("_bucket") && fluid != Fluids.EMPTY) {
if (!RendererAccess.INSTANCE.hasRenderer()) {
return JsonUnbakedModel.deserialize("{\"parent\":\"minecraft:item/generated\",\"textures\":{\"layer0\":\"minecraft:item/bucket\"}}");
}
return new UnbakedModel() {
@Override
public Collection<Identifier> getModelDependencies() {
return Collections.emptyList();
}
@Override
public Collection<SpriteIdentifier> getTextureDependencies(Function<Identifier, UnbakedModel> unbakedModelGetter, Set<Pair<String, String>> unresolvedTextureReferences) {
return Collections.emptyList();
}
@Override
public BakedModel bake(ModelLoader loader, Function<SpriteIdentifier, Sprite> textureGetter, ModelBakeSettings rotationContainer, Identifier modelId) {
return new DynamicBucketBakedModel();
}
};
return new UnbakedDynamicModel(DynamicBucketBakedModel::new);
}
}
return null;
@ -252,13 +224,13 @@ public class TechRebornClient implements ClientModInitializer {
}
private static <T extends Item> void registerPredicateProvider(Class<T> itemClass, Identifier identifier, ItemModelPredicateProvider<T> modelPredicateProvider) {
Registry.ITEM.stream()
Registries.ITEM.stream()
.filter(item -> item.getClass().isAssignableFrom(itemClass))
.forEach(item -> ModelPredicateProviderRegistry.register(item, identifier, modelPredicateProvider));
}
//Need the item instance in a few places, this makes it easier
private interface ItemModelPredicateProvider<T extends Item> extends UnclampedModelPredicateProvider {
private interface ItemModelPredicateProvider<T extends Item> extends ClampedModelPredicateProvider {
float call(T item, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity, int seed);
@ -268,4 +240,28 @@ public class TechRebornClient implements ClientModInitializer {
}
}
private static class UnbakedDynamicModel implements UnbakedModel {
private final Supplier<BaseDynamicFluidBakedModel> supplier;
public UnbakedDynamicModel(Supplier<BaseDynamicFluidBakedModel> supplier) {
this.supplier = supplier;
}
@Override
public Collection<Identifier> getModelDependencies() {
return Collections.emptyList();
}
@Override
public void setParents(Function<Identifier, UnbakedModel> modelLoader) {
}
@Nullable
@Override
public BakedModel bake(Baker baker, Function<SpriteIdentifier, Sprite> textureGetter, ModelBakeSettings rotationContainer, Identifier modelId) {
return supplier.get();
}
}
}

View file

@ -373,7 +373,7 @@ public class ReiPlugin implements REIClientPlugin {
final Sprite sprite = handler.getFluidSprites(MinecraftClient.getInstance().world, BlockPos.ORIGIN, fluid.getDefaultState())[0];
int color = FluidRenderHandlerRegistry.INSTANCE.get(fluid).getFluidColor(MinecraftClient.getInstance().world, BlockPos.ORIGIN, fluid.getDefaultState());
final int iconHeight = sprite.getHeight();
final int iconHeight = sprite.getContents().getHeight();
int offsetHeight = drawHeight;
RenderSystem.setShaderColor((color >> 16 & 255) / 255.0F, (float) (color >> 8 & 255) / 255.0F, (float) (color & 255) / 255.0F, 1F);

View file

@ -40,10 +40,11 @@ import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import reborncore.api.IListInfoProvider;
import reborncore.common.BaseBlockEntityProvider;
import techreborn.blocks.cable.CableBlock;
@ -135,7 +136,7 @@ public class StackToolTipHandler implements ItemTooltipCallback {
}
private static boolean isTRItem(Item item) {
return Registry.ITEM.getId(item).getNamespace().equals("techreborn");
return Registries.ITEM.getId(item).getNamespace().equals("techreborn");
}
private static Text getOreDepthText(OreDepth depth) {

View file

@ -53,7 +53,10 @@ public class GuiChunkLoader extends GuiBase<BuiltScreenHandler> {
addDrawableChild(new GuiButtonUpDown(x + 64 + 24, y + 40, this, b -> onClick(-1), UpDownButtonType.REWIND));
addDrawableChild(new GuiButtonUpDown(x + 64 + 36, y + 40, this, b -> onClick(-5), UpDownButtonType.FASTREWIND));
addDrawableChild(new ButtonWidget(x + 10, y + 70, 155, 20, Text.literal("Toggle Loaded Chunks"), b -> ClientChunkManager.toggleLoadedChunks(blockEntity.getPos())));
addDrawableChild(ButtonWidget.builder(Text.literal("Toggle Loaded Chunks"), b -> ClientChunkManager.toggleLoadedChunks(blockEntity.getPos()))
.position(x + 10, y + 70)
.size(155, 20)
.build());
}
@Override

View file

@ -24,8 +24,6 @@
package techreborn.client.gui;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TexturedButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
@ -37,7 +35,6 @@ import reborncore.client.gui.guibuilder.GuiBuilder;
import reborncore.common.screen.BuiltScreenHandler;
import techreborn.blockentity.machine.iron.IronFurnaceBlockEntity;
import techreborn.packets.ServerboundPackets;
import techreborn.utils.PlayerUtils;
public class GuiIronFurnace extends GuiBase<BuiltScreenHandler> {
@ -57,34 +54,35 @@ public class GuiIronFurnace extends GuiBase<BuiltScreenHandler> {
@Override
public void init() {
super.init();
ButtonWidget.TooltipSupplier tooltipSupplier = (button, matrices, mouseX, mouseY) -> {
PlayerEntity player = MinecraftClient.getInstance().player;
if (player == null) { return; }
String message = "Experience: ";
float furnaceExp = blockEntity.experience;
if (furnaceExp <= 0) {
message = message + "0";
} else {
float expTillLevel = (1.0F - player.experienceProgress) * player.getNextLevelExperience();
if (furnaceExp <= expTillLevel) {
int percentage = (int) (blockEntity.experience * 100 / player.getNextLevelExperience());
message = message + "+"
+ (percentage > 0 ? String.valueOf(percentage) : "<1")
+ "%";
} else {
int levels = 0;
furnaceExp -= expTillLevel;
while (furnaceExp > 0) {
furnaceExp -= PlayerUtils.getLevelExperience(player.experienceLevel);
++levels;
}
message = message + "+" + levels + "L";
}
}
renderTooltip(matrices, Text.literal(message), mouseX, mouseY);
};
// TODO 1.19.3
// ButtonWidget.TooltipSupplier tooltipSupplier = (button, matrices, mouseX, mouseY) -> {
// PlayerEntity player = MinecraftClient.getInstance().player;
// if (player == null) { return; }
// String message = "Experience: ";
//
// float furnaceExp = blockEntity.experience;
// if (furnaceExp <= 0) {
// message = message + "0";
// } else {
// float expTillLevel = (1.0F - player.experienceProgress) * player.getNextLevelExperience();
// if (furnaceExp <= expTillLevel) {
// int percentage = (int) (blockEntity.experience * 100 / player.getNextLevelExperience());
// message = message + "+"
// + (percentage > 0 ? String.valueOf(percentage) : "<1")
// + "%";
// } else {
// int levels = 0;
// furnaceExp -= expTillLevel;
// while (furnaceExp > 0) {
// furnaceExp -= PlayerUtils.getLevelExperience(player.experienceLevel);
// ++levels;
// }
// message = message + "+" + levels + "L";
// }
// }
//
// renderTooltip(matrices, Text.literal(message), mouseX, mouseY);
// };
addDrawableChild(new TexturedButtonWidget(
getGuiLeft() + 116,
@ -98,7 +96,6 @@ public class GuiIronFurnace extends GuiBase<BuiltScreenHandler> {
16,
16,
b -> onClick(),
tooltipSupplier,
Text.empty()));
}

View file

@ -33,7 +33,7 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import org.jetbrains.annotations.Nullable;
import techreborn.entities.EntityNukePrimed;
import techreborn.init.TRContent;
@ -69,7 +69,7 @@ public class NukeRenderer extends EntityRenderer<EntityNukePrimed> {
matrixStack.scale(j, j, j);
}
matrixStack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-90.0F));
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-90.0F));
matrixStack.translate(-0.5D, -0.5D, 0.5D);
TntMinecartEntityRenderer.renderFlashingBlock(blockRenderManager, TRContent.NUKE.getDefaultState(), matrixStack, vertexConsumerProvider, i, entity.getFuse() / 5 % 2 == 0);
matrixStack.pop();

View file

@ -35,7 +35,7 @@ import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import techreborn.blockentity.storage.item.StorageUnitBaseBlockEntity;
/**
@ -59,7 +59,7 @@ public class StorageUnitRenderer implements BlockEntityRenderer<StorageUnitBaseB
// Item rendering
matrices.push();
Direction direction = storage.getFacing();
matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion((direction.getHorizontal() - 2) * 90F));
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees((direction.getHorizontal() - 2) * 90F));
matrices.scale(0.5F, 0.5F, 0.5F);
switch (direction) {
case NORTH, WEST -> matrices.translate(1, 1, 0);
@ -78,7 +78,7 @@ public class StorageUnitRenderer implements BlockEntityRenderer<StorageUnitBaseB
// Render item only on horizontal facing #2183
if (Direction.Type.HORIZONTAL.test(facing) ){
matrices.translate(0.5, 0.5, 0.5); // Translate center
matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-facing.rotateYCounterclockwise().asRotation() + 90)); // Rotate depending on face
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-facing.rotateYCounterclockwise().asRotation() + 90)); // Rotate depending on face
matrices.translate(0, 0, -0.505); // Translate forward
}

View file

@ -35,7 +35,7 @@ import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import techreborn.blockentity.generator.basic.WindMillBlockEntity;
import java.util.Arrays;
@ -58,7 +58,7 @@ public class TurbineRenderer implements BlockEntityRenderer<WindMillBlockEntity>
matrixStack.push();
matrixStack.translate(0.5, 0, 0.5);
matrixStack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-facing.rotateYCounterclockwise().asRotation() + 90));
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-facing.rotateYCounterclockwise().asRotation() + 90));
matrixStack.translate(0, -1, -0.56);
float spin = blockEntity.bladeAngle + tickDelta * blockEntity.spinSpeed;

View file

@ -45,7 +45,7 @@ public class DestructoPackScreenHandler extends ScreenHandler {
}
@Override
public ItemStack transferSlot(PlayerEntity player, int index) {
public ItemStack quickMove(PlayerEntity player, int index) {
return ItemStack.EMPTY;
}