-
-
Notifications
You must be signed in to change notification settings - Fork 124
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add event support for GameTests and add an item capability test
- Loading branch information
1 parent
aede630
commit e59ffea
Showing
13 changed files
with
250 additions
and
3 deletions.
There are no files selected for viewing
13 changes: 13 additions & 0 deletions
13
Common/src/gametest/resources/data/crafttweaker/gametest/structures/chest_with_item.snbt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
DataVersion: 2975, | ||
size: [1, 2, 1], | ||
data: [ | ||
{pos: [0, 0, 0], state: "minecraft:polished_andesite"}, | ||
{pos: [0, 1, 0], state: "minecraft:chest{facing:east,type:single,waterlogged:false}", nbt: {Items: [{Count: 2b, Slot: 2b, id: "minecraft:diamond"}], id: "minecraft:chest"}} | ||
], | ||
entities: [], | ||
palette: [ | ||
"minecraft:polished_andesite", | ||
"minecraft:chest{facing:east,type:single,waterlogged:false}" | ||
] | ||
} |
File renamed without changes.
Binary file added
BIN
+243 Bytes
Common/src/gametest/resources/data/crafttweaker/structures/chest_with_item.nbt
Binary file not shown.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
...gametest/java/com/blamejared/crafttweaker/gametest/api/event/ActionRegisterTestEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package com.blamejared.crafttweaker.gametest.api.event; | ||
|
||
import com.blamejared.crafttweaker.api.action.base.IUndoableAction; | ||
import net.minecraftforge.common.MinecraftForge; | ||
import net.minecraftforge.eventbus.api.Event; | ||
import net.minecraftforge.eventbus.api.EventPriority; | ||
|
||
import java.util.function.Consumer; | ||
|
||
public class ActionRegisterTestEvent<T extends Event> implements IUndoableAction { | ||
|
||
private final Class<T> typeOfT; | ||
private final Consumer<T> consumer; | ||
private final EventPriority priority; | ||
|
||
public ActionRegisterTestEvent(Class<T> typeOfT, Consumer<T> consumer, EventPriority priority) { | ||
|
||
this.typeOfT = typeOfT; | ||
this.consumer = new TestEventHandlerWrapper<>(consumer); | ||
this.priority = priority; | ||
} | ||
|
||
@Override | ||
public void apply() { | ||
|
||
MinecraftForge.EVENT_BUS.addListener(priority, false, typeOfT, consumer); | ||
} | ||
|
||
@Override | ||
public String describe() { | ||
|
||
return "Registering test event listener for " + typeOfT.getSimpleName() + "."; | ||
} | ||
|
||
@Override | ||
public void undo() { | ||
|
||
} | ||
|
||
@Override | ||
public String describeUndo() { | ||
|
||
return "null"; | ||
} | ||
|
||
} |
29 changes: 29 additions & 0 deletions
29
.../src/gametest/java/com/blamejared/crafttweaker/gametest/api/event/CTTestEventManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package com.blamejared.crafttweaker.gametest.api.event; | ||
|
||
import com.blamejared.crafttweaker.api.CraftTweakerAPI; | ||
import com.blamejared.crafttweaker.api.action.event.ActionRegisterEvent; | ||
import com.blamejared.crafttweaker.api.annotation.ZenRegister; | ||
import net.minecraftforge.eventbus.api.Event; | ||
import net.minecraftforge.eventbus.api.EventPriority; | ||
import org.openzen.zencode.java.ZenCodeType; | ||
|
||
import java.util.function.Consumer; | ||
|
||
@ZenRegister | ||
@ZenCodeType.Name("crafttweaker.api.events.CTTestEventManager") | ||
public class CTTestEventManager { | ||
|
||
@ZenCodeType.Method | ||
public static <T extends Event> void register(Class<T> typeOfT, Consumer<T> consumer) { | ||
|
||
register(typeOfT, EventPriority.NORMAL, consumer); | ||
} | ||
|
||
@ZenCodeType.Method | ||
public static <T extends Event> void register(Class<T> typeOfT, EventPriority priority, Consumer<T> consumer) { | ||
|
||
CraftTweakerAPI.apply(new ActionRegisterTestEvent<>(typeOfT, consumer, priority)); | ||
} | ||
|
||
|
||
} |
62 changes: 62 additions & 0 deletions
62
Forge/src/gametest/java/com/blamejared/crafttweaker/gametest/api/event/TestEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
package com.blamejared.crafttweaker.gametest.api.event; | ||
|
||
import com.blamejared.crafttweaker.api.annotation.ZenRegister; | ||
import net.minecraft.core.BlockPos; | ||
import net.minecraft.world.entity.player.Player; | ||
import net.minecraft.world.level.Level; | ||
import net.minecraftforge.eventbus.api.Event; | ||
import org.openzen.zencode.java.ZenCodeType; | ||
|
||
@ZenRegister | ||
@ZenCodeType.Name("test.api.TestEvent") | ||
public class TestEvent extends Event { | ||
|
||
private final String testName; | ||
private final Level level; | ||
private final BlockPos pos; | ||
private final Player player; | ||
|
||
public TestEvent(String testName, Level level, BlockPos pos, Player player) { | ||
|
||
this.testName = testName; | ||
this.level = level; | ||
this.pos = pos; | ||
this.player = player; | ||
} | ||
|
||
@ZenCodeType.Method | ||
@ZenCodeType.Getter("testName") | ||
public String testName() { | ||
|
||
return testName; | ||
} | ||
|
||
@ZenCodeType.Method | ||
@ZenCodeType.Getter("level") | ||
public Level level() { | ||
|
||
return level; | ||
} | ||
|
||
@ZenCodeType.Method | ||
@ZenCodeType.Getter("pos") | ||
public BlockPos pos() { | ||
|
||
return pos; | ||
} | ||
|
||
@ZenCodeType.Method | ||
@ZenCodeType.Getter("innerPos") | ||
public BlockPos innerPos() { | ||
|
||
return pos().above(2); | ||
} | ||
|
||
@ZenCodeType.Method | ||
@ZenCodeType.Getter("player") | ||
public Player player() { | ||
|
||
return player; | ||
} | ||
|
||
} |
29 changes: 29 additions & 0 deletions
29
...gametest/java/com/blamejared/crafttweaker/gametest/api/event/TestEventHandlerWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package com.blamejared.crafttweaker.gametest.api.event; | ||
|
||
import com.blamejared.crafttweaker.api.CraftTweakerAPI; | ||
import net.minecraftforge.common.MinecraftForge; | ||
import net.minecraftforge.eventbus.api.Event; | ||
|
||
import java.util.function.Consumer; | ||
|
||
public class TestEventHandlerWrapper<T extends Event> implements Consumer<T> { | ||
|
||
public TestEventHandlerWrapper(Consumer<T> consumer) { | ||
|
||
this.consumer = consumer; | ||
} | ||
|
||
private final Consumer<T> consumer; | ||
|
||
@Override | ||
public void accept(T t) { | ||
|
||
try { | ||
consumer.accept(t); | ||
} catch(Throwable throwable) { | ||
CraftTweakerAPI.LOGGER.error("Error occurred in event handler", throwable); | ||
} | ||
MinecraftForge.EVENT_BUS.unregister(this); | ||
} | ||
|
||
} |
36 changes: 36 additions & 0 deletions
36
...t/java/com/blamejared/crafttweaker/gametest/test/forge/capability/ItemCapabilityTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package com.blamejared.crafttweaker.gametest.test.forge.capability; | ||
|
||
import com.blamejared.crafttweaker.gametest.CraftTweakerGameTest; | ||
import com.blamejared.crafttweaker.gametest.api.event.TestEvent; | ||
import com.blamejared.crafttweaker.gametest.framework.ScriptBuilder; | ||
import com.blamejared.crafttweaker.gametest.framework.annotation.CraftTweakerGameTestHolder; | ||
import com.blamejared.crafttweaker.gametest.framework.annotation.TestModifier; | ||
import com.blamejared.crafttweaker.gametest.logger.appender.GameTestLoggerAppender; | ||
import com.blamejared.crafttweaker.impl.script.scriptrun.GameTestScriptRunner; | ||
import com.blamejared.crafttweaker.platform.Services; | ||
import net.minecraft.core.BlockPos; | ||
import net.minecraft.gametest.framework.GameTest; | ||
import net.minecraft.gametest.framework.GameTestHelper; | ||
import net.minecraft.world.item.ItemStack; | ||
import net.minecraft.world.item.Items; | ||
import net.minecraftforge.common.MinecraftForge; | ||
|
||
@CraftTweakerGameTestHolder | ||
public class ItemCapabilityTest implements CraftTweakerGameTest { | ||
|
||
@GameTest(template = "crafttweaker:chest_with_item") | ||
@TestModifier(implicitSuccession = true) | ||
public void testItemHandler(GameTestHelper helper, ScriptBuilder builder) { | ||
|
||
builder.file("capability/item_handler_test.zs"); | ||
|
||
GameTestLoggerAppender.QueryableLog log = GameTestScriptRunner.runScripts(helper, builder); | ||
log.assertNoErrors(); | ||
log.assertNoWarnings(); | ||
|
||
MinecraftForge.EVENT_BUS.post(new TestEvent("testItemHandler", helper.getLevel(), helper.absolutePos(BlockPos.ZERO), helper.makeMockPlayer())); | ||
log.assertOutput(3, Services.PLATFORM.createMCItemStack(new ItemStack(Items.DIAMOND, 2)).getCommandString()); | ||
log.assertOutput(4, Services.PLATFORM.createMCItemStack(new ItemStack(Items.DIRT)).getCommandString()); | ||
} | ||
|
||
} |
27 changes: 27 additions & 0 deletions
27
...src/gametest/resources/data/crafttweaker/gametest/scripts/capability/item_handler_test.zs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import crafttweaker.api.events.CTTestEventManager; | ||
import test.api.TestEvent; | ||
import crafttweaker.api.capability.IItemHandler; | ||
import crafttweaker.api.capability.Capabilities; | ||
|
||
println("running"); | ||
CTTestEventManager.register<TestEvent>((event) => { | ||
|
||
var player = event.player; | ||
var pos = event.innerPos; | ||
var level = event.level; | ||
|
||
if level.isClientSide { return; } | ||
|
||
var blockEntity = level.getBlockEntity(pos); | ||
|
||
if blockEntity != null { | ||
|
||
var itemHandler = blockEntity.getCapability<IItemHandler>(Capabilities.ITEM); | ||
if itemHandler != null { | ||
println(itemHandler.getStackInSlot(2).commandString); | ||
itemHandler.insertItem(1, <item:minecraft:dirt>, false); | ||
println(itemHandler.getStackInSlot(1).commandString); | ||
} | ||
} | ||
|
||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters