Skip to content

Commit

Permalink
Update to 1.19
Browse files Browse the repository at this point in the history
  • Loading branch information
doctor4t committed Jun 8, 2022
1 parent 5d69293 commit 1b7517c
Show file tree
Hide file tree
Showing 66 changed files with 3,255 additions and 30 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '0.11-SNAPSHOT'
id 'fabric-loom' version '0.12-SNAPSHOT'
id 'maven-publish'
id 'com.matthewprenger.cursegradle' version '1.4.0'
id 'org.ajoberstar.grgit' version '3.1.1'
Expand Down
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
org.gradle.jvmargs=-Xmx1G

# Fabric Properties
minecraft_version=1.18.2
yarn_mappings=1.18.2+build.2
loader_version=0.13.3
minecraft_version=1.19
yarn_mappings=1.19+build.1
loader_version=0.14.7

#Fabric api
fabric_version=0.48.0+1.18.2
fabric_version=0.55.3+1.19

# Mod Properties
mod_version = 1.1.3
Expand Down
48 changes: 48 additions & 0 deletions remappedSrc/ladysnake/impaled/client/ImpaledClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package ladysnake.impaled.client;

import ladysnake.impaled.client.render.entity.ImpaledTridentEntityRenderer;
import ladysnake.impaled.client.render.entity.model.ImpaledTridentEntityModel;
import ladysnake.impaled.common.Impaled;
import ladysnake.impaled.common.init.ImpaledEntityTypes;
import ladysnake.impaled.common.init.ImpaledItems;
import ladysnake.impaled.common.item.ImpaledTridentItem;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.BuiltinItemRendererRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.minecraft.client.render.entity.model.EntityModelLayer;
import net.minecraft.client.render.entity.model.EntityModelLayers;
import net.minecraft.client.util.ModelIdentifier;
import net.minecraft.resource.ResourceType;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;

public class ImpaledClient implements ClientModInitializer {
public static final Identifier HELLFORK_RIPTIDE_TEXTURE = new Identifier(Impaled.MODID, "textures/entity/hellfork_riptide.png");
public static final Identifier SOULFORK_RIPTIDE_TEXTURE = new Identifier(Impaled.MODID, "textures/entity/soulfork_riptide.png");
public static final EntityModelLayer ATLAN = new EntityModelLayer(new Identifier(Impaled.MODID, "atlan"), "main");

@Override
public void onInitializeClient() {
EntityModelLayerRegistry.registerModelLayer(ATLAN, ImpaledTridentEntityModel::getAtlanTexturedModelData);

for (ImpaledTridentItem item : ImpaledItems.ALL_TRIDENTS) {
Identifier tridentId = Registry.ITEM.getId(item);
Identifier texture = new Identifier(tridentId.getNamespace(), "textures/entity/" + tridentId.getPath() + ".png");

EntityModelLayer modelLayer = item == ImpaledItems.ATLAN ? ATLAN : EntityModelLayers.TRIDENT;
ImpaledTridentItemRenderer tridentItemRenderer = new ImpaledTridentItemRenderer(tridentId, texture, modelLayer);
ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(tridentItemRenderer);
BuiltinItemRendererRegistry.INSTANCE.register(item, tridentItemRenderer);
EntityRendererRegistry.register(item.getEntityType(), ctx -> new ImpaledTridentEntityRenderer(ctx, texture, modelLayer));

FabricModelPredicateProviderRegistry.register(item, new Identifier("throwing"), (stack, world, entity, seed) -> entity != null && entity.isUsingItem() && entity.getActiveItem() == stack ? 1.0F : 0.0F);
ModelLoadingRegistry.INSTANCE.registerModelProvider((manager, out) -> out.accept(new ModelIdentifier(tridentId + "_in_inventory", "inventory")));
}

EntityRendererRegistry.register(ImpaledEntityTypes.GUARDIAN_TRIDENT, ctx -> new ImpaledTridentEntityRenderer(ctx, new Identifier(Impaled.MODID, "textures/entity/guardian_trident.png"), EntityModelLayers.TRIDENT));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package ladysnake.impaled.client;

import ladysnake.impaled.client.render.entity.model.ImpaledTridentEntityModel;
import net.fabricmc.fabric.api.client.rendering.v1.BuiltinItemRendererRegistry;
import net.fabricmc.fabric.api.resource.ResourceReloadListenerKeys;
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.model.EntityModelLayer;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.util.ModelIdentifier;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.resource.ResourceManager;
import net.minecraft.util.Identifier;

import java.util.Collection;
import java.util.Collections;

public class ImpaledTridentItemRenderer implements BuiltinItemRendererRegistry.DynamicItemRenderer, SimpleSynchronousResourceReloadListener {
private final Identifier id;
private final Identifier tridentId;
private final Identifier texture;
private final EntityModelLayer modelLayer;
private ItemRenderer itemRenderer;
private ImpaledTridentEntityModel tridentModel;
private BakedModel inventoryTridentModel;

public ImpaledTridentItemRenderer(Identifier tridentId, Identifier texture, EntityModelLayer modelLayer) {
this.id = new Identifier(tridentId.getNamespace(), tridentId.getPath() + "_renderer");
this.tridentId = tridentId;
this.texture = texture;
this.modelLayer = modelLayer;
}

@Override
public Identifier getFabricId() {
return this.id;
}

@Override
public Collection<Identifier> getFabricDependencies() {
return Collections.singletonList(ResourceReloadListenerKeys.MODELS);
}

@Override
public void reload(ResourceManager manager) {
MinecraftClient mc = MinecraftClient.getInstance();
this.itemRenderer = mc.getItemRenderer();
this.tridentModel = new ImpaledTridentEntityModel(mc.getEntityModelLoader().getModelPart(this.modelLayer));
this.inventoryTridentModel = mc.getBakedModelManager().getModel(new ModelIdentifier(this.tridentId + "_in_inventory", "inventory"));
}

@Override
public void render(ItemStack stack, ModelTransformation.Mode renderMode, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) {
assert this.tridentModel != null;
if (renderMode == ModelTransformation.Mode.GUI || renderMode == ModelTransformation.Mode.GROUND || renderMode == ModelTransformation.Mode.FIXED) {
matrices.pop(); // cancel the previous transformation and pray that we are not breaking the state
matrices.push();
itemRenderer.renderItem(stack, renderMode, false, matrices, vertexConsumers, light, overlay, this.inventoryTridentModel);
} else {
matrices.push();
matrices.scale(1.0F, -1.0F, -1.0F);
VertexConsumer vertexConsumer = ItemRenderer.getDirectItemGlintConsumer(vertexConsumers, this.tridentModel.getLayer(this.texture), false, stack.hasGlint());
this.tridentModel.render(matrices, vertexConsumer, light, overlay, 1.0F, 1.0F, 1.0F, 1.0F);
matrices.pop();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package ladysnake.impaled.client.render.entity;

import ladysnake.impaled.client.render.entity.model.ImpaledTridentEntityModel;
import ladysnake.impaled.common.entity.ImpaledTridentEntity;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.EntityRendererFactory;
import net.minecraft.client.render.entity.model.EntityModelLayer;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3f;

@Environment(EnvType.CLIENT)
public class ImpaledTridentEntityRenderer extends EntityRenderer<ImpaledTridentEntity> {
private final ImpaledTridentEntityModel model;
private final Identifier texture;

public ImpaledTridentEntityRenderer(EntityRendererFactory.Context context, Identifier texture, EntityModelLayer modelLayer) {
super(context);
this.model = new ImpaledTridentEntityModel(context.getPart(modelLayer));
this.texture = texture;
}

public void render(ImpaledTridentEntity impaledTridentEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) {
matrixStack.push();
matrixStack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(MathHelper.lerp(g, impaledTridentEntity.prevYaw, impaledTridentEntity.getYaw()) - 90.0F));
matrixStack.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(MathHelper.lerp(g, impaledTridentEntity.prevPitch, impaledTridentEntity.getPitch()) + 90.0F));
VertexConsumer vertexConsumer = ItemRenderer.getDirectItemGlintConsumer(vertexConsumerProvider, this.model.getLayer(this.getTexture(impaledTridentEntity)), false, impaledTridentEntity.isEnchanted());
this.model.render(matrixStack, vertexConsumer, i, OverlayTexture.DEFAULT_UV, 1.0F, 1.0F, 1.0F, 1.0F);
matrixStack.pop();
super.render(impaledTridentEntity, f, g, matrixStack, vertexConsumerProvider, i);
}

public Identifier getTexture(ImpaledTridentEntity impaledTridentEntity) {
return this.texture;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package ladysnake.impaled.client.render.entity.model;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.model.*;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;

@Environment(EnvType.CLIENT)
public class ImpaledTridentEntityModel extends Model {
private final ModelPart root;

public ImpaledTridentEntityModel(ModelPart root) {
super(RenderLayer::getEntitySolid);
this.root = root;
}

public static TexturedModelData getTexturedModelData() {
ModelData modelData = new ModelData();
ModelPartData modelPartData = modelData.getRoot();
ModelPartData modelPartData2 = modelPartData.addChild("pole", ModelPartBuilder.create().uv(0, 6).cuboid(-0.5F, 2.0F, -0.5F, 1.0F, 25.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("base", ModelPartBuilder.create().uv(4, 0).cuboid(-1.5F, 0.0F, -0.5F, 3.0F, 2.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("left_spike", ModelPartBuilder.create().uv(4, 3).cuboid(-2.5F, -3.0F, -0.5F, 1.0F, 4.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("middle_spike", ModelPartBuilder.create().uv(0, 0).cuboid(-0.5F, -4.0F, -0.5F, 1.0F, 4.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("right_spike", ModelPartBuilder.create().uv(4, 3).mirrored().cuboid(1.5F, -3.0F, -0.5F, 1.0F, 4.0F, 1.0F), ModelTransform.NONE);
return TexturedModelData.of(modelData, 32, 32);
}

public static TexturedModelData getAtlanTexturedModelData() {
ModelData modelData = new ModelData();
ModelPartData modelPartData = modelData.getRoot();
ModelPartData modelPartData2 = modelPartData.addChild("pole", ModelPartBuilder.create().uv(0, 6).cuboid(-0.5F, 2.0F, -0.5F, 1.0F, 25.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("base", ModelPartBuilder.create().uv(4, 0).cuboid(-1.5F, 0.0F, -0.5F, 3.0F, 2.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("left_spike", ModelPartBuilder.create().uv(4, 3).cuboid(-2.5F, -3.0F, -0.5F, 1.0F, 4.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("middle_spike", ModelPartBuilder.create().uv(0, 0).cuboid(-0.5F, -4.0F, -0.5F, 1.0F, 4.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("right_spike", ModelPartBuilder.create().uv(4, 3).mirrored().cuboid(1.5F, -3.0F, -0.5F, 1.0F, 4.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("top_ornament", ModelPartBuilder.create().uv(4, 0).mirrored().cuboid(-1.5F, 3.0F, -0.5F, 3.0F, 1.0F, 1.0F), ModelTransform.NONE);
modelPartData2.addChild("bottom_ornament", ModelPartBuilder.create().uv(4, 0).mirrored().cuboid(-1.5F, 24.0F, -0.5F, 3.0F, 2.0F, 1.0F), ModelTransform.NONE);
return TexturedModelData.of(modelData, 32, 32);
}

public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) {
this.root.render(matrices, vertices, light, overlay, red, green, blue, alpha);
}
}
38 changes: 38 additions & 0 deletions remappedSrc/ladysnake/impaled/common/Impaled.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package ladysnake.impaled.common;

import ladysnake.impaled.common.init.ImpaledEntityTypes;
import ladysnake.impaled.common.init.ImpaledItems;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.loot.v1.FabricLootPoolBuilder;
import net.fabricmc.fabric.api.loot.v1.event.LootTableLoadingCallback;
import net.minecraft.loot.condition.LootCondition;
import net.minecraft.loot.condition.RandomChanceLootCondition;
import net.minecraft.loot.entry.ItemEntry;
import net.minecraft.loot.provider.number.UniformLootNumberProvider;
import net.minecraft.util.Identifier;

public class Impaled implements ModInitializer {
public static final String MODID = "impaled";

private static final Identifier BASTION_TREASURE_CHEST_LOOT_TABLE_ID = new Identifier("minecraft", "chests/bastion_treasure");

@Override
public void onInitialize() {
ImpaledEntityTypes.init();
ImpaledItems.init();

// add loot to dungeons, mineshafts, jungle temples, and stronghold libraries chests loot tables
UniformLootNumberProvider lootTableRange = UniformLootNumberProvider.create(1, 1);
LootCondition chanceLootCondition = RandomChanceLootCondition.builder(60).build();
LootTableLoadingCallback.EVENT.register((resourceManager, lootManager, id, supplier, setter) -> {
if (BASTION_TREASURE_CHEST_LOOT_TABLE_ID.equals(id)) {
FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder()
.rolls(lootTableRange)
.withCondition(chanceLootCondition)
.withEntry(ItemEntry.builder(ImpaledItems.ANCIENT_TRIDENT).build());

supplier.withPool(poolBuilder.build());
}
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ladysnake.impaled.common.damage;

import net.minecraft.entity.damage.DamageSource;

public class HellforkHeatDamageSource extends DamageSource {
public static final DamageSource HELLFORK_HEAT = ((HellforkHeatDamageSource) new HellforkHeatDamageSource("hellfork_heat").setBypassesArmor()).setUnblockable();

protected HellforkHeatDamageSource(String name) {
super(name);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package ladysnake.impaled.common.enchantment;

import ladysnake.impaled.common.item.HellforkItem;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.ItemStack;

public final class BetterImpaling {
public static float getAttackDamage(ItemStack stack, Entity target) {
int impalingLevel = EnchantmentHelper.getLevel(Enchantments.IMPALING, stack);

if (impalingLevel > 0) {
if (stack.getItem() instanceof HellforkItem) {
if (isFireImmune(target)) {
return impalingLevel * 2F;
}
} else if (target.isWet()) {
return impalingLevel * 1.5F;
}
}

return 0;
}

private static boolean isFireImmune(Entity target) {
if (target.isFireImmune()) return true;
if (!(target instanceof LivingEntity)) return false;
return ((LivingEntity) target).hasStatusEffect(StatusEffects.FIRE_RESISTANCE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package ladysnake.impaled.common.enchantment;

import ladysnake.sincereloyalty.LoyalTrident;
import ladysnake.sincereloyalty.TridentRecaller;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.sound.SoundEvents;

public final class BetterLoyalty {
public static boolean tryInsertTrident(ItemStack stack, PlayerEntity player) {
NbtCompound tag = stack.getSubNbt(LoyalTrident.MOD_NBT_KEY);
if (tag != null) {
TridentRecaller caller = (TridentRecaller) player;

if (caller.getCurrentRecallStatus() == TridentRecaller.RecallStatus.RECALLING) {
player.world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.ITEM_TRIDENT_RETURN, player.getSoundCategory(), 0.7f, 0.5f);
}

caller.updateRecallStatus(TridentRecaller.RecallStatus.NONE);

if (tag.contains(LoyalTrident.RETURN_SLOT_NBT_KEY)) {
int preferredSlot = tag.getInt(LoyalTrident.RETURN_SLOT_NBT_KEY);
tag.remove(LoyalTrident.RETURN_SLOT_NBT_KEY);
if (preferredSlot == -1) {
if (player.getOffHandStack().isEmpty()) {
player.equipStack(EquipmentSlot.OFFHAND, stack.copy());
stack.setCount(0);
return true;
}
} else if (player.getInventory().getStack(preferredSlot).isEmpty()) {
player.getInventory().insertStack(preferredSlot, stack);
return true;
}
}
}
return false;
}
}
Loading

0 comments on commit 1b7517c

Please sign in to comment.