# [Java (OpenJDK 9)], 141 bytes
<!-- language-all: lang-java -->
n->{int s=1,S=(int)Math.pow(3,n),H[][]=new int[S][S],x,y;for(;n-->0;s*=3)for(x=S;x-->0;)for(y=S;y-->0;)H[x][y]|=~(x/s%3)&(y/s%3)&1;return H;}
[Try it online!][TIO-jek2dnwd]
[Java (OpenJDK 9)]: http://openjdk.java.net/projects/jdk9/
[TIO-jek2dnwd]: https://tio.run/##pVCxboMwFNzzFU@VUtkJ0FC6NI4zVnTIxIgYXAKJU2IQNgk0pb9ObUiTql0qVbL1fPfu6d15xw7MzotE7Navjx3fF3mpYKdJp1I8c9JKxIrnwpmQUZwxKWHFuIDTCOBZqKdzd8GFCqMwWkIKtBP28qQJkNS1Aor0E6@Y2jpFfkSeJbDlGy0VyRHMXBDpY9VWQ9K8RETY9nJG5IR62OCaBqTuqR42GjYD9MM6CpvonX6g@k6OPXyLmqG6pExUVQrwSdsRbbWoXjIeg1RM6XLI@Rr2JgYKVMnFJoyAlRuJ@1gAZk/vn78l1CV9hQUFb3hOp19CgHNu8IGCyWM@B2EndVhRZA0yckzO2kKvUsi/4KCRKtk7eaWcvpXpyf/12tFwv@cctl58/sioqe38yl6z13PYXtnfS1N0M45vLECuXePJw2zq3V8Mtn802naf "Java (OpenJDK 9) – Try It Online"
Returns an `int[][]` with `0` for `H` and `1` for `space`. This actually "carves" a wall of `H`'s instead of "piling" `H`'s.