Skip to content

Commit

Permalink
Add fish as compostables in Composter/Worm Farm
Browse files Browse the repository at this point in the history
Add fuel values for driftwood and Wooden Fillet Knife
  • Loading branch information
GirafiStudios committed Mar 13, 2020
1 parent a7192b8 commit 6728f43
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 12 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/teammetallurgy/aquaculture/Aquaculture.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.teammetallurgy.aquaculture;

import com.teammetallurgy.aquaculture.block.WormFarmBlock;
import com.teammetallurgy.aquaculture.client.ClientHandler;
import com.teammetallurgy.aquaculture.init.AquaEntities;
import com.teammetallurgy.aquaculture.init.AquaItems;
Expand Down Expand Up @@ -51,6 +52,7 @@ public Aquaculture() {
private void setupCommon(FMLCommonSetupEvent event) {
LootConditionManager.registerCondition(new BiomeTagCheck.Serializer());
FishWeightHandler.registerFishData();
WormFarmBlock.addCompostables();
AquaEntities.setSpawnPlacement();
DeferredWorkQueue.runLater(AquaEntities::addEntitySpawns);
DeferredWorkQueue.runLater(FishReadFromJson::addFishSpawns);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.teammetallurgy.aquaculture.block;

import com.teammetallurgy.aquaculture.api.AquacultureAPI;
import com.teammetallurgy.aquaculture.init.AquaItems;
import com.teammetallurgy.aquaculture.loot.FishWeightHandler;
import com.teammetallurgy.aquaculture.misc.AquaConfig;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.ComposterBlock;
Expand All @@ -10,10 +13,12 @@
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.*;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.IWorld;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
Expand All @@ -26,7 +31,21 @@ public class WormFarmBlock extends ComposterBlock {

public WormFarmBlock() {
super(Block.Properties.create(Material.WOOD).hardnessAndResistance(0.6F).sound(SoundType.WOOD));
}

public static void addCompostables() {
CHANCES.put(AquaItems.ALGAE.asItem(), 0.3F);
if (AquaConfig.BASIC_OPTIONS.compostableFish.get()) {
for (Item fish : AquacultureAPI.FISH_DATA.getFish()) {
double weight = AquacultureAPI.FISH_DATA.getMinWeight(fish);
ItemStack fishStack = new ItemStack(fish);
if (fishStack.getTag() != null && fishStack.getTag().contains("fishWeight")) {
weight = fishStack.getTag().getDouble("fishWeight");
}
float chance = MathHelper.clamp((FishWeightHandler.getFilletAmountFromWeight(weight) * 0.25F), 0.05F, 0.65F);
CHANCES.put(fish, chance);
}
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,33 +47,34 @@ public TackleBoxRenderer(TileEntityRendererDispatcher dispatcher) {
}

@Override
public void render(@Nonnull T tackleBox, float partialTicks, @Nonnull MatrixStack matrixStack, @Nonnull IRenderTypeBuffer buffer, int i, int i1) {
public void render(@Nonnull T tackleBox, float partialTicks, @Nonnull MatrixStack matrixStack, @Nonnull IRenderTypeBuffer buffer, int combinedLight, int combinedOverlay) {
World world = tackleBox.getWorld();
boolean hasWorld = world != null;
BlockState state = hasWorld ? tackleBox.getBlockState() : AquaBlocks.TACKLE_BOX.getDefaultState().with(ChestBlock.FACING, Direction.SOUTH);
Block block = state.getBlock();
if (block instanceof TackleBoxBlock) {
matrixStack.push();
float lvt_14_1_ = state.get(TackleBoxBlock.FACING).getHorizontalAngle();
matrixStack.translate(0.5D, 0.5D, 0.5D);
matrixStack.rotate(Vector3f.YP.rotationDegrees(-lvt_14_1_));
float facing = state.get(TackleBoxBlock.FACING).getHorizontalAngle();
matrixStack.rotate(Vector3f.YP.rotationDegrees(-facing));
matrixStack.translate(-0.5D, -0.5D, -0.5D);
matrixStack.translate(0.0625F, 1.125F, 0.5F); //Translate
matrixStack.rotate(Vector3f.XN.rotationDegrees(-180)); //Flip
TileEntityMerger.ICallbackWrapper<?> lvt_15_2_ = TileEntityMerger.ICallback::func_225537_b_;

TileEntityMerger.ICallbackWrapper<?> callbackWrapper = TileEntityMerger.ICallback::func_225537_b_;
float angle = tackleBox.getLidAngle(partialTicks);
angle = 1.0F - angle;
angle = 1.0F - angle * angle * angle;
int lvt_17_1_ = ((Int2IntFunction) lvt_15_2_.apply(new DualBrightnessCallback())).applyAsInt(i);
int brightness = ((Int2IntFunction) callbackWrapper.apply(new DualBrightnessCallback())).applyAsInt(combinedLight);
IVertexBuilder tackleBoxBuilder = buffer.getBuffer(TACKLE_BOX_RENDER);
this.func_228871_a_(matrixStack, tackleBoxBuilder, this.base, this.lid, angle, lvt_17_1_, i1);
this.render(matrixStack, tackleBoxBuilder, this.base, this.lid, angle, brightness, combinedOverlay);
matrixStack.pop();
}
}

private void func_228871_a_(MatrixStack p_228871_1_, IVertexBuilder p_228871_2_, ModelRenderer base, ModelRenderer lid, float p_228871_6_, int p_228871_7_, int p_228871_8_) {
lid.rotateAngleX = -(p_228871_6_ * 1.5707964F);
base.render(p_228871_1_, p_228871_2_, p_228871_7_, p_228871_8_);
lid.render(p_228871_1_, p_228871_2_, p_228871_7_, p_228871_8_);
private void render(MatrixStack matrixStack, IVertexBuilder builder, ModelRenderer base, ModelRenderer lid, float angle, int brightness, int combinedOverlay) {
lid.rotateAngleX = -(angle * 1.5707964F);
base.render(matrixStack, builder, brightness, combinedOverlay);
lid.render(matrixStack, builder, brightness, combinedOverlay);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ public static List<ShapelessRecipe> createFilletKnifeRecipes() {
ItemStack output = new ItemStack(AquaItems.FISH_FILLET, AquacultureAPI.FISH_DATA.getFilletAmount(fish));
if (fish.getRegistryName() != null) {
ResourceLocation id = new ResourceLocation(Aquaculture.MOD_ID, "fish_fillet." + fish.getRegistryName().getPath());
ShapelessRecipe recipe = new ShapelessRecipe(id, VanillaRecipeCategoryUid.CRAFTING.getPath(), output, input);
recipes.add(recipe);
recipes.add(new ShapelessRecipe(id, VanillaRecipeCategoryUid.CRAFTING.getPath(), output, input));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ public static class BasicOptions {
static final String BASIC_OPTIONS = "basic options";
public ForgeConfigSpec.BooleanValue enableFishSpawning;
public ForgeConfigSpec.BooleanValue randomWeight;
public ForgeConfigSpec.BooleanValue compostableFish;
public ForgeConfigSpec.BooleanValue debugMode;

BasicOptions(ForgeConfigSpec.Builder builder) {
builder.push(BASIC_OPTIONS);
enableFishSpawning = builder.comment("Enable fish mob spawning? Weight & biomes can be modified in the Aquaculture fish loot table").define("Enable fish spawning?", true);
randomWeight = builder.define("Enable weight for fish? Useful for fishing competitions", false);
compostableFish = builder.define("Should fish be added as compostables for the composter/worm farm? (Based on fish, or weight if enabled)", true);
debugMode = builder.define("Enable debug mode? (Enables additional logging)", false);
builder.pop();
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/teammetallurgy/aquaculture/misc/FurnaceFuel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.teammetallurgy.aquaculture.misc;

import com.teammetallurgy.aquaculture.Aquaculture;
import com.teammetallurgy.aquaculture.init.AquaItems;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.furnace.FurnaceFuelBurnTimeEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

@Mod.EventBusSubscriber(modid = Aquaculture.MOD_ID)
public class FurnaceFuel {

@SubscribeEvent
public static void fuel(FurnaceFuelBurnTimeEvent event) {
ItemStack stack = event.getItemStack();
if (stack.getItem() == AquaItems.WOODEN_FILLET_KNIFE) {
event.setBurnTime(150);
} else if (stack.getItem() == AquaItems.DRIFTWOOD) {
event.setBurnTime(600);
}
}
}

0 comments on commit 6728f43

Please sign in to comment.