This commit is contained in:
modmuss50 2019-09-12 16:55:41 +01:00
parent 1cc56ed2e3
commit 8c9c736da9
13 changed files with 170 additions and 169 deletions

View file

@ -69,12 +69,12 @@ license {
group = 'TechReborn' group = 'TechReborn'
dependencies { dependencies {
minecraft "com.mojang:minecraft:19w34a" minecraft "com.mojang:minecraft:19w37a"
mappings "net.fabricmc:yarn:19w34a+build.12" mappings "net.fabricmc:yarn:19w37a+build.9"
modCompile "net.fabricmc:fabric-loader:0.6.0+build.163" modCompile "net.fabricmc:fabric-loader:0.6.0+build.163"
//Fabric api //Fabric api
modCompile "net.fabricmc.fabric-api:fabric-api:0.3.2+build.212-1.15" modCompile "net.fabricmc.fabric-api:fabric-api:0.3.2+build.227-1.15"
modCompile "io.github.prospector:modmenu:1.7.9-unstable.19w34a+build.1" modCompile "io.github.prospector:modmenu:1.7.9-unstable.19w34a+build.1"
modCompile "io.github.prospector.silk:SilkAPI:1.2.4-43" modCompile "io.github.prospector.silk:SilkAPI:1.2.4-43"
@ -93,7 +93,7 @@ dependencies {
compile 'org.checkerframework:checker-qual:2.10.0' compile 'org.checkerframework:checker-qual:2.10.0'
compileOnly "com.google.code.findbugs:jsr305:+" compileOnly "com.google.code.findbugs:jsr305:+"
modCompile ('com.github.Virtuoel:Towelette:519538e54b') { modCompileOnly ('com.github.Virtuoel:Towelette:519538e54b') {
transitive = false transitive = false
} }
} }

View file

@ -83,7 +83,7 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I
return; return;
} }
if (world.getTime() % 20 == 0) { if (world.getTime() % 20 == 0) {
canSeeSky = world.method_8626(pos.up()); canSeeSky = world.isSkyVisible(pos.up());
if (lastState != isSunOut()) { if (lastState != isSunOut()) {
world.setBlockState(pos, world.getBlockState(pos).with(BlockMachineBase.ACTIVE, isSunOut())); world.setBlockState(pos, world.getBlockState(pos).with(BlockMachineBase.ACTIVE, isSunOut()));
lastState = isSunOut(); lastState = isSunOut();

View file

@ -69,8 +69,8 @@ public class VacuumFreezerBlockEntity extends GenericMachineBlockEntity implemen
// BlockEntity // BlockEntity
@Override @Override
public void validate() { public void cancelRemoval() {
super.validate(); super.cancelRemoval();
multiblockChecker = new MultiblockChecker(world, pos.down()); multiblockChecker = new MultiblockChecker(world, pos.down());
} }

View file

@ -29,6 +29,7 @@ import net.minecraft.block.*;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundCategory;
import net.minecraft.state.StateFactory; import net.minecraft.state.StateFactory;
@ -82,12 +83,12 @@ public class BlockRubberLog extends LogBlock {
public void onBreak(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { public void onBreak(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) {
int i = 4; int i = 4;
int j = i + 1; int j = i + 1;
if (worldIn.isAreaLoaded(pos.add(-j, -j, -j), pos.add(j, j, j))) { if (worldIn instanceof ServerWorld && worldIn.isRegionLoaded(pos.add(-j, -j, -j), pos.add(j, j, j))) {
for (BlockPos blockpos : BlockPos.iterate(pos.add(-i, -i, -i), pos.add(i, i, i))) { for (BlockPos blockpos : BlockPos.iterate(pos.add(-i, -i, -i), pos.add(i, i, i))) {
BlockState state1 = worldIn.getBlockState(blockpos); BlockState state1 = worldIn.getBlockState(blockpos);
if (state1.matches(BlockTags.LEAVES)) { if (state1.matches(BlockTags.LEAVES)) {
state1.scheduledTick(worldIn, blockpos, worldIn.getRandom()); state1.scheduledTick((ServerWorld) worldIn, blockpos, worldIn.getRandom());
state1.onRandomTick(worldIn, blockpos, worldIn.getRandom()); state1.onRandomTick((ServerWorld) worldIn, blockpos, worldIn.getRandom());
} }
} }
} }
@ -95,7 +96,7 @@ public class BlockRubberLog extends LogBlock {
} }
@Override @Override
public void onScheduledTick(BlockState state, World worldIn, BlockPos pos, Random random) { public void onScheduledTick(BlockState state, ServerWorld worldIn, BlockPos pos, Random random) {
super.onScheduledTick(state, worldIn, pos, random); super.onScheduledTick(state, worldIn, pos, random);
if (state.get(AXIS) != Direction.Axis.Y) { if (state.get(AXIS) != Direction.Axis.Y) {
return; return;

View file

@ -46,7 +46,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.world.ExtendedBlockView; import net.minecraft.world.BlockRenderView;
import reborncore.common.fluid.container.ItemFluidInfo; import reborncore.common.fluid.container.ItemFluidInfo;
import reborncore.common.util.Color; import reborncore.common.util.Color;
import techreborn.TechReborn; import techreborn.TechReborn;
@ -70,7 +70,7 @@ public class DynamicBucketBakedModel implements BakedModel, FabricBakedModel {
} }
@Override @Override
public void emitBlockQuads(ExtendedBlockView blockView, BlockState state, BlockPos pos, Supplier<Random> randomSupplier, RenderContext context) { public void emitBlockQuads(BlockRenderView blockView, BlockState state, BlockPos pos, Supplier<Random> randomSupplier, RenderContext context) {
} }

View file

@ -46,7 +46,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.world.ExtendedBlockView; import net.minecraft.world.BlockRenderView;
import reborncore.common.fluid.container.ItemFluidInfo; import reborncore.common.fluid.container.ItemFluidInfo;
import reborncore.common.util.Color; import reborncore.common.util.Color;
import techreborn.TechReborn; import techreborn.TechReborn;
@ -65,7 +65,7 @@ public class DynamicCellBakedModel implements BakedModel, FabricBakedModel {
private static final ModelIdentifier CELL_GLASS = new ModelIdentifier(new Identifier(TechReborn.MOD_ID, "cell_glass"), "inventory"); private static final ModelIdentifier CELL_GLASS = new ModelIdentifier(new Identifier(TechReborn.MOD_ID, "cell_glass"), "inventory");
@Override @Override
public void emitBlockQuads(ExtendedBlockView blockView, BlockState state, BlockPos pos, Supplier<Random> randomSupplier, RenderContext context) { public void emitBlockQuads(BlockRenderView blockRenderView, BlockState blockState, BlockPos blockPos, Supplier<Random> supplier, RenderContext renderContext) {
} }

View file

@ -109,7 +109,7 @@ public class ItemFrequencyTransmitter extends Item {
} }
} }
return new TypedActionResult<>(ActionResult.SUCCESS, stack); return new TypedActionResult<>(ActionResult.SUCCESS, stack, true);
} }
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)

View file

@ -49,7 +49,7 @@ public class ItemManual extends Item {
if(world.isClient){ if(world.isClient){
openGui(player); openGui(player);
} }
return new TypedActionResult<>(ActionResult.SUCCESS, player.getStackInHand(hand)); return new TypedActionResult<>(ActionResult.SUCCESS, player.getStackInHand(hand), true);
} }
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)

View file

@ -54,6 +54,6 @@ public class ItemScrapBox extends Item {
WorldUtils.dropItem(out, world, player.getBlockPos()); WorldUtils.dropItem(out, world, player.getBlockPos());
stack.decrement(1); stack.decrement(1);
} }
return new TypedActionResult<>(ActionResult.SUCCESS, stack); return new TypedActionResult<>(ActionResult.SUCCESS, stack, true);
} }
} }

View file

@ -141,9 +141,9 @@ public class ItemIndustrialChainsaw extends ItemChainsaw {
} }
} }
} }
return new TypedActionResult<>(ActionResult.SUCCESS, stack); return new TypedActionResult<>(ActionResult.SUCCESS, stack, true);
} }
return new TypedActionResult<>(ActionResult.PASS, stack); return new TypedActionResult<>(ActionResult.PASS, stack, true);
} }
@Override @Override

View file

@ -200,9 +200,9 @@ public class ItemIndustrialDrill extends ItemDrill {
} }
} }
} }
return new TypedActionResult<>(ActionResult.SUCCESS, stack); return new TypedActionResult<>(ActionResult.SUCCESS, stack, true);
} }
return new TypedActionResult<>(ActionResult.PASS, stack); return new TypedActionResult<>(ActionResult.PASS, stack, true);
} }
@Override @Override

View file

@ -138,9 +138,9 @@ public class ItemNanosaber extends SwordItem implements IEnergyItemInfo, ItemDur
} }
} }
} }
return new TypedActionResult<>(ActionResult.SUCCESS, stack); return new TypedActionResult<>(ActionResult.SUCCESS, stack, true);
} }
return new TypedActionResult<>(ActionResult.PASS, stack); return new TypedActionResult<>(ActionResult.PASS, stack, true);
} }
@Override @Override

View file

@ -1,145 +1,145 @@
/* /*
* This file is part of TechReborn, licensed under the MIT License (MIT). * This file is part of TechReborn, licensed under the MIT License (MIT).
* *
* Copyright (c) 2018 TechReborn * Copyright (c) 2018 TechReborn
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal * of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights * in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is * copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions: * furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be included in all * The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software. * copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE. * SOFTWARE.
*/ */
package techreborn.world; package techreborn.world;
import java.util.Random; import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import com.mojang.datafixers.Dynamic; import com.mojang.datafixers.Dynamic;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockBox;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MutableIntBoundingBox; import net.minecraft.util.math.Direction;
import net.minecraft.world.ModifiableTestableWorld; import net.minecraft.world.ModifiableTestableWorld;
import net.minecraft.world.gen.feature.AbstractTreeFeature; import net.minecraft.world.gen.feature.AbstractTreeFeature;
import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import techreborn.blocks.misc.BlockRubberLog; import techreborn.blocks.misc.BlockRubberLog;
import techreborn.init.TRContent; import techreborn.init.TRContent;
/** /**
* @author drcrazy * @author drcrazy
* *
*/ */
public class RubberTreeFeature extends AbstractTreeFeature<DefaultFeatureConfig> { public class RubberTreeFeature extends AbstractTreeFeature<DefaultFeatureConfig> {
// TODO: Configs // TODO: Configs
private int treeBaseHeight = 5; private int treeBaseHeight = 5;
private int sapRarity = 10; private int sapRarity = 10;
private int spireHeight = 4; private int spireHeight = 4;
public RubberTreeFeature(Function<Dynamic<?>, ? extends DefaultFeatureConfig> featureConfig, boolean notify) { public RubberTreeFeature(Function<Dynamic<?>, ? extends DefaultFeatureConfig> featureConfig, boolean notify) {
super(featureConfig, notify); super(featureConfig, notify);
} }
@Override @Override
protected boolean generate(Set<BlockPos> changedBlocks, ModifiableTestableWorld worldIn, Random rand, protected boolean generate(Set<BlockPos> changedBlocks, ModifiableTestableWorld worldIn, Random rand,
BlockPos saplingPos, MutableIntBoundingBox mutableBoundingBox) { BlockPos saplingPos, BlockBox mutableBoundingBox) {
int treeHeight = rand.nextInt(5) + treeBaseHeight; int treeHeight = rand.nextInt(5) + treeBaseHeight;
int baseY = saplingPos.getY(); int baseY = saplingPos.getY();
int baseX = saplingPos.getX(); int baseX = saplingPos.getX();
int baseZ = saplingPos.getZ(); int baseZ = saplingPos.getZ();
if (baseY <= 1 && baseY + treeHeight + spireHeight + 1 >= 256) { if (baseY <= 1 && baseY + treeHeight + spireHeight + 1 >= 256) {
return false; return false;
} }
if (!isDirtOrGrass(worldIn, saplingPos.down())) { if (!isDirtOrGrass(worldIn, saplingPos.down())) {
return false; return false;
} }
int yOffset; int yOffset;
int xOffset; int xOffset;
int zOffset; int zOffset;
for (yOffset = baseY; yOffset <= baseY + 1 + treeHeight; ++yOffset) { for (yOffset = baseY; yOffset <= baseY + 1 + treeHeight; ++yOffset) {
byte radius = 1; byte radius = 1;
if (yOffset == baseY) { if (yOffset == baseY) {
radius = 0; radius = 0;
} }
if (yOffset >= baseY + 1 + treeHeight - 2) { if (yOffset >= baseY + 1 + treeHeight - 2) {
radius = 2; radius = 2;
} }
BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable();
for (xOffset = baseX - radius; xOffset <= baseX + radius; ++xOffset) { for (xOffset = baseX - radius; xOffset <= baseX + radius; ++xOffset) {
for (zOffset = baseZ - radius; zOffset <= baseZ + radius; ++zOffset) { for (zOffset = baseZ - radius; zOffset <= baseZ + radius; ++zOffset) {
if (!isAirOrLeaves(worldIn, blockpos$mutable.set(xOffset, yOffset, zOffset))) { if (!isAirOrLeaves(worldIn, blockpos$mutable.set(xOffset, yOffset, zOffset))) {
return false; return false;
} }
} }
} }
} }
// Ok, we are cleared for take off! // Ok, we are cleared for take off!
this.setToDirt(worldIn, saplingPos.down()); this.setToDirt(worldIn, saplingPos.down());
// Leaves // Leaves
BlockState leafState = TRContent.RUBBER_LEAVES.getDefaultState(); BlockState leafState = TRContent.RUBBER_LEAVES.getDefaultState();
for (yOffset = baseY - 3 + treeHeight; yOffset <= baseY + treeHeight; ++yOffset) { for (yOffset = baseY - 3 + treeHeight; yOffset <= baseY + treeHeight; ++yOffset) {
int var12 = yOffset - (baseY + treeHeight), center = 1 - var12 / 2; int var12 = yOffset - (baseY + treeHeight), center = 1 - var12 / 2;
for (xOffset = baseX - center; xOffset <= baseX + center; ++xOffset) { for (xOffset = baseX - center; xOffset <= baseX + center; ++xOffset) {
int xPos = xOffset - baseX, t = xPos >> 15; int xPos = xOffset - baseX, t = xPos >> 15;
xPos = (xPos + t) ^ t; xPos = (xPos + t) ^ t;
for (zOffset = baseZ - center; zOffset <= baseZ + center; ++zOffset) { for (zOffset = baseZ - center; zOffset <= baseZ + center; ++zOffset) {
int zPos = zOffset - baseZ; int zPos = zOffset - baseZ;
zPos = (zPos + (t = zPos >> 31)) ^ t; zPos = (zPos + (t = zPos >> 31)) ^ t;
if ((xPos != center | zPos != center) || rand.nextInt(2) != 0 && var12 != 0) { if ((xPos != center | zPos != center) || rand.nextInt(2) != 0 && var12 != 0) {
BlockPos leafPos = new BlockPos(xOffset, yOffset, zOffset); BlockPos leafPos = new BlockPos(xOffset, yOffset, zOffset);
if (isAirOrLeaves(worldIn, leafPos) || isReplaceablePlant(worldIn, leafPos)) { if (isAirOrLeaves(worldIn, leafPos) || isReplaceablePlant(worldIn, leafPos)) {
this.setBlockState(changedBlocks, worldIn, leafPos, leafState, mutableBoundingBox); this.setBlockState(changedBlocks, worldIn, leafPos, leafState, mutableBoundingBox);
} }
} }
} }
} }
} }
// Trunk // Trunk
BlockPos currentLogPos = null; BlockPos currentLogPos = null;
BlockState logState = TRContent.RUBBER_LOG.getDefaultState(); BlockState logState = TRContent.RUBBER_LOG.getDefaultState();
for (yOffset = 0; yOffset < treeHeight; ++yOffset) { for (yOffset = 0; yOffset < treeHeight; ++yOffset) {
currentLogPos = saplingPos.up(yOffset); currentLogPos = saplingPos.up(yOffset);
if (!isAirOrLeaves(worldIn, currentLogPos)) { if (!isAirOrLeaves(worldIn, currentLogPos)) {
continue; continue;
} }
if (rand.nextInt(sapRarity) == 0) { if (rand.nextInt(sapRarity) == 0) {
logState = logState.with(BlockRubberLog.HAS_SAP, true).with(BlockRubberLog.SAP_SIDE, logState = logState.with(BlockRubberLog.HAS_SAP, true).with(BlockRubberLog.SAP_SIDE,
Direction.fromHorizontal(rand.nextInt(4))); Direction.fromHorizontal(rand.nextInt(4)));
} }
this.setBlockState(changedBlocks, worldIn, currentLogPos, logState, mutableBoundingBox); this.setBlockState(changedBlocks, worldIn, currentLogPos, logState, mutableBoundingBox);
} }
// Spire // Spire
if (currentLogPos != null) { if (currentLogPos != null) {
for (int i = 0; i < spireHeight; i++) { for (int i = 0; i < spireHeight; i++) {
BlockPos blockpos = currentLogPos.up(i); BlockPos blockpos = currentLogPos.up(i);
this.setBlockState(changedBlocks, worldIn, blockpos, leafState, mutableBoundingBox); this.setBlockState(changedBlocks, worldIn, blockpos, leafState, mutableBoundingBox);
} }
} }
return true; return true;
} }
} }